录单限制主要用于 录单 导入运单 api下单对接的时候进行的条件拦截或警告,具体添加方式请在:
菜单⇢基础数据⇢录单限制 新建 如下图:

各种常用的录单限制条件公式,请从下方直接拷贝使用:
覆盖导入的时候如果国家跟原单国家不一致进行限制
运单属性("dirtyProperties.contains('guoJiaEntity') || waybillExtraEntity.dirtyProperties.contains('recipientContryId') ")
根据客户余额限制是否允许打单,客户欠费则限制
运单是否欠费()
这里可以根据多个中文品名进行限制,请按需增加
限制单个中文品名;例限制:榨汁机
运单中文品名包含('榨汁机','包含') || 中文品名包含('榨汁机','包含')
制多个中文品名
运单中文品名包含('榨汁机/甘蔗机/制冰机','包含') || 中文品名包含('榨汁机/甘蔗机/制冰机','包含')
自打单的客户需要限制客户有多少钱就打多少单,钱不够就不让打单
运单是否欠费()
当客户单号小于5位数时,运单进行拦截,并显示对应录单限制的信息提示
运单属性("keHuDanHao?.length()<5")
修改其他单号1,将会进行拦截禁止该操作,同时出现该提醒
运单属性("dirtyProperties.contains('qiTaDanHao1')")&&运单状态包含('草稿/已预报/待排货/待发货/待上网/待签收/已签收')
当用户在设置动作范围内,邮编和城市不对应时,将会进行拦截禁止该操作,同时出现设置的提示文案
城市邮编不匹配()
预报时,只允许一票录入1个SKU
$yunDanService.isOverSeaOneGenerationOut($yunDanEntity)&&$yunDanEntity.getShenBaoSkuList()!=null&&$yunDanEntity.getShenBaoSkuList().size()>1
限定某个支付账号不给它获取转单 如账号abc123 则代码如下
运单属性("waybillExtraEntity!=null&&freightPersonInfo?.accountNumber == 'abc123'")
收货或者预报的时候,一票多件的单系统自动拦截
收货渠道为('xxx')&&收货件数()>1
运单预报或者打单限制申报信息品名必填,设置后任何修改必须填好申报信息才行.
运单属性("shenBaoXinXiList == null || shenBaoXinXiList.isEmpty()")
运单预报或者打单限制申报信息品名必填,设置后任何修改必须填好申报信息才行.
运单属性("shenBaoXinXiList.size()==0")
针对运单在预报跟打单时限制收件人名跟收件人电话必填
录单限制的公式:运单属性("T(com.itdida.core.utils.StringUtils).isBlank(shouJianRenDianHua)") ||
运单属性("T(com.itdida.core.utils.StringUtils).isBlank(shouJianRenXingMing)") || shenBaoXinXiList == null || shenBaoXinXiList.isEmpty()")
针对在运单在预报跟打单时,美国邮编不对时,系统自动拦截。
运单属性("!T(com.itdida.core.utils.RegExpUtils).isMatch(shouJianRenYouBian,'^\\d{5}(-\\d{4})?$')")&&国家包含('US')
运单预报或者打单时,收件人电话不是数字时,系统自动拦截
运单属性("!T(com.itdida.core.utils.RegExpUtils).isMatch(shouJianRenDianHua,'^\d+$')")
收件人公司跟人名填纯数字,系统自动拦截
运单属性('shouJianRenXingMing!=null && shouJianRenXingMing.matches("\\d+")')||运单属性('shouJianRenGongSi != null && shouJianRenGongSi.matches("\\d+")')
注意,这个需要运单的地址验证后才生效.
运单包含('shouHuoQuDaoMingCheng','UPS')&&运单属性('personalAddress')
地址1和2中一定要有数字(可以是阿拉伯数字0123456789,也可以是中文的零一二三四五六七八九
运单属性("!((!T(com.itdida.core.utils.StringUtils).isBlank(shouJianRenDiZhi1) && T(com.itdida.core.utils.RegExpUtils).isMatch(shouJianRenDiZhi1, '.*[0-90123456789零一二三四五六七八九]+.*')) ||(!T(com.itdida.core.utils.StringUtils).isBlank(shouJianRenDiZhi2) && T(com.itdida.core.utils.RegExpUtils).isMatch(shouJianRenDiZhi2, '.*[0-90123456789零一二三四五六七八九]+.*')))")&&物流方式() == '快递'
满足EORI检验格式IM+10位数字
运单属性("!T(com.itdida.core.utils.RegExpUtils).isMatch(shouJianRenEori, '^IM\\d{10}$')")
客户包裹类型和代理包裹类型不一致就拦截
!运单属性("baoGuoLeiXing==daiLiBaoGuoLeiXing")
如果省州名为NP,就要拦截
运单含有关键词('shouJianRenZhouMing','NP')
没有转单号就无法收货的录单限制公式
运单属性("T(com.itdida.core.utils.StringUtils).isBlank(zhuanDanHao)"))
这里是先判断收件人州名不为空,后面判断包含有什么. ‘,’ 可以逗号隔开增加多个.
运单属性("!T(com.itdida.core.utils.StringUtils).isBlank(shouJianRenXingMing)") && 运单属性("!T(com.itdida.core.utils.StringUtils).containsAny(shouJianRenZhouMing,'New South Wales','New South Wales')")
下面是延伸的其他字段为空判断,留作参考
运单属性("T(com.itdida.core.utils.StringUtils).isBlank(shouJianRenXingMing) ||T(com.itdida.core.utils.StringUtils).isBlank(shouJianRenDianHua) ||T(com.itdida.core.utils.StringUtils).isBlank(shouJianRenZhouMing) ||T(com.itdida.core.utils.StringUtils).isBlank(shouJianRenYouBian) ||T(com.itdida.core.utils.StringUtils).isBlank(shouJianRenChengShi) ||T(com.itdida.core.utils.StringUtils).isBlank(shouJianRenDiZhi1)")
因为机场代码需要运单生成后才能确定,因此直接使用对应的邮编即可,代码如下:
承运商为('DHL')&&申报价值()<800&&国家包含('US')&&邮编区间('32007-32008,32026-32026,32038-32038,32042-32042,32044-32044,32054-32054,32056-32056,32058-32058,32061-32062,32066-32066,32071-32072,32083-32083,32091-32091,32102-32102,32105-32105,32110-32143,32145-32145,32147-32149,32157-32160,32162-32164,32168-32170,32173-32183,32185-32185,32187-32187,32189-32190,32192-32193,32195-32195,32198-32198,32359-32359,32601-32612,32614-32619,32621-32622,32625-32628,32631-32631,32633-32635,32639-32641,32643-32644,32648-32648,32653-32656,32658-32658,32662-32664,32666-32669,32680-32681,32683-32683,32686-32686,32692-32694,32696-32697,32701-32704,32706-32710,32712-32716,32718-32728,32730-32730,32732-32733,32735-32736,32738-32739,32744-32747,32750-32754,32756-32757,32759-32759,32762-32768,32771-32781,32783-32784,32789-32796,32798-32799,32801-32812,32814-32822,32824-32837,32839-32839,32853-32862,32867-32869,32872-32872,32877-32878,32885-32887,32891-32891,32896-32897,32899-32899,32901-32912,32919-32920,32922-32927,32931-32932,32934-32937,32940-32941,32948-32971,32976-32976,32978-32978,33001-33002,33004-33004,33008-33037,33039-33043,33045-33045,33050-33052,33054-33056,33060-33077,33081-33084,33090-33090,33092-33093,33097-33097,33101-33102,33106-33106,33109-33109,33111-33112,33114-33114,33116-33116,33119-33119,33122-33122,33124-33147,33149-33170,33172-33199,33206-33206,33222-33222,33231-33231,33233-33234,33238-33239,33242-33243,33245-33245,33247-33247,33255-33257,33261-33261,33265-33266,33269-33269,33280-33280,33283-33283,33296-33296,33299-33299,33301-33332,33334-33340,33345-33346,33348-33349,33351-33351,33355-33355,33359-33359,33388-33388,33394-33394,33401-33422,33424-33438,33440-33446,33448-33449,33454-33455,33458-33478,33480-33484,33486-33488,33493-33493,33496-33499,33503-33503,33508-33511,33513-33514,33521-33521,33523-33527,33530-33530,33534-33534,33537-33545,33547-33550,33556-33556,33558-33559,33563-33576,33578-33579,33583-33587,33592-33598,33601-33626,33629-33631,33633-33635,33637-33637,33646-33647,33650-33650,33655-33655,33660-33664,33672-33675,33677-33677,33679-33682,33684-33689,33694-33694,33701-33716,33729-33734,33736-33738,33740-33744,33747-33747,33755-33767,33769-33782,33784-33786,33801-33807,33809-33813,33815-33815,33820-33820,33823-33823,33825-33827,33830-33831,33834-33841,33843-33860,33862-33863,33865-33865,33867-33868,33870-33873,33875-33877,33880-33885,33888-33888,33890-33890,33896-33898,33901-33922,33924-33924,33927-33932,33935-33936,33938-33938,33944-33957,33960-33960,33965-33967,33970-33976,33980-33983,33990-33991,33993-33994,34101-34110,34112-34114,34116-34117,34119-34120,34133-34143,34145-34146,34201-34212,34215-34224,34228-34243,34249-34251,34260-34260,34264-34270,34272-34272,34274-34278,34280-34282,34284-34293,34295-34295,34420-34421,34423-34423,34428-34434,34436-34436,34441-34442,34445-34453,34460-34461,34464-34465,34470-34484,34487-34489,34491-34492,34498-34498,34601-34611,34613-34614,34636-34639,34652-34656,34660-34661,34667-34669,34673-34674,34677-34677,34679-34685,34688-34692,34695-34695,34697-34698,34705-34705,34711-34715,34729-34729,34731-34731,34734-34734,34736-34737,34739-34749,34753-34753,34755-34756,34758-34762,34769-34773,34777-34778,34785-34789,34797-34797,34945-34954,34956-34958,34972-34974,34979-34979,34981-34988,34990-34992,34994-34997,90001-90058,90060-90060,90062-90084,90086-90091,90093-90096,90099-90099,90101-90101,90189-90189,90201-90202,90209-90213,90230-90233,90255-90255,90270-90270,90272-90272,90280-90280,90291-90296,90301-90302,90305-90312,90401-90411,90601-90610,90640-90640,90660-90662,90680-90680,90742-90742,91001-91001,91003-91003,91006-91012,91016-91017,91020-91021,91023-91025,91030-91031,91046-91046,91066-91066,91077-91077,91101-91110,91114-91118,91121-91121,91123-91126,91129-91129,91182-91182,91184-91185,91188-91189,91199-91199,91201-91210,91214-91214,91221-91222,91224-91226,91702-91702,91706-91706,91714-91716,91722-91724,91731-91735,91740-91741,91744-91749,91754-91756,91770-91773,91775-91776,91778-91778,91780-91780,91788-91793,91801-91804,91896-91896,91899-91899,92600-92600,92602-92607,92609-92610,92612-92612,92614-92620,92623-92630,92637-92637,92646-92663,92672-92679,92683-92685,92688-92688,92690-92694,92697-92698,92701-92708,92711-92712,92728-92728,92735-92735,92780-92782,92799-92799,92801-92809,92811-92812,92814-92817,92821-92823,92825-92825,92831-92838,92840-92846,92850-92850,92856-92857,92859-92859,92861-92871,92885-92887,92899-92899')
这个代码其实很简单,但具代表性,可以方便获取yunDanEntity的众多变量.需求是当收件人识别码为XXX的时候限制录单:
$yunDanEntity.getWaybillExtraEntity().getRecipientIdentifier()=='xxxx'
提供导入时单票多个品名相同时提示的录单限制公式
例如:导入时两个申报品名为1的时候提示
运单属性("@shenBaoXinXiService.toStringSet(shenBaoXinXiList,'nameEn',false).size()<@shenBaoXinXiService.toStringList(shenBaoXinXiList,'nameEn',false).size()")
如果其他单号1重复限制收货拦截(录单限制设置公式其他单号1重复限制收货拦截)
运单属性("T(com.itdida.core.utils.StringUtils).isNotBlank(qiTaDanHao1) and @baseService.count('select count(1) from yun_dan where qi_ta_dan_hao_1 = ? and id != ?', qiTaDanHao1, id) > 0")
客户是需要欠费拦截的,客户说如果上架的时候欠费了就要拦截
假设客户有100的余额,现在上架一单的应收费用总和是110,就要拦截不让上架
(客户余额()+信用额度())<已上架未核销合计()
录单限制公式:只判断 城市和邮编 是否正确,如果不正确就进行拦截
客户原来使用的录单限制公式:城市邮编不匹配() 但是这个公式会判断 邮编、城市+省州
城市邮编不匹配('忽略省州')
录单限制公式:客户单号是ZC开头加11位数字格式的限制预报,录单限制公式,例子:ZC08416133699
运单属性('keHuDanHao!=null && keHuDanHao.matches("ZC\\d{11}")')
录单限制公式-进口商公司名 必填
运单属性("T(com.itdida.core.utils.StringUtils).isBlank(waybillExtraEntity.soldCompanyName)")
部分国家面单地址数有限,如太长需要拦截.
运单属性("(shouJianRenDiZhi1 != null ? shouJianRenDiZhi1.length() : 0) + " +
"(shouJianRenDiZhi2 != null ? shouJianRenDiZhi2.length() : 0) + " +
"(shouJianRenDiZhi3 != null ? shouJianRenDiZhi3.length() : 0) <= 65")
收件人地址1、2、3:存在
1 cat test(拦截)
2 test cat test(拦截)
运单含有关键词('shouJianRenDiZhiStr','cat test/test cat test')
客户的余额+客户档案固定额度-(入仓的已上架未核销的费用+出仓的已预报未核销的费用)<0,就要拦截
支持拦截下单或导入到已预报/确认预报,不支持拦截下单到草稿
(客户余额()+信用额度())>(已上架未核销合计()+未出仓未核销合计())