工作中遇到的问题(DS)

我是目录

Jpa的criteriaBuilder.in 使用

效果相当于 where (maintainUnitId in (?,?..) )

List<Predicate> predicates = new ArrayList<>();
if(companyEntities!=null&&companyEntities.size()>0){
   
   Path<Object> path = root.get("maintainUnitId");//定义查询的字段
   CriteriaBuilder.In<Object> in = criteriaBuilder.in(path);
   for (int i = 0; i <companyEntities.size() ; i++) {
   
       in.value(companyEntities.get(i).getId());//存入值
   }
   predicates.add(criteriaBuilder.and(criteriaBuilder.and(in)));//存入条件集合里
}

Service实例: mc

@Override
 public PageVO getGridDataByQuery(Query dsQuery) {
   

     if (dsQuery == null) {
   
         return null;
     }

     PageVO pageVO = new PageVO();

     int pageSize = dsQuery.getPageForm().getPageSize();
     int page = dsQuery.getPageForm().getCurrentPage();

     JSONObject jsonObject = (JSONObject) dsQuery.getQueryForm().getQueryData();
     String orgId = jsonObject.getString("orgId");
     String name = jsonObject.getString("name");
     String plateNumber = jsonObject.getString("plateNumber");
     String number = jsonObject.getString("number");
     String category = jsonObject.getString("category");
     String model = jsonObject.getString("model");
     Boolean enable = jsonObject.getBoolean("enable") == null ? false : jsonObject.getBoolean("enable");

	// 获取当前登录用户所属及下级的单位ID(与本问题无关)
     String userOrgId = SessionUser.getSessionOrgId();
     List<String> orgIds = new ArrayList<>();
     if (StringUtils.isNotBlank(userOrgId)) {
   
     	// 根据orgid递归查询所有下级单位集合(包含自己)
         List<Organization> organizations = organizationRepository.findChildrenCascade(userOrgId);
         if (CollectionUtils.isNotEmpty(organizations)) {
   
             for (Organization organization : organizations) {
   
                 orgIds.add(organization.getId());
             }
         }
     }

	// 条件构造器
     Specification<Vehicle> specification = (Specification<Vehicle>) (root, query, criteriaBuilder) -> {
   

         List<Predicate> list = new ArrayList<>();

         if (enable) {
   
             if (StringUtils.isNotBlank(orgId)) {
   
                 list.add(criteriaBuilder.equal(root.get("orgNode").get("id").as(String.class), orgId));
             }
         }

         if (StringUtils.isNotBlank(name)) {
   
             list.add(criteriaBuilder.like(root.get("name").as(String.class), "%" + name + "%"));
         }

         if (StringUtils.isNotBlank(plateNumber)) {
   
             list.add(criteriaBuilder.like(root.get("plateNumber").as(String.class), "%" + plateNumber + "%"));
         }

         if (StringUtils.isNotBlank(number)) {
   
             list.add(criteriaBuilder.like(root.get("number").as(String.class), "%" + number + "%"));
         }

         if (StringUtils.isNotBlank(category)) {
   
             list.add(criteriaBuilder.equal(root.get("category").as(String.class), category));
         }

         if (StringUtils.isNotBlank(model)) {
   
             list.add(criteriaBuilder.like(root.get("model").as(String.class), "%" + model + "%"));
         }

		// 本问题重点
         if (CollectionUtils.isNotEmpty(orgIds)) {
   

             Path<Object> path = root.get("orgNode").get("id");//定义查询的字段
             CriteriaBuilder.In<Object> in = criteriaBuilder.in(path);
             for (int i = 0; i < orgIds.size(); i++) {
   
                 in.value(orgIds.get(i));//存入值
             }
             list.add(criteriaBuilder.and(criteriaBuilder.and(in)));//存入条件集合里
         }

         list.add(criteriaBuilder.equal(root.get("valid").as(Boolean.class), true));

         Predicate[] pp = new Predicate[list.size()];
         return criteriaBuilder.and(list.toArray(pp));
     };

	// 分页对象
     Pageable pageable = PageRequest.of(page - 1, pageSize, Sort.by(Sort.Direction.ASC, "orgNode.code", "name"));
     // 查询
     Page<Vehicle> data = vehicleRepository.findAll(specification, pageable);

     if (data != null && CollectionUtils.isNotEmpty(data.getContent())) {
   

         List<VehicleVO> vos = new ArrayList<>();
         for (Vehicle vehicle : data.getContent()) {
   
             VehicleVO vo = this.parseVehicleVO(vehicle);
             vos.add(vo);
         }
         pageVO.setContent(vos);
         pageVO.setTotalSize((int) data.getTotalElements());
     }

     return pageVO;
 }

@RequestParam用法(非必填)加与不加的区别

https://blog.csdn.net/u013805360/article/details/79527175

关于postman测试报400/405错误

https://www.cnblogs.com/codecheng99/p/12506771.html

网页调试打断点

https://blog.csdn.net/qiudechao1/article/details/95349834

Java返回一个不占内存的空对象

Java Collections.emptyList() 方法的使用及注意事项
https://blog.csdn.net/zhuzicc/article/details/106277658

Idea小技巧 之 折叠代码块(默认折叠所有ctrl+shift+/,展开所有ctrl+*)

(可以直接在类上右键点击,选择Folding)在这里插入图片描述具体详解:https://blog.csdn.net/wxxmy/article/details/78308079

防止复选框的默认操作:

document.getElementById("myCheckbox").addEventListener("click", function(event){
   
  event.preventDefault()
});

工作中常用正则记录,只能输入英文,数字,下划线等等

https://www.cnblogs.com/zyt-it/p/10327228.html

angular树状图刷新(只刷新树状图)

// 外部更新
function updateTreeView(item, type) {
   
    var angularElement = $("[ng-controller='orgManager.ctrl']");
    var scope = angular.element(angularElement).scope();
    scope.updateTreeView(item, type);
    //关键在这
    scope.treeData.read();
}

 $scope.treeData = new kendo.data.HierarchicalDataSource({
   
        transport: {
   
            read: {
   
                type: "get",
                url: DSJS.getWebRoot() + "/org/get_childrenorgs_asyn_all",
                dataType: "json",
                contentType: "application/json"
            }
        },
        schema: {
   
            model: {
   
                hasChildren: "items"
            },
            data: function (res) {
   
                if (res && res.ret == "ok") {
   
                    return res.dataStore;
                } else {
   
                    return [];
                }
            }
        },
        //加载完成后执行
        requestEnd: function (e) {
   
        }
    });

AngularJS下拉列表(xf)

第一种写法:

<section style="clear:both">
     <label class="col-xs-2 control-label">{
  {"COMMON.LABEL.TYPE"|translate}}</label>
     <div class="col-xs-10">
         <select kendo-drop-down-list name={
  {"COMMON.LABEL.TYPE"|translate}} k-value="formInfo.type" ng-model="formInfo.type" k-data-text-field="'name'"
                 k-data-value-field="'dictItemCode'" k-data-source="types" k-on-select="selectType(kendoEvent)"  placeholder=""></select>
     </div>
 </section>

注意:当使用 k-value="formInfo.type"的时候,属性初始值不能为null,可以为空,因此需要一开始赋一下空值,当然不使用这条属性也可以生成下拉框,但是可能model绑定会出错.

$scope.formInfo = {
   
        vehicleId: "",
        type: ""
    };
    $scope.vehicles = [];
    $scope.types = window.parent.types;
// 只是赋值参考,不是正式代码,函数要在初始化的时候调用
    $scope.init = function() {
   
        $http.get(QueryUrl + id).success(function(res){
   
            if(res.ret=="ok" && res.dataStore){
   
                $scope.formInfo = res.dataStore;
                $scope.currentVehicleId = $scope.formInfo.vehicleId;
                $scope.initComboTree();
                $scope.initOrgVehicle($scope.formInfo.orgId);
                if($scope.formInfo){
   
                    $scope.unitName.setInitName($scope.formInfo.orgName);
                }
            }
        }).error(function(a, b, c) {
   
            DSJS.Alert($translate.instant("ALERT.REQUEST.EXCEPTION")  + b);
        });
    };

第二种树状下拉框写法

<section style="clear:both">
                <label class="col-xs-2 control-label required">{
  {"COMMON.LABEL.DEPT"|translate}}</label>
                <div class="col-xs-10">
                    <div id="divDefaultUnitComboTree" ds-combo-tree="unitName"
                         ds-model="formInfo.orgId"
                         ds-model-text="formInfo.orgName"
                         ds-data-source="defUnitTreeData"
                         ds-data-value-field="'id'"
                         ds-data-text-field="'text'"
                         ds-value-primitive="true"
                         ds-auto-close="true"
                         ds-on-select="selectOrg(dsEvent)"
                         style="width: 100%">
                    </div>
                </div>
            </section>
$scope.selectOrg = function(e) {
   
        $scope.selectedOrg = e.dataItem;
        $scope.formInfo.vehicleId = "";
        $scope.initOrgVehicle(e.dataItem.id);
    };
$scope.initOrgVehicle = function(orgId) {
   
        if(orgId == undefined || orgId == "" || orgId == null){
   
            return false;
        }

        $http.get(VehicleUrl + "?orgId=" + orgId).success(function (response) {
   
            if(response.ret == "ok" && response.dataStore){
   
                $scope.vehicles = response.dataStore;
                $("#vehicle").data("kendoDropDownList").setDataSource($scope.vehicles);
                if($scope.currentVehicleId){
   
                    $("#vehicle").data("kendoDropDownList").value($scope.currentVehicleId);
                }
            }
        })
    };

AngularJS在某些情况下,不能直接用required+data-required-msg=" "的方式,直接控制必填文字提示的显示,比如input为下拉框的时候,此时就需要通过利用id操作标签的display属性控制标签的显示或者隐藏

实例:
html

<div class="col-xs-6 ds-form">
                <div class="org org1">
                    <label class="col-xs-3 org_child required">{
  {"COMMON.LABEL.RESPONSIBLE.DEPT"|translate}}</label>
                    <div class="col-xs-9 org_child">
                        <div class="col-xs-12" style="position: absolute;top:-25px;padding-left:0px;display: none" title={
    {dutyOrg}} ng-show="showDutyOrg">
                            <p style="color:#dbdbdb;overflow-x:hidden;text-overflow: ellipsis;white-space: nowrap;">{
  {dutyOrg}}</p>
                        </div>
                        <div style="padding: 0px;" id="unitNameDutyOrgId" ds-combo-tree="unitNameDutyOrg" ds-model="dataStore.data.orgNodeId" ds-model-text="dataStore.data.orgName" ds-data-source="defUnitTreeDataDutyOrg" ds-data-value-field="'id'" ds-data-text-field="'text'"
                             ds-value-primitive="true" ds-auto-close="true" ds-on-select="dutyOrgSelect(dsEvent)" ng-disabled="disabled" required  validationMessage={
  {"PERSON.SELECT.ORG"|translate}}>
                        </div>
<!--                        <span ng-show="showDutyOrgError" class="k-widget k-tooltip k-tooltip-validation k-invalid-msg" data-for={
   {"RESOURCE.LABEL.RESPONSIBLE.DEPT"|translate}} style="
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值