• 开发常用知识点


     生成文件错误,到文件夹中删除文件夹即可,不要到idea删除

    设置复选框

    enableFlag:{
        type: 'Boolean',
        checkedValue: 'Y',
        uncheckedValue: 'N',
        defaultValue: 'Y'
    },

     

    1. 字段输入校验

    Schema>Mode >fields

    batteryVersion:{
        type:"Number",
        validation: {
            min:1,
            required: true,
            required:{message: '电池包版本不允许为空'}
        }
    },

    1.  校验某个字段是否可以编辑

    Schema>Mode

    editable:function (col) {//设置字段是否可以编辑
        if(col !='enableFlag'){
            if(ifNotNull(this.id)||(!this.isNew())){
                return false;
            }
            return true;
        }else {
            return true;
        }
    }

     

    2. 下拉列表默认值设置

    Schema>Mode >fields

    unitCategory:{defaultValue:unitCategoryData[0].value},

    3. 查询下拉列表

    <input id="inspecType" placeholder='<@spring.message "ScInspectionHead.inspecType"/>' type="text"
           style="width: 150px" data-bind="value:model.inspecType"
    >
    <script>
        $("#inspecType").kendoComboBox({
            dataTextField: "meaning",
            dataValueField: "value",
            valuePrimitive: true,
            dataSource: scInspecType
        });
    </script>

    4. 表格下拉列表

       {
        field: "warehouseType",
        title: '<@spring.message "warehouse.warehousetype"/>',
        width: 100,
        attributes: {style: "text-align:center"},
        headerAttributes: {style: "text-align:center"},
        template: function (dataItem) {
            var v = dataItem.warehouseType ? dataItem.warehouseType : "";
            $.each(SC_WAREHOUSE_TYPE, function (i, n) {
                if ((n.value || '').toLowerCase() == (v || '').toLowerCase()) {
                    v = n.meaning;
                    return v;
                }
            })
            return v;
        },
        editor: function (container, options) {
            $('<input name="' + options.field + '"/>')
                .appendTo(container)
                .kendoDropDownList({
                    dataTextField: "meaning",
                    dataValueField: "value",
                    valuePrimitive: true,
                    dataSource: SC_WAREHOUSE_TYPE,
                });
        }
    },

     

    5.  LOV查询带传参条件

    {
        field: "locatorId",
        title: '<@spring.message "scmaterialscrap.locatorcode"/>',
        width: 120,
        attributes: {style: "text-align:center"},
        headerAttributes: {style: "text-align:center"},
        template: function (dataItem) {
            return dataItem['locatorDesc'] || ''
        },
        editor: function (container, options) {
            $('<input required name="' + options.field + '"/>')
                .appendTo(container)
                .kendoLov($.extend(<@lov "HCM_LOV_LOCATION_ID"/>, {
                textField: 'locatorDesc',
                model: options.model,
                query:function (e) {   //连带查询
                   e.param['warehouseId']=options.model.warehouseId;
                },
            }));
        }
    },

     

    6.  LOV连带查询

        {
        field: "itemId",
        title: '<@spring.message "scbarcoderule.itemid"/>'+ spanRed,
        width: 120,
        attributes: {style: "text-align:center"},
        headerAttributes: {style: "text-align:center"},
        template: function (dataItem) {
            return dataItem['itemCode'] || ''
        },
        editor: function (container, options) {
            $('<input required name="' + options.field + '"/>')
                .appendTo(container)
                .kendoLov($.extend(<@lov "LOV_ITEM"/>, {
                textField: 'itemCode',
                model: options.model,
                select:function (e) {   //连带查询
                    options.model.set('itemName', e.item.itemName);
                },
            }));
        }
    },
    {
        field: "itemName",
        title: '<@spring.message "scbarcoderule.itemname"/>',
        width: 120,
        attributes: {style: "text-align:center"},
        headerAttributes: {style: "text-align:center"},
        editor: function (container, options){
            $('<span data-bind="text:itemName"></span>').appendTo(container);
        }
    },

    7.  将方法绑定到viewmodel

    viewModel.updateFlagStatus=function(arr){}

     

    8.  获取grid选中行数据

    var grid = $("#grid").data("kendoGrid");
    var rows = $("#grid").data("kendoGrid").selectedDataItems(); //获取选中行对象

    9.  调取浏览器打印

    var htmlBody= window.document.body.innerHTML;//打印之前的页面状态
    window.document.body.innerHTML=viewModel.createTableTemplate(rows);
    window.print();

     

    10.  Grid CURD数据提交之前数据处理

    parameterMap: function (options, type) {
        if (type !== "read" && options.models) {
            var datas = Hap.prepareSubmitParameter(options, type)
            return kendo.stringify(datas);
        } else if (type === "read") {
            return Hap.prepareQueryParameter(viewModel.model.toJSON(), options)
        }
    }

     

    11.  弹出窗体,适合头行表

    定义div:

    <div id="dialog"></div>

    某个点击事件触发如下函数

    function editFunctionResources(id) {
        var dialog = $("#dialog").kendoWindow({
            actions: ["Close"],
            width: 800,
            height: 450,
            title: '<@spring.message "dialog.inspectionprojectmaintenance"/>',
            visible: false,
            iframe: true,
            modal: true,
            content: 'sc_inspection_line.html?inspectionHeadId='+id
        }).data("kendoWindow");
        dialog.center().open();
    };

     

    接收页面接收传递的参数

     

    {
        field: "inspectionHeadId",
        width: 0,
        attributes: {style: "visibility: hidden;0px;"},
        headerAttributes: {style: "visibility: hidden;0px;"},
        template: function (dataItem) {
            return ${RequestParameters.inspectionHeadId};
        },
        editor: function (container, options) {
            options.model.inspectionHeadId=${RequestParameters.inspectionHeadId};
        }
    },

     

     

     

    第二种:适合复杂的查询条件

     

    1.定义弹出的样式


    <div id="dialog" style="overflow: hidden;display: none;" >
        <div id="dialog-content" >
            <div>
                <label for="checkType" style="display: inline-block;margin-left: 10%;">校验类型:</label>
                <input id="checkType" class="dropdownlist" data-bind="value:model.checkType" style="width: 150px"/>
            </div>
            <div style="margin-top: 30px;">
                <span class="btn k-grid-add" style="float:right;margin-right:15px;border: 1px solid #ccc" data-bind="click:closeWind">取消</span>
                <span class="btn btn-primary k-grid-add" style="float:right;margin-right:15px;" data-bind="click:checkDataItems">校验数据</span>
            </div>
            <script>
                $("#checkType").kendoComboBox({
                    dataTextField: "meaning",
                    dataValueField: "value",
                    valuePrimitive: true,
                    dataSource: IMPORT_DATA_TYPE
                });
            </script>
        </div>
            <script>kendo.bind($('#dialog-content'), viewModel);</script>
        </div>
    </div>

     

    2.打开div

     

    $("#dialog").kendoWindow({
         width: 300,
         height: 120,
         title: '选择类型',
         visible: true,
         modal: true,
         iframe: false,
         scrollable: false,
        close: function () {

         }
     });
     var dialog = $("#dialog").data("kendoWindow");
     dialog.center().open();

     

     

    12.  Grid 单选按钮事件

    $("#grid").on('click','.k-grid-content .k-rowbox',function(){
        var row =$("#grid").data("kendoGrid").select();//grid被选中
        var data = $("#grid").data("kendoGrid").dataItem(row);//获取选中行的数据
        editFunctionResources(data.inspectionLineId,data.inspectionHeadId);
    })

    13.  获取配置的SERVER_ID

    @autowired

    Private IProfileService profileService;

     

    // 获取当前服务器ID
    if (objectEvent.getServerId() == null) {
       String serverIdStr = profileService.getProfileValue(iRequest, "SERVER_ID");
       if (StringUtil.isEmpty(serverIdStr))
          objectEvent.setServerId(0L);
       else {
          try {
             objectEvent.setServerId(Long.parseLong(serverIdStr));
          } catch (Exception ex) {
             logger.warn("SERVER_ID Must Long");
             objectEvent.setServerId(0L);
          }
       }
    }

    1.  事件JOB开发

    介绍如何自定义Job类:

    19.1首先我们要继承AbstractJob抽象类,实现其中定义的抽象方法safeExecute()isRefireImmediatelyWhenException()

    19.2safeExecute()中通context.getMergedJobDataMap().getString("参数名")设置前台页面传递的参数名称。

    19.3safeExecute()中定义计划任务的执行逻辑。

    19.4safeExecute()中调用自己的Service处理相关的业务。

    19.5 setExecutionSummary()可以记录任务的执行概要,比如任务返回结果或任务发生异常的信息。该执行概要可以在计划任务的执行记录中看到。

    19.6 isRefireImmediatelyWhenException()表示任务发生异常时的处理方式,返回true:重新执行Jobfalse:挂起Job,等待管理员处理。

     

     

    2.  KendoComboBox KendoDropDownList

    可以清除选项

    {
        field: "supplierType",
        title: '<@spring.message "suppliers.suppliertype"/>',
        width: 120,
        attributes: {style: "text-align:center"},
        headerAttributes: {style: "text-align:center"},
        template: function (dataItem) {
            var v = dataItem.supplierType;
            for(var i=0;i<SC_SUPPLIER_TYPE.length;i++){
                if(v === SC_SUPPLIER_TYPE[i].value){
                    v = SC_SUPPLIER_TYPE[i].meaning;
                    return v;
                }
            }
            return v||"";
        },
        editor: function (container, options) {
            $('<input name="' + options.field + '"/>')
                .appendTo(container)
                .kendoComboBox({
                    //autoBind: false,            //自动绑定
                    valuePrimitive:true,
                    dataTextField: "meaning",   //显示的文本
                    dataValueField: "value",    //实际的值
                    dataSource: SC_SUPPLIER_TYPE
                });
        }
    },

     

    不可以清除选项

     

    /*设置下拉菜单(取快速编码)*/
    template: function (dataItem) {
        var v = dataItem.prodLineType ? dataItem.prodLineType : "";
        $.each(PROD_LINE_TYPE, function (i, n) {
            if ((n.value || '').toLowerCase() == (v || '').toLowerCase()) {
                v = n.meaning;
                return v;
            }
        })
        return v;
    },
    editor: function (container, options) {
        $('<input name="' + options.field + '"/>')
            .appendTo(container)
            .kendoDropDownList({
                dataTextField: "meaning",
                dataValueField: "value",
                valuePrimitive: true,
                dataSource: PROD_LINE_TYPE
            });
    }

     

     

    3.  编码维护查找值

    SELECT

    T.PROFILE_VALUE

    FROM

    SYS_PROFILE_VALUE T

    WHERE

    T.PROFILE_ID = ( SELECT PROFILE_ID FROM sys_profile WHERE PROFILE_NAME = 'SC_COUNTDOWN' )

     

    1.  配置维护与查找

    SELECT T.PROFILE_VALUE FROM SYS_PROFILE_VALUE T WHERE T.PROFILE_ID = ( SELECT PROFILE_ID FROM sys_profile WHERE PROFILE_NAME = ‘SC_ITEMCODE_CUT_RULE

     

    1. Grid加载时候是否调用query方法

    $("#grid").kendoGrid({

    autoBind:false,

    })

     

    2.  弹窗

    kendo.ui.showInfoDialog({
        title:"提示",
        message: '工厂和工单必输'
    })

     

     

    kendo.ui.showConfirmDialog({
        title: "上传确认",
        buttons:[
            {
                text: '更新',
                type: 'primary',
                click: function (e) {
                    upload("Y");
                    e.dialog.destroy();
                }
            },
            {
                text: '不更新',
                type: 'primary',
                click: function (e) {
                    upload("N");
                    e.dialog.destroy();
                }
            },
            {
                text: '取消',
                type: 'primary',
                click: function (e) {
                    $("#uploadFile").val("");
                    e.dialog.destroy();
                }
            },
        ],
        message: "是否需要更新配置版本号",

    });

     

    3.  获取改变行

    借鉴Hap.submitForm


    function  getChangedData() {
        var grid=$("#grid");
        var ds = grid.data("kendoGrid").dataSource;
        if(!grid.data("kendoGrid").validate()){
            isValid = false;
            return false;
        }
        if (!ds.hasChanges())return false;
        var newRow = [];
        $.each(ds.data(), function (idx, data) {
            if (data.dirty === true) {
                var d = data.toJSON();
                d['__status'] = data.isNew() ? 'add' : 'update';
                d['__id'] = data.uid;
                newRow.push(d);
            }
        });
        return newRow;
    }

    4. Grid 刷新绑定值

     viewModel.model.set(’ __status’, ‘add’);

    5. 沒有分页栏

    pageable:false,

     

    6.  Grid刷新

    viewModel.refresh();

     

    7.  序号显示

    dataBound: function () {
        var rows = this.items();
        $(rows).each(function () {
            var index = $(this).index() + 1;
            var rowLabel = $(this).find(".row-number");
            $(rowLabel).html(index);
        });
        if (parent.autoResizeIframe) {
            parent.autoResizeIframe('${RequestParameters.functionCode!}')
        }
    },

    {
        title: "序号",
        field: "",
        width: 80,
        headerAttributes: {style: "text-align:center"},
        attributes: {style: "white-space:nowrap;text-overflow:ellipsis;text-align:center;"},
        template: "<span class='row-number'></span>",
    },

     

    8.  HAP导出

    <span class="btn btn-primary k-grid-excel" style="float:left; margin-right: 5px;"
          data-bind="click:exportExcel"><i class="fa fa-file-excel-o" style="margin-right:3px;"></i><@spring.message "hap.exportexcel"/></span>

    $("#grid").kendoGrid({
        excel: {
            fileName: "物料PFEP维护",
            filterable: true , //
        },
        excelExport: function (e) {

            var rows=  e.workbook.sheets[0].rows;
            var datas=e.data;

            e.workbook.sheets[0].rows[0].cells[3].value='<@spring.message "itemwms.receivewarehouseid"/>';
            e.workbook.sheets[0].rows[0].cells[4].value='<@spring.message "itemwms.receivelocatorid"/>';
            e.workbook.sheets[0].rows[0].cells[5].value='<@spring.message "itemwms.storagewarehouseid"/>';
            e.workbook.sheets[0].rows[0].cells[6].value='<@spring.message "itemwms.storagelocatorid"/>';
            e.workbook.sheets[0].rows[0].cells[7].value='<@spring.message "itemwms.barcodeattribute"/>';
            e.workbook.sheets[0].rows[0].cells[8].value='<@spring.message "itemwms.dispatchingmode"/>';
            e.workbook.sheets[0].rows[0].cells[9].value='<@spring.message "itemwms.retrospectmode"/>';

            for (var i=1;i<rows.length;i++){
                rows[i].cells[0].value=datas[i -1].plantCode;//工厂
                rows[i].cells[1].value=datas[i -1].itemCode;//物料编码
                rows[i].cells[3].value=datas[i -1].receiveWarehouseCode;//接收仓库
                rows[i].cells[4].value=datas[i -1].receiveLocatorCode;//接收货位
                rows[i].cells[5].value=datas[i -1].storageWarehouseCode;//入库仓库
                rows[i].cells[6].value=datas[i -1].storageLocatorCode;//入库货位
                rows[i].cells[7].value=Hap.getCodeMeaning(HWM_BARCODE_ATTRIBUTE,datas[i -1].barcodeAttribute);//条码属性
                rows[i].cells[8].value=Hap.getCodeMeaning(HWM_DISPATCHING_MODE,datas[i -1].dispatchingMode);//配送模式
                rows[i].cells[9].value=Hap.getCodeMeaning(HWM_RETROSPECT_MODE,datas[i -1].retrospectMode);//追溯模式
            }

        },

    9. Grid 有数据变化

    $("#grid").data('kendoGrid').dataSource.hasChanges()

     

    1. Mybatis 判断是否字符串

    <if test='substituteFlag!="Y"'>
          and ca.SUBSTITUTE_FLAG!='Y'
    </if>

     

    1. 集合去重

      List<MtModLocatorOrganizationRelVO> returnCollect = result.stream().collect(Collectors.collectingAndThen(
               Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(o -> o.getLocatorId()))),
               ArrayList::new)).stream()
               .sorted(Comparator.comparing(MtModLocatorOrganizationRelVO::getLocatorId))
               .collect(Collectors.toList())

     

  • 相关阅读:
    给View设置多个Tag
    Android studio 编译报错 Error:Error converting bytecode to dex:
    ViewPager设置自适应
    华为手机播放视频时seekBar拖不动
    Android studio 导入Eclipse项目 Vitamio播放器报错
    多线程Bug
    时间选择器,不同系统版本差异的解决办法
    Django测试pytest
    Nginx
    docker
  • 原文地址:https://www.cnblogs.com/fuqiang-zhou/p/14249361.html
Copyright © 2020-2023  润新知