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

Loading…
Cancel
Save