diff --git a/modules/i3plus-pojo-base/src/main/java/cn/estsh/i3plus/pojo/base/enumutil/DataAuthEnumUtil.java b/modules/i3plus-pojo-base/src/main/java/cn/estsh/i3plus/pojo/base/enumutil/DataAuthEnumUtil.java new file mode 100644 index 0000000..6c4d4c3 --- /dev/null +++ b/modules/i3plus-pojo-base/src/main/java/cn/estsh/i3plus/pojo/base/enumutil/DataAuthEnumUtil.java @@ -0,0 +1,45 @@ +package cn.estsh.i3plus.pojo.base.enumutil; + +import com.fasterxml.jackson.annotation.JsonFormat; + +/** + * @Description : wms数据权限枚举 + * @Reference : + * @Author : jack.lv + * @CreateDate : 2019-3-8 15:53 + * @Modify: + **/ +public class DataAuthEnumUtil { + + /** + * 数据对象枚举 + */ + @JsonFormat(shape = JsonFormat.Shape.OBJECT) + public enum DATA_OBJ_TYPE { + WAREHOUSE("10", "WAREHOUSE", "仓库对象"), + ZONE("20", "ZONE", "存储区对象"), + LOCATE("30", "LOCATE", "库位对象"); + + private String code; + private String description; + String value; + + DATA_OBJ_TYPE(String value, String code, String description) { + this.value = value; + this.code = code; + this.description = description; + } + + public String getValue() { + return value; + } + + public String getCode() { + return code; + } + + public String getDescription() { + return description; + } + } +} diff --git a/modules/i3plus-pojo-wms/src/main/java/cn/estsh/i3plus/pojo/wms/repository/WmsDataAuthRepository.java b/modules/i3plus-pojo-wms/src/main/java/cn/estsh/i3plus/pojo/wms/repository/WmsDataAuthRepository.java new file mode 100644 index 0000000..7064482 --- /dev/null +++ b/modules/i3plus-pojo-wms/src/main/java/cn/estsh/i3plus/pojo/wms/repository/WmsDataAuthRepository.java @@ -0,0 +1,19 @@ +package cn.estsh.i3plus.pojo.wms.repository; + +import cn.estsh.i3plus.pojo.base.jpa.dao.BaseRepository; +import cn.estsh.i3plus.pojo.wms.bean.WareHouse; +import cn.estsh.i3plus.pojo.wms.bean.WmsDataAuth; +import org.springframework.stereotype.Repository; + +import java.util.List; + +/** + * @Description : wms数据权限 + * @Reference : + * @Author : jack.lv + * @CreateDate : 2019-03-08 14:47 + * @Modify: + **/ +@Repository +public interface WmsDataAuthRepository extends BaseRepository { +} diff --git a/modules/i3plus-pojo-wms/src/main/java/cn/estsh/i3plus/pojo/wms/sqlpack/WmsHqlPack.java b/modules/i3plus-pojo-wms/src/main/java/cn/estsh/i3plus/pojo/wms/sqlpack/WmsHqlPack.java index 8a923bd..046704d 100644 --- a/modules/i3plus-pojo-wms/src/main/java/cn/estsh/i3plus/pojo/wms/sqlpack/WmsHqlPack.java +++ b/modules/i3plus-pojo-wms/src/main/java/cn/estsh/i3plus/pojo/wms/sqlpack/WmsHqlPack.java @@ -2,13 +2,18 @@ package cn.estsh.i3plus.pojo.wms.sqlpack; import cn.estsh.i3plus.pojo.base.bean.BaseBean; import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil; +import cn.estsh.i3plus.pojo.base.enumutil.DataAuthEnumUtil; import cn.estsh.i3plus.pojo.base.tool.HqlPack; import cn.estsh.i3plus.pojo.base.tool.SqlPack; import cn.estsh.i3plus.pojo.wms.bean.*; +import com.google.common.base.Strings; import org.apache.commons.lang3.StringUtils; import java.util.Date; import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.stream.Collectors; /** * @Description : 仓库管理对象封装 @@ -1317,4 +1322,65 @@ public class WmsHqlPack { getStringBuilderPack(wmsStockQuan, result); return result.toString(); } + + /** + * 根据用户角色id列表查询数据权限信息 + * @param roleIds + * @return + */ + public static String packHqlWmsDataAuth(List roleIds) { + StringBuffer result = new StringBuffer(); + String data = String.join(",", roleIds); + // 参数数组 [1,2,3] -> "1,2,3" + HqlPack.getInPack(data,"roleCode",result); + getStringBuilderPack(new WmsDataAuth(), result); + return result.toString(); + } + + /** + * 根据权限数据拼查询任务详情sql + * @param groupDataAuth + * @return + */ + public static String packHqlWmsTaskDetail(Map> groupDataAuth) { + StringBuffer result = new StringBuffer(); + Set>> entries = groupDataAuth.entrySet(); + String warehouse = DataAuthEnumUtil.DATA_OBJ_TYPE.WAREHOUSE.getValue(); + String locate = DataAuthEnumUtil.DATA_OBJ_TYPE.LOCATE.getValue(); + String zone = DataAuthEnumUtil.DATA_OBJ_TYPE.ZONE.getValue(); + //拼sql + entries.stream().filter(o->!Strings.isNullOrEmpty(o.getKey())).forEach(o->{ + List value = o.getValue(); + List vList = value.stream().map(x -> x.getDataObjValue()).collect(Collectors.toList()); + String data = String.join(",", vList); + if(warehouse.equals(o.getKey())){ + // 参数数组 [1,2,3] -> "1,2,3" + HqlPack.getInPack(data,"destWhNo",result); + } + if(locate.equals(o.getKey())){ + // 参数数组 [1,2,3] -> "1,2,3" + HqlPack.getInPack(data,"destLocateNo",result); + } + if(zone.equals(o.getKey())){ + // 参数数组 [1,2,3] -> "1,2,3" + HqlPack.getInPack(data,"destZoneNo",result); + } + }); + getStringBuilderPack(new WmsDataAuth(), result); + return result.toString(); + } + + /** + * 给定字段动态in sql + * @param columnName + * @param vals + * @return + */ + public static String packHqlAndIn(BaseBean bean,String columnName,List vals) { + StringBuffer result = new StringBuffer(); + String data = String.join(",", vals); + HqlPack.getInPack(data,columnName,result); + getStringBuilderPack(bean, result); + return result.toString(); + } }