!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 { AppToaster } from "../../UI/Components/Toaster";
import { BoardStore } from "../../UI/Store/BoardStore";
import { blockBuilder, objectBuilder } from './CheckBuilder';
import { ErpView } from "./ErpView";
import { ExceedMind } from "./ExceedBlocksMind";
import { OrderDataBlock, WaveType } from "./Models/CadBlock";
import { OrderDataObject } from './Models/CadObject';
import { ErpRouteInfo } from "./Models/ErpRouteInfo";
import { ErpRoutes } from "./Models/ErpRoutes";
import { ErpParseData } from "./ParseData";
import { CheckResult, FiledRule, RuleType, Validate } from "./Validate";
import { CheckResult } from "./Validate";
export class ChaiDan implements Command
{
@ -288,36 +288,12 @@ async function ExecChaiDan(chaiDanRoute: ErpRoutes)
}
function CheckData(parseData: any): CheckResult
{
let blockCheck = checkBlocks(parseData.blockList);
if (blockCheck.result === false) return blockCheck;
return checkObjects(parseData.objectList);
}
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;
let blockRes = blockBuilder.CheckRules(parseData.blockList);
if (blockRes.result == false) return blockRes;
let objectRes = objectBuilder.CheckRules(parseData.objectList);
return objectRes;
}
async function DecomposeObject()
{
let selction = await GetProductsEntitys();

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

Loading…
Cancel
Save