Browse Source

数据中心添加业务数据

v1.0
Yen 2 years ago
parent
commit
4aae1adf62
  1. 3
      src/main/java/com/qs/serve/modules/exl/common/ExlConst.java
  2. 30
      src/main/java/com/qs/serve/modules/exl/common/TableCreateSqlUtil.java
  3. 47
      src/main/java/com/qs/serve/modules/exl/controller/ExlTableConfController.java
  4. 70
      src/main/java/com/qs/serve/modules/exl/controller/ExlTableDataController.java
  5. 3
      src/main/java/com/qs/serve/modules/exl/entity/ExlColumnConf.java
  6. 15
      src/main/java/com/qs/serve/modules/exl/entity/dto/ExlConditionDto.java
  7. 9
      src/main/java/com/qs/serve/modules/goods/controller/api/GoodsSpuApi.java
  8. 3
      src/main/java/com/qs/serve/modules/goods/entity/GoodsSpu.java
  9. 2
      src/main/java/com/qs/serve/modules/oms/controller/api/OmsOrderApi.java
  10. 4
      src/main/java/com/qs/serve/modules/third/PortalOfCostController.java
  11. 9
      src/main/resources/mapper/exl/ExlTableConfMapper.xml

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

@ -15,6 +15,9 @@ public interface ExlConst {
String TYPE_MONEY = "money"; String TYPE_MONEY = "money";
String TYPE_STRING = "string"; String TYPE_STRING = "string";
/** 业务类型 */
String TYPE_CUSTOMER_CODE = "customerCode";
String TYPE_USER_CODE = "userCode";
String TABLE_CONFIG_PARAM = "tb_config_cnf_id"; String TABLE_CONFIG_PARAM = "tb_config_cnf_id";

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

@ -8,6 +8,8 @@ import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import static com.qs.serve.modules.exl.common.ExlConst.*;
/** /**
* @author YenHex * @author YenHex
* @since 2023/8/14 * @since 2023/8/14
@ -15,12 +17,22 @@ import java.util.Map;
public class TableCreateSqlUtil { public class TableCreateSqlUtil {
public static final Map<String,String> MYSQL_DATA_MAP = new HashMap<>(); public static final Map<String,String> MYSQL_DATA_MAP = new HashMap<>();
/**
* 业务的默认数据类型
*/
public static final String DEFAULT_STRING = "string";
static { static {
//数据类型
MYSQL_DATA_MAP.put("int","bigint"); MYSQL_DATA_MAP.put("int","bigint");
MYSQL_DATA_MAP.put("string","varchar(300)"); MYSQL_DATA_MAP.put("string","varchar(300)");
MYSQL_DATA_MAP.put("date","date"); MYSQL_DATA_MAP.put("date","date");
MYSQL_DATA_MAP.put("money","decimal(11, 2)"); MYSQL_DATA_MAP.put("money","decimal(11, 2)");
MYSQL_DATA_MAP.put("datetime","datetime"); MYSQL_DATA_MAP.put("datetime","datetime");
//业务类型
MYSQL_DATA_MAP.put(TYPE_CUSTOMER_CODE,"varchar(50)");
MYSQL_DATA_MAP.put(TYPE_USER_CODE,"varchar(50)");
} }
public static final String COLUMN_NULL = " null "; public static final String COLUMN_NULL = " null ";
@ -31,13 +43,29 @@ public class TableCreateSqlUtil {
StringBuffer result = new StringBuffer("CREATE TABLE `"+tableName+"` ("); StringBuffer result = new StringBuffer("CREATE TABLE `"+tableName+"` (");
result.append(" `union_row_id` varchar(255) NOT NULL COMMENT 'union_row_id',"); result.append(" `union_row_id` varchar(255) NOT NULL COMMENT 'union_row_id',");
for (ExlColumnConf column : columnList) { for (ExlColumnConf column : columnList) {
String columnType = MYSQL_DATA_MAP.get(column.getColumnType())==null?column.getColumnType():MYSQL_DATA_MAP.get(column.getColumnType()); String typeParam = column.getColumnType();
String columnType = MYSQL_DATA_MAP.get(typeParam)==null?column.getColumnType():MYSQL_DATA_MAP.get(typeParam);
String nullValue = column.getNotNullFlag().equals(1) ? COLUMN_NOT_NULL:COLUMN_NULL; String nullValue = column.getNotNullFlag().equals(1) ? COLUMN_NOT_NULL:COLUMN_NULL;
result.append("`"+column.getColumnName()+"` "+ result.append("`"+column.getColumnName()+"` "+
columnType + columnType +
nullValue + nullValue +
COLUMN_COMMENT + " '"+ COLUMN_COMMENT + " '"+
column.getColumnHeader()+"',"); column.getColumnHeader()+"',");
//以下,拓展业务类型数据库列
if(typeParam.equals(TYPE_CUSTOMER_CODE)){
result.append("`"+column.getColumnName()+"_ext_cus_name` "+
columnType +
COLUMN_NULL +
COLUMN_COMMENT + " '"+
column.getColumnHeader().replace("编码","")+"名称',");
}
if(typeParam.equals(TYPE_USER_CODE)){
result.append("`"+column.getColumnName()+"_ext_usr_name` "+
columnType +
COLUMN_NULL +
COLUMN_COMMENT + " '"+
column.getColumnHeader().replace("编码","")+"名称',");
}
} }
result.append(" PRIMARY KEY (`union_row_id`) USING BTREE "); result.append(" PRIMARY KEY (`union_row_id`) USING BTREE ");
return result.append(") COMMENT = '"+tableRemark+"' ").toString(); return result.append(") COMMENT = '"+tableRemark+"' ").toString();

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

@ -93,23 +93,54 @@ public class ExlTableConfController {
&&!a.getColumnType().equals(ExlConst.TYPE_MONEY)).collect(Collectors.toList()); &&!a.getColumnType().equals(ExlConst.TYPE_MONEY)).collect(Collectors.toList());
List<ExlQueryFieldDto> queryFieldList = new ArrayList<>(); List<ExlQueryFieldDto> queryFieldList = new ArrayList<>();
for (ExlColumnConf columnConf : queryColumn) { for (ExlColumnConf columnConf : queryColumn) {
if(columnConf.getColumnType().contains(ExlConst.DATE_TYPE)){ String columnType = columnConf.getColumnType();
if(columnType.contains(ExlConst.DATE_TYPE)){
ExlQueryFieldDto startDto = new ExlQueryFieldDto(); ExlQueryFieldDto startDto = new ExlQueryFieldDto();
startDto.setField(ExlConst.PRE_COLUMN_START + columnConf.getColumnName()); startDto.setField(ExlConst.PRE_COLUMN_START + columnConf.getColumnName());
startDto.setType(columnConf.getColumnType()); startDto.setType(columnType);
startDto.setLabel(columnConf.getColumnHeader()+ExlConst.PRE_COLUMN_START_LABEL); startDto.setLabel(columnConf.getColumnHeader()+ExlConst.PRE_COLUMN_START_LABEL);
queryFieldList.add(startDto); queryFieldList.add(startDto);
ExlQueryFieldDto fieldDto = new ExlQueryFieldDto(); ExlQueryFieldDto fieldDto = new ExlQueryFieldDto();
fieldDto.setField(ExlConst.PRE_COLUMN_END + columnConf.getColumnName()); fieldDto.setField(ExlConst.PRE_COLUMN_END + columnConf.getColumnName());
fieldDto.setType(columnConf.getColumnType()); fieldDto.setType(columnType);
fieldDto.setLabel(columnConf.getColumnHeader()+ExlConst.PRE_COLUMN_END_LABEL); fieldDto.setLabel(columnConf.getColumnHeader()+ExlConst.PRE_COLUMN_END_LABEL);
queryFieldList.add(fieldDto); queryFieldList.add(fieldDto);
}else { }else {
ExlQueryFieldDto fieldDto = new ExlQueryFieldDto(); if(columnType.equals(ExlConst.TYPE_CUSTOMER_CODE)){
fieldDto.setField(columnConf.getColumnName()); //业务类型-客户
fieldDto.setType(columnConf.getColumnType()); ExlQueryFieldDto fieldDto = new ExlQueryFieldDto();
fieldDto.setLabel(columnConf.getColumnHeader()); fieldDto.setField(columnConf.getColumnName());
queryFieldList.add(fieldDto); fieldDto.setType(TableCreateSqlUtil.DEFAULT_STRING);
fieldDto.setLabel(columnConf.getColumnHeader());
queryFieldList.add(fieldDto);
//拓展名称
ExlQueryFieldDto fieldDtoName = new ExlQueryFieldDto();
fieldDtoName.setField(columnConf.getColumnName()+"_ext_cus_name");
fieldDtoName.setType(TableCreateSqlUtil.DEFAULT_STRING);
fieldDtoName.setLabel(columnConf.getColumnHeader());
queryFieldList.add(fieldDtoName);
}else if(columnType.equals(ExlConst.TYPE_USER_CODE)){
//业务类型-用户
ExlQueryFieldDto fieldDto = new ExlQueryFieldDto();
fieldDto.setField(columnConf.getColumnName());
fieldDto.setType(TableCreateSqlUtil.DEFAULT_STRING);
fieldDto.setLabel(columnConf.getColumnHeader());
queryFieldList.add(fieldDto);
//拓展名称
ExlQueryFieldDto fieldDtoName = new ExlQueryFieldDto();
fieldDtoName.setField(columnConf.getColumnName()+"_ext_usr_name");
fieldDtoName.setType(TableCreateSqlUtil.DEFAULT_STRING);
fieldDtoName.setLabel(columnConf.getColumnHeader());
queryFieldList.add(fieldDtoName);
}else {
//非业务类型
ExlQueryFieldDto fieldDto = new ExlQueryFieldDto();
fieldDto.setField(columnConf.getColumnName());
fieldDto.setType(columnConf.getColumnType());
fieldDto.setLabel(columnConf.getColumnHeader());
queryFieldList.add(fieldDto);
}
} }
} }
exlTableConf.setQueryList(queryFieldList); exlTableConf.setQueryList(queryFieldList);

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

@ -7,10 +7,7 @@ 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.IdUtil; import com.qs.serve.common.util.*;
import com.qs.serve.common.util.JsonUtil;
import com.qs.serve.common.util.PageUtil;
import com.qs.serve.common.util.StringUtils;
import com.qs.serve.modules.exl.common.ExlConst; import com.qs.serve.modules.exl.common.ExlConst;
import com.qs.serve.modules.exl.common.QsSqlSessionUtil; import com.qs.serve.modules.exl.common.QsSqlSessionUtil;
import com.qs.serve.modules.exl.common.TableCreateSqlUtil; import com.qs.serve.modules.exl.common.TableCreateSqlUtil;
@ -23,6 +20,11 @@ import com.qs.serve.modules.exl.entity.dto.ExlTableBo;
import com.qs.serve.modules.exl.mapper.ExlTableConfMapper; import com.qs.serve.modules.exl.mapper.ExlTableConfMapper;
import com.qs.serve.modules.exl.service.ExlColumnConfService; 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 com.qs.serve.modules.his.entity.HisUserSupplier;
import com.qs.serve.modules.his.mapper.HisUserSupplierMapper;
import com.qs.serve.modules.sys.entity.SysUser;
import com.qs.serve.modules.sys.mapper.SysUserMapper;
import com.qs.serve.modules.sys.service.SysPostUserService;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
@ -31,10 +33,7 @@ import org.springframework.web.bind.annotation.*;
import javax.validation.Valid; import javax.validation.Valid;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.ArrayList; import java.util.*;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors; import java.util.stream.Collectors;
/** /**
@ -52,6 +51,9 @@ public class ExlTableDataController {
private ExlColumnConfService exlColumnConfService; private ExlColumnConfService exlColumnConfService;
private SqlSessionTemplate sqlSessionTemplate; private SqlSessionTemplate sqlSessionTemplate;
private ExlTableConfMapper exlTableConfMapper; private ExlTableConfMapper exlTableConfMapper;
private SysUserMapper sysUserMapper;
private SysPostUserService postUserService;
private HisUserSupplierMapper hisUserSupplierMapper;
/** /**
* 翻页查询 * 翻页查询
@ -101,6 +103,8 @@ public class ExlTableDataController {
List<ExlConditionDto> le_conditions = new ArrayList<>(); List<ExlConditionDto> le_conditions = new ArrayList<>();
List<ExlConditionDto> eq_conditions = new ArrayList<>(); List<ExlConditionDto> eq_conditions = new ArrayList<>();
List<ExlConditionDto> like_conditions = new ArrayList<>(); List<ExlConditionDto> like_conditions = new ArrayList<>();
List<ExlConditionDto> in_conditions = new ArrayList<>();
if(!map.isEmpty()){ if(!map.isEmpty()){
for (String columnName : map.keySet()) { for (String columnName : map.keySet()) {
String searchValue = map.get(columnName); String searchValue = map.get(columnName);
@ -116,20 +120,63 @@ public class ExlTableDataController {
if(currColumnConf==null){ if(currColumnConf==null){
continue; continue;
} }
String colType = currColumnConf.getColumnType();
// 权限范围:0->本人;1->下属;2->全部(本人级下属)
Integer scope = currColumnConf.getScope();
Set<String> values = new HashSet<>();
// 业务类型
String userId = AuthContextUtils.getSysUserId();
SysUser sysUser = sysUserMapper.selectById(userId);
if (colType.equals(ExlConst.TYPE_USER_CODE)){
values.add("0");
if(scope==0){
values.add(sysUser.getCode());
}else if (scope>0){
List<String> childIds = postUserService.listByChildIds(AuthContextUtils.getSysUserId());
if(childIds.size()>0){
List<SysUser> sysUsers = sysUserMapper.selectBatchIds(childIds);
List<String> codes = sysUsers.stream().map(a->a.getCode()).collect(Collectors.toList());
values.addAll(codes);
}
if (scope==2){
values.add(sysUser.getCode());
}
}
ExlConditionDto conditionDto = new ExlConditionDto(orgColumn,values);
in_conditions.add(conditionDto);
}else if (colType.equals(ExlConst.TYPE_CUSTOMER_CODE)){
values.add("0");
List<String> userIds = new ArrayList<>();
userIds.add(userId);
if(scope>0){
List<String> childIds = postUserService.listByChildIds(AuthContextUtils.getSysUserId());
userIds.addAll(childIds);
}
LambdaQueryWrapper<HisUserSupplier> husLqw = new LambdaQueryWrapper<>();
husLqw.in(HisUserSupplier::getUserId,userIds);
husLqw.select(HisUserSupplier::getSupplierCode);
List<HisUserSupplier> hisUserSuppliers = hisUserSupplierMapper.selectList(husLqw);
List<String> supplierCodes = hisUserSuppliers.stream()
.map(HisUserSupplier::getSupplierCode).distinct().collect(Collectors.toList());
values.addAll(supplierCodes);
ExlConditionDto conditionDto = new ExlConditionDto(orgColumn,values);
in_conditions.add(conditionDto);
}
//基础的数据类型
if(columnName.contains(ExlConst.PRE_COLUMN_START)){ if(columnName.contains(ExlConst.PRE_COLUMN_START)){
ExlConditionDto conditionDto = new ExlConditionDto(orgColumn,searchValue); ExlConditionDto conditionDto = new ExlConditionDto(orgColumn,searchValue);
ge_conditions.add(conditionDto); ge_conditions.add(conditionDto);
}else if (columnName.contains(ExlConst.PRE_COLUMN_END)){ }else if (columnName.contains(ExlConst.PRE_COLUMN_END)){
ExlConditionDto conditionDto = new ExlConditionDto(orgColumn,searchValue); ExlConditionDto conditionDto = new ExlConditionDto(orgColumn,searchValue);
if(currColumnConf.getColumnType().equals(ExlConst.DATETIME_TYPE)){ if(colType.equals(ExlConst.DATETIME_TYPE)){
conditionDto.setValue(searchValue+" 23:59:59"); conditionDto.setValue(searchValue+" 23:59:59");
} }
le_conditions.add(conditionDto); le_conditions.add(conditionDto);
}else { }else {
ExlConditionDto conditionDto = new ExlConditionDto(columnName,searchValue); ExlConditionDto conditionDto = new ExlConditionDto(columnName,searchValue);
if (currColumnConf.getColumnType().equals(ExlConst.TYPE_INT)){ if (colType.equals(ExlConst.TYPE_INT)){
eq_conditions.add(conditionDto); eq_conditions.add(conditionDto);
}else if (currColumnConf.getColumnType().equals(ExlConst.TYPE_STRING)){ }else{
like_conditions.add(conditionDto); like_conditions.add(conditionDto);
} }
} }
@ -139,6 +186,7 @@ public class ExlTableDataController {
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);
queryMap.put("inBizList",in_conditions);
return queryMap; return queryMap;
} }

3
src/main/java/com/qs/serve/modules/exl/entity/ExlColumnConf.java

@ -60,6 +60,9 @@ public class ExlColumnConf implements Serializable {
/** 空值标识 */ /** 空值标识 */
private Integer keyFlag; private Integer keyFlag;
/** 权限范围:0->本人;1->下属;2->全部(本人级下属) */
private Integer scope;
private Integer sort; private Integer sort;
/** 创建时间 */ /** 创建时间 */

15
src/main/java/com/qs/serve/modules/exl/entity/dto/ExlConditionDto.java

@ -3,16 +3,29 @@ package com.qs.serve.modules.exl.entity.dto;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Data; import lombok.Data;
import java.util.Set;
/** /**
* @author YenHex * @author YenHex
* @since 2023/8/15 * @since 2023/8/15
*/ */
@Data @Data
@AllArgsConstructor
public class ExlConditionDto { public class ExlConditionDto {
String column; String column;
String value; String value;
Set<String> values;
public ExlConditionDto(String column, String value) {
this.column = column;
this.value = value;
}
public ExlConditionDto(String column, Set<String> values) {
this.column = column;
this.values = values;
}
} }

9
src/main/java/com/qs/serve/modules/goods/controller/api/GoodsSpuApi.java

@ -61,6 +61,15 @@ public class GoodsSpuApi {
.or().eq(GoodsSpu::getCategoryThird,selectCateId); .or().eq(GoodsSpu::getCategoryThird,selectCateId);
}); });
} }
List<Long> selectCateIds = param.getSelectCateIds();
if(selectCateIds!=null&&selectCateIds.size()>0){
spuWrapper.and(qw->{
qw.in(GoodsSpu::getCategoryFirst,selectCateIds)
.or().in(GoodsSpu::getCategoryLast,selectCateIds)
.or().in(GoodsSpu::getCategorySecond,selectCateIds)
.or().in(GoodsSpu::getCategoryThird,selectCateIds);
});
}
spuWrapper.eq(GoodsSpu::getShelf,1); spuWrapper.eq(GoodsSpu::getShelf,1);
spuWrapper.orderByDesc(GoodsSpu::getSort); spuWrapper.orderByDesc(GoodsSpu::getSort);
List<GoodsSpu> list = goodsSpuService.list(spuWrapper); List<GoodsSpu> list = goodsSpuService.list(spuWrapper);

3
src/main/java/com/qs/serve/modules/goods/entity/GoodsSpu.java

@ -141,5 +141,8 @@ public class GoodsSpu implements Serializable {
@TableField(exist = false) @TableField(exist = false)
private List<Long> selectIds; private List<Long> selectIds;
@TableField(exist = false)
private List<Long> selectCateIds;
} }

2
src/main/java/com/qs/serve/modules/oms/controller/api/OmsOrderApi.java

@ -49,7 +49,7 @@ public class OmsOrderApi {
} }
/** /**
* 创建订单(PC) * 创建订单H5
* @param omsOrderBo * @param omsOrderBo
* @return * @return
*/ */

4
src/main/java/com/qs/serve/modules/third/PortalOfCostController.java

@ -46,16 +46,16 @@ public class PortalOfCostController {
@PostMapping("createByCostApply") @PostMapping("createByCostApply")
public R<?> createCostProcess(@Valid @RequestBody ProcessCreateCostApplyBo createBo,HttpServletRequest request){ public R<?> createCostProcess(@Valid @RequestBody ProcessCreateCostApplyBo createBo,HttpServletRequest request){
SysSyncLog syncLog = new SysSyncLog(); SysSyncLog syncLog = new SysSyncLog();
syncLog.setFrom("核销系统"); syncLog.setFrom("一站式费用");
syncLog.setUrl(request.getRequestURI()); syncLog.setUrl(request.getRequestURI());
syncLog.setRequestJson(JsonUtil.objectToJson(createBo)); syncLog.setRequestJson(JsonUtil.objectToJson(createBo));
syncLog.setEntityClass(ProcessCreateCostApplyBo.class.getName()); syncLog.setEntityClass(ProcessCreateCostApplyBo.class.getName());
try { try {
log.debug("站式创建费用(费用申请)===>{}", JsonUtil.objectToJson(createBo));
ThirdTokenUtil.checkToken(request); ThirdTokenUtil.checkToken(request);
portalOfCostApplication.createCostProcess(createBo); portalOfCostApplication.createCostProcess(createBo);
syncLog.setSuccessStatus(1); syncLog.setSuccessStatus(1);
} catch (Exception e) { } catch (Exception e) {
log.error("站式创建费用(费用申请)===>{}", JsonUtil.objectToJson(createBo));
syncLog.setFailReason(e.getMessage()); syncLog.setFailReason(e.getMessage());
return R.error(e.getMessage()); return R.error(e.getMessage());
} }

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

@ -58,6 +58,15 @@
${item.column} like concat('%', #{item.value} ,'%') ${item.column} like concat('%', #{item.value} ,'%')
</foreach> </foreach>
</if> </if>
<if test="query.inBizList!=null and query.inBizList.size > 0">
and
<foreach collection="query.inBizList" item ="inItem" index="i" separator="and">
${inItem.column} in
<foreach collection="inItem.values" item ="item" index="i" separator=",">
#{item}
</foreach>
</foreach>
</if>
</where> </where>
</sql> </sql>

Loading…
Cancel
Save