diff --git a/src/main/java/com/qs/serve/modules/exl/common/ExlConst.java b/src/main/java/com/qs/serve/modules/exl/common/ExlConst.java index 0bb7853e..e77d0466 100644 --- a/src/main/java/com/qs/serve/modules/exl/common/ExlConst.java +++ b/src/main/java/com/qs/serve/modules/exl/common/ExlConst.java @@ -15,6 +15,9 @@ public interface ExlConst { String TYPE_MONEY = "money"; String TYPE_STRING = "string"; + /** 业务类型 */ + String TYPE_CUSTOMER_CODE = "customerCode"; + String TYPE_USER_CODE = "userCode"; String TABLE_CONFIG_PARAM = "tb_config_cnf_id"; diff --git a/src/main/java/com/qs/serve/modules/exl/common/TableCreateSqlUtil.java b/src/main/java/com/qs/serve/modules/exl/common/TableCreateSqlUtil.java index d38c7ba2..c3d6a8d8 100644 --- a/src/main/java/com/qs/serve/modules/exl/common/TableCreateSqlUtil.java +++ b/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.Map; +import static com.qs.serve.modules.exl.common.ExlConst.*; + /** * @author YenHex * @since 2023/8/14 @@ -15,12 +17,22 @@ import java.util.Map; public class TableCreateSqlUtil { public static final Map MYSQL_DATA_MAP = new HashMap<>(); + + /** + * 业务的默认数据类型 + */ + public static final String DEFAULT_STRING = "string"; + static { + //数据类型 MYSQL_DATA_MAP.put("int","bigint"); MYSQL_DATA_MAP.put("string","varchar(300)"); MYSQL_DATA_MAP.put("date","date"); MYSQL_DATA_MAP.put("money","decimal(11, 2)"); 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 "; @@ -31,13 +43,29 @@ public class TableCreateSqlUtil { StringBuffer result = new StringBuffer("CREATE TABLE `"+tableName+"` ("); result.append(" `union_row_id` varchar(255) NOT NULL COMMENT 'union_row_id',"); 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; result.append("`"+column.getColumnName()+"` "+ columnType + nullValue + COLUMN_COMMENT + " '"+ 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 "); return result.append(") COMMENT = '"+tableRemark+"' ").toString(); diff --git a/src/main/java/com/qs/serve/modules/exl/controller/ExlTableConfController.java b/src/main/java/com/qs/serve/modules/exl/controller/ExlTableConfController.java index 883138f2..d1a400da 100644 --- a/src/main/java/com/qs/serve/modules/exl/controller/ExlTableConfController.java +++ b/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()); List queryFieldList = new ArrayList<>(); 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(); startDto.setField(ExlConst.PRE_COLUMN_START + columnConf.getColumnName()); - startDto.setType(columnConf.getColumnType()); + startDto.setType(columnType); startDto.setLabel(columnConf.getColumnHeader()+ExlConst.PRE_COLUMN_START_LABEL); queryFieldList.add(startDto); ExlQueryFieldDto fieldDto = new ExlQueryFieldDto(); fieldDto.setField(ExlConst.PRE_COLUMN_END + columnConf.getColumnName()); - fieldDto.setType(columnConf.getColumnType()); + fieldDto.setType(columnType); fieldDto.setLabel(columnConf.getColumnHeader()+ExlConst.PRE_COLUMN_END_LABEL); queryFieldList.add(fieldDto); }else { - ExlQueryFieldDto fieldDto = new ExlQueryFieldDto(); - fieldDto.setField(columnConf.getColumnName()); - fieldDto.setType(columnConf.getColumnType()); - fieldDto.setLabel(columnConf.getColumnHeader()); - queryFieldList.add(fieldDto); + if(columnType.equals(ExlConst.TYPE_CUSTOMER_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_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); diff --git a/src/main/java/com/qs/serve/modules/exl/controller/ExlTableDataController.java b/src/main/java/com/qs/serve/modules/exl/controller/ExlTableDataController.java index 58c7d1d3..0b58aafa 100644 --- a/src/main/java/com/qs/serve/modules/exl/controller/ExlTableDataController.java +++ b/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.enums.BizType; import com.qs.serve.common.model.enums.SystemModule; -import com.qs.serve.common.util.IdUtil; -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.common.util.*; import com.qs.serve.modules.exl.common.ExlConst; import com.qs.serve.modules.exl.common.QsSqlSessionUtil; 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.service.ExlColumnConfService; 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.extern.slf4j.Slf4j; import org.jetbrains.annotations.NotNull; @@ -31,10 +33,7 @@ import org.springframework.web.bind.annotation.*; import javax.validation.Valid; import java.time.LocalDateTime; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.util.*; import java.util.stream.Collectors; /** @@ -52,6 +51,9 @@ public class ExlTableDataController { private ExlColumnConfService exlColumnConfService; private SqlSessionTemplate sqlSessionTemplate; private ExlTableConfMapper exlTableConfMapper; + private SysUserMapper sysUserMapper; + private SysPostUserService postUserService; + private HisUserSupplierMapper hisUserSupplierMapper; /** * 翻页查询 @@ -101,6 +103,8 @@ public class ExlTableDataController { List le_conditions = new ArrayList<>(); List eq_conditions = new ArrayList<>(); List like_conditions = new ArrayList<>(); + List in_conditions = new ArrayList<>(); + if(!map.isEmpty()){ for (String columnName : map.keySet()) { String searchValue = map.get(columnName); @@ -116,20 +120,63 @@ public class ExlTableDataController { if(currColumnConf==null){ continue; } + String colType = currColumnConf.getColumnType(); + // 权限范围:0->本人;1->下属;2->全部(本人级下属) + Integer scope = currColumnConf.getScope(); + Set 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 childIds = postUserService.listByChildIds(AuthContextUtils.getSysUserId()); + if(childIds.size()>0){ + List sysUsers = sysUserMapper.selectBatchIds(childIds); + List 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 userIds = new ArrayList<>(); + userIds.add(userId); + if(scope>0){ + List childIds = postUserService.listByChildIds(AuthContextUtils.getSysUserId()); + userIds.addAll(childIds); + } + LambdaQueryWrapper husLqw = new LambdaQueryWrapper<>(); + husLqw.in(HisUserSupplier::getUserId,userIds); + husLqw.select(HisUserSupplier::getSupplierCode); + List hisUserSuppliers = hisUserSupplierMapper.selectList(husLqw); + List 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)){ ExlConditionDto conditionDto = new ExlConditionDto(orgColumn,searchValue); ge_conditions.add(conditionDto); }else if (columnName.contains(ExlConst.PRE_COLUMN_END)){ 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"); } le_conditions.add(conditionDto); }else { ExlConditionDto conditionDto = new ExlConditionDto(columnName,searchValue); - if (currColumnConf.getColumnType().equals(ExlConst.TYPE_INT)){ + if (colType.equals(ExlConst.TYPE_INT)){ eq_conditions.add(conditionDto); - }else if (currColumnConf.getColumnType().equals(ExlConst.TYPE_STRING)){ + }else{ like_conditions.add(conditionDto); } } @@ -139,6 +186,7 @@ public class ExlTableDataController { queryMap.put("geList",ge_conditions); queryMap.put("eqList",eq_conditions); queryMap.put("likeList",like_conditions); + queryMap.put("inBizList",in_conditions); return queryMap; } diff --git a/src/main/java/com/qs/serve/modules/exl/entity/ExlColumnConf.java b/src/main/java/com/qs/serve/modules/exl/entity/ExlColumnConf.java index e3f83250..48450d82 100644 --- a/src/main/java/com/qs/serve/modules/exl/entity/ExlColumnConf.java +++ b/src/main/java/com/qs/serve/modules/exl/entity/ExlColumnConf.java @@ -60,6 +60,9 @@ public class ExlColumnConf implements Serializable { /** 空值标识 */ private Integer keyFlag; + /** 权限范围:0->本人;1->下属;2->全部(本人级下属) */ + private Integer scope; + private Integer sort; /** 创建时间 */ diff --git a/src/main/java/com/qs/serve/modules/exl/entity/dto/ExlConditionDto.java b/src/main/java/com/qs/serve/modules/exl/entity/dto/ExlConditionDto.java index 74e75b53..d71ac344 100644 --- a/src/main/java/com/qs/serve/modules/exl/entity/dto/ExlConditionDto.java +++ b/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.Data; +import java.util.Set; + /** * @author YenHex * @since 2023/8/15 */ @Data -@AllArgsConstructor public class ExlConditionDto { String column; String value; + Set values; + + + public ExlConditionDto(String column, String value) { + this.column = column; + this.value = value; + } + + public ExlConditionDto(String column, Set values) { + this.column = column; + this.values = values; + } } diff --git a/src/main/java/com/qs/serve/modules/goods/controller/api/GoodsSpuApi.java b/src/main/java/com/qs/serve/modules/goods/controller/api/GoodsSpuApi.java index d8b4755c..dd586ef6 100644 --- a/src/main/java/com/qs/serve/modules/goods/controller/api/GoodsSpuApi.java +++ b/src/main/java/com/qs/serve/modules/goods/controller/api/GoodsSpuApi.java @@ -61,6 +61,15 @@ public class GoodsSpuApi { .or().eq(GoodsSpu::getCategoryThird,selectCateId); }); } + List 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.orderByDesc(GoodsSpu::getSort); List list = goodsSpuService.list(spuWrapper); diff --git a/src/main/java/com/qs/serve/modules/goods/entity/GoodsSpu.java b/src/main/java/com/qs/serve/modules/goods/entity/GoodsSpu.java index 554759ce..b0471043 100644 --- a/src/main/java/com/qs/serve/modules/goods/entity/GoodsSpu.java +++ b/src/main/java/com/qs/serve/modules/goods/entity/GoodsSpu.java @@ -141,5 +141,8 @@ public class GoodsSpu implements Serializable { @TableField(exist = false) private List selectIds; + @TableField(exist = false) + private List selectCateIds; + } diff --git a/src/main/java/com/qs/serve/modules/oms/controller/api/OmsOrderApi.java b/src/main/java/com/qs/serve/modules/oms/controller/api/OmsOrderApi.java index 43601478..ee040bec 100644 --- a/src/main/java/com/qs/serve/modules/oms/controller/api/OmsOrderApi.java +++ b/src/main/java/com/qs/serve/modules/oms/controller/api/OmsOrderApi.java @@ -49,7 +49,7 @@ public class OmsOrderApi { } /** - * 创建订单(PC) + * 创建订单(H5) * @param omsOrderBo * @return */ diff --git a/src/main/java/com/qs/serve/modules/third/PortalOfCostController.java b/src/main/java/com/qs/serve/modules/third/PortalOfCostController.java index c11b5eab..cc90626b 100644 --- a/src/main/java/com/qs/serve/modules/third/PortalOfCostController.java +++ b/src/main/java/com/qs/serve/modules/third/PortalOfCostController.java @@ -46,16 +46,16 @@ public class PortalOfCostController { @PostMapping("createByCostApply") public R createCostProcess(@Valid @RequestBody ProcessCreateCostApplyBo createBo,HttpServletRequest request){ SysSyncLog syncLog = new SysSyncLog(); - syncLog.setFrom("核销系统"); + syncLog.setFrom("一站式费用"); syncLog.setUrl(request.getRequestURI()); syncLog.setRequestJson(JsonUtil.objectToJson(createBo)); syncLog.setEntityClass(ProcessCreateCostApplyBo.class.getName()); try { - log.debug("站式创建费用(费用申请)===>{}", JsonUtil.objectToJson(createBo)); ThirdTokenUtil.checkToken(request); portalOfCostApplication.createCostProcess(createBo); syncLog.setSuccessStatus(1); } catch (Exception e) { + log.error("站式创建费用(费用申请)===>{}", JsonUtil.objectToJson(createBo)); syncLog.setFailReason(e.getMessage()); return R.error(e.getMessage()); } diff --git a/src/main/resources/mapper/exl/ExlTableConfMapper.xml b/src/main/resources/mapper/exl/ExlTableConfMapper.xml index f92a5704..2da53406 100644 --- a/src/main/resources/mapper/exl/ExlTableConfMapper.xml +++ b/src/main/resources/mapper/exl/ExlTableConfMapper.xml @@ -58,6 +58,15 @@ ${item.column} like concat('%', #{item.value} ,'%') + + and + + ${inItem.column} in + + #{item} + + +