!1763 拆单五金价格增加范围校验

pull/1743/MERGE
cf-erp 3 years ago committed by ChenX
parent 6fc1a10fa7
commit 2fc4bff5a3

@ -0,0 +1,47 @@
import { FileRule, RuleBuilder, RuleNumRange, RuleRequired, RuleStringLength } from "./Validate";
export const blockBuilder = new RuleBuilder();
blockBuilder.UseFiled(new FileRule('RoomName', '房名')
.AddRule(new RuleRequired())
.AddRule(new RuleStringLength(50)))
.UseFiled(new FileRule('BoxName', '柜名')
.AddRule(new RuleRequired())
.AddRule(new RuleStringLength(50)))
.UseFiled(new FileRule('BoardName', '板名称')
.AddRule(new RuleStringLength(50)))
.UseFiled(new FileRule('Material', '材料')
.AddRule(new RuleStringLength(50)))
.UseFiled(new FileRule('MaterialName', '材料名称')
.AddRule(new RuleStringLength(50)))
.UseFiled(new FileRule('Color', '颜色')
.AddRule(new RuleStringLength(50)))
.UseFiled(new FileRule('SealedLeft', '左封边')
.AddRule(new RuleRequired()))
.UseFiled(new FileRule('SealedRight', '右封边')
.AddRule(new RuleRequired()))
.UseFiled(new FileRule('SealedUp', '上封边')
.AddRule(new RuleRequired()))
.UseFiled(new FileRule('SealedDown', '下封边')
.AddRule(new RuleRequired()));
export const objectBuilder = new RuleBuilder();
objectBuilder.UseFiled(new FileRule('RoomName', '房名')
.AddRule(new RuleRequired())
.AddRule(new RuleStringLength(50)))
.UseFiled(new FileRule('BoxName', '柜名')
.AddRule(new RuleRequired())
.AddRule(new RuleStringLength(50)))
.UseFiled(new FileRule('Name', '名称')
.AddRule(new RuleStringLength(50)))
.UseFiled(new FileRule('Model', '型号')
.AddRule(new RuleStringLength(50)))
.UseFiled(new FileRule('Spec', '规格')
.AddRule(new RuleStringLength(50)))
.UseFiled(new FileRule('Brand', '品牌')
.AddRule(new RuleStringLength(50)))
.UseFiled(new FileRule('Factory', '厂家')
.AddRule(new RuleStringLength(50)))
.UseFiled(new FileRule('SalePrice', '五金价格')
.AddRule(new RuleNumRange(0, 99999999)))
.UseFiled(new FileRule('Num', '五金数量')
.AddRule(new RuleNumRange(0, 99999)))
.UseFiled(new FileRule('Remark', '备注')
.AddRule(new RuleStringLength(50)));

@ -17,14 +17,14 @@ import { IHardwareType } from "../../Production/Product";
import { AppConfirm } from "../../UI/Components/Common/Confirm"; import { AppConfirm } from "../../UI/Components/Common/Confirm";
import { AppToaster } from "../../UI/Components/Toaster"; import { AppToaster } from "../../UI/Components/Toaster";
import { BoardStore } from "../../UI/Store/BoardStore"; import { BoardStore } from "../../UI/Store/BoardStore";
import { blockBuilder, objectBuilder } from './CheckBuilder';
import { ErpView } from "./ErpView"; import { ErpView } from "./ErpView";
import { ExceedMind } from "./ExceedBlocksMind"; import { ExceedMind } from "./ExceedBlocksMind";
import { OrderDataBlock, WaveType } from "./Models/CadBlock"; import { OrderDataBlock, WaveType } from "./Models/CadBlock";
import { OrderDataObject } from './Models/CadObject';
import { ErpRouteInfo } from "./Models/ErpRouteInfo"; import { ErpRouteInfo } from "./Models/ErpRouteInfo";
import { ErpRoutes } from "./Models/ErpRoutes"; import { ErpRoutes } from "./Models/ErpRoutes";
import { ErpParseData } from "./ParseData"; import { ErpParseData } from "./ParseData";
import { CheckResult, FiledRule, RuleType, Validate } from "./Validate"; import { CheckResult } from "./Validate";
export class ChaiDan implements Command export class ChaiDan implements Command
{ {
@ -288,36 +288,12 @@ async function ExecChaiDan(chaiDanRoute: ErpRoutes)
} }
function CheckData(parseData: any): CheckResult function CheckData(parseData: any): CheckResult
{ {
let blockCheck = checkBlocks(parseData.blockList); let blockRes = blockBuilder.CheckRules(parseData.blockList);
if (blockCheck.result === false) return blockCheck; if (blockRes.result == false) return blockRes;
return checkObjects(parseData.objectList); let objectRes = objectBuilder.CheckRules(parseData.objectList);
} return objectRes;
function checkBlocks(blockList: OrderDataBlock[]): CheckResult
{
let blockRules: FiledRule[] = [];
blockRules.push({ filed: 'RoomName', name: '房名', [RuleType.Required]: true, [RuleType.Maxlength]: 50 });
blockRules.push({ filed: 'BoxName', name: '柜名', [RuleType.Required]: true, [RuleType.Maxlength]: 50 });
blockRules.push({ filed: 'BoardName', name: '板名称', [RuleType.Required]: false, [RuleType.Maxlength]: 50 });
blockRules.push({ filed: 'Material', name: '材料', [RuleType.Required]: false, [RuleType.Maxlength]: 50 });
blockRules.push({ filed: 'MaterialName', name: '材料名称', [RuleType.Required]: false, [RuleType.Maxlength]: 50 });
blockRules.push({ filed: 'Color', name: '颜色', [RuleType.Required]: false, [RuleType.Maxlength]: 50 });
let blockResult = Validate.CheckData(blockList, blockRules);
return blockResult;
}
function checkObjects(objectList: OrderDataObject[]): CheckResult
{
let objRules: FiledRule[] = [];
objRules.push({ filed: 'RoomName', name: '房名', [RuleType.Required]: true, [RuleType.Maxlength]: 50 });
objRules.push({ filed: 'BoxName', name: '柜名', [RuleType.Required]: true, [RuleType.Maxlength]: 50 });
objRules.push({ filed: 'Name', name: '名称', [RuleType.Required]: false, [RuleType.Maxlength]: 50 });
objRules.push({ filed: 'Model', name: '型号', [RuleType.Required]: false, [RuleType.Maxlength]: 50 });
objRules.push({ filed: 'Spec', name: '规格', [RuleType.Required]: false, [RuleType.Maxlength]: 50 });
objRules.push({ filed: 'Brand', name: '品牌', [RuleType.Required]: false, [RuleType.Maxlength]: 50 });
objRules.push({ filed: 'Factory', name: '厂家', [RuleType.Required]: false, [RuleType.Maxlength]: 50 });
objRules.push({ filed: 'Remark', name: '备注', [RuleType.Required]: false, [RuleType.Maxlength]: 150 });
let objResult = Validate.CheckData(objectList, objRules);
return objResult;
} }
async function DecomposeObject() async function DecomposeObject()
{ {
let selction = await GetProductsEntitys(); let selction = await GetProductsEntitys();

@ -1,55 +1,133 @@
export enum RuleType { Required = 'Required', Maxlength = 'Maxlength' } export enum RuleType { Required = 'Required', StringLength = 'StringLength', NumRange = 'NumRange' }
export interface FiledRule class RuleBase
{ {
filed: string; Filed: string;
name: string; FiledName: string;
[RuleType.Required]: boolean; value: object;
[RuleType.Maxlength]: number; IsValid(value)
{
return true;
} }
export interface CheckResult FormatErrorMessage()
{ {
result: boolean; return '';
msg: string; }
} }
export class Validate export class RuleRequired extends RuleBase
{ {
static CheckData(dataList: any[], filedRules: FiledRule[]): CheckResult IsValid(value)
{ {
let result = { result: true, msg: '' }; this.value = value;
for (const value of dataList) if (value == null || Object.is(value, NaN) || value.length == 0)
{
return false;
}
return true;
}
FormatErrorMessage()
{ {
for (const r of filedRules) return `字段:[${this.FiledName}:${this.value}]不能为空!`;
};
}
export class RuleStringLength extends RuleBase
{
constructor(maxlength: number)
{
super();
this.Maxlength = maxlength;
}
Maxlength: number;
IsValid(value)
{ {
if (r.Required) this.value = value;
if (value && value.length > this.Maxlength)
{ {
result = this.CheckRequired(value, r); return false;
if (result.result == false) return result; }
return true;
} }
if (r.Maxlength > 0) FormatErrorMessage()
{ {
result = this.CheckMaxLength(value, r); return `字段:[${this.FiledName}:${this.value}]超过了长度限制:${this.Maxlength}!`;
if (result.result == false) return result; };
} }
export class RuleNumRange extends RuleBase
{
constructor(min: number, max: number)
{
super();
this.Min = min;
this.Max = max;
} }
Min: number;
Max: number;
IsValid(value)
{
this.value = value;
if (value && !(Number(value) >= this.Min && Number(value) <= this.Max))
{
return false;
} }
return result;
return true;
} }
private static CheckRequired(value: any, filedRule: FiledRule): CheckResult FormatErrorMessage()
{ {
if (!value[filedRule.filed]) return `字段:[${this.FiledName}:${this.value}],数值需在:${this.Min}${this.Max}范围内!`;
};
}
export interface CheckResult
{ {
return { result: false, msg: `${filedRule.name}不能为空!` }; result: boolean;
msg: string;
} }
return { result: true, msg: '' }; export class FileRule
{
constructor(filed: string, filedName: string)
{
this.Filed = filed;
this.FiledName = filedName;
}
Filed: string;
FiledName: string;
RuleList: RuleBase[] = [];
AddRule(filedRule: RuleBase): FileRule
{
filedRule.Filed = this.Filed;
filedRule.FiledName = this.FiledName;
this.RuleList.push(filedRule);
return this;
}
}
export class RuleBuilder
{
private FiledList: FileRule[] = [];
UseFiled(filedRule: FileRule): RuleBuilder
{
this.FiledList.push(filedRule);
return this;
} }
private static CheckMaxLength(value: any, filedRule: FiledRule) CheckRules(dataList): CheckResult
{
let result = { result: true, msg: '' };
for (const value of dataList)
{
for (const fl of this.FiledList)
{
for (const r of fl.RuleList)
{ {
if (value[filedRule.filed] && value[filedRule.filed].length > filedRule.Maxlength) let res = r.IsValid(value[r.Filed]);
if (res == false)
{ {
return { result: false, msg: `${filedRule.name}:[${value[filedRule.filed]}],超过长度限制:${filedRule.Maxlength}!` }; return { result: res, msg: r.FormatErrorMessage() };
} }
return { result: true, msg: '' }; }
}
}
return result;
} }
} }

Loading…
Cancel
Save