import { construct, destruct } from "@aximario/json-tree"; import _ from "lodash"; import { IElemElemResponse } from "../elem/IElemElemResponse"; import type { IGzjgGzlmResponseGzlmPara } from "./IGzjgGzlmResponseGzlmPara"; import { TGzjgGzlmResponseGzlmPara } from "./IGzjgGzlmResponseGzlmPara"; import { TGzlmLiteResponse} from "./IGzlmLiteResponse.ts"; // #工资栏目 export interface IGzjgGzlmResponse { whoBuild: number; //#PK userIndx: number; //#PK gzjgIndx: number; //#PK gzlmFlid: number; //#PK elemName: string; //#指标要素 parentID: number; parentCD: string | undefined; dataLevl: number; dataStat: number; dataHide: number; dataOrdr: number; dataFrom: number; dataDate: number; dataTime: number; mastName: string; mastGUID: string; createBy: string; createAt: number; updateBy: string; updateAt: number; deleteBy: string; deleteAt: number; listElem: IElemElemResponse[]; gzjgName: string; gzjgMain: number; gzlmFlbh: number; //#栏目编号 gzlmFllx: number; //#栏目类型 0:数值; gzlmFlws: number; //#小数位数 gzlmFljs: number; //#是否计算 gzlmFllj: number; //#是否累计 gzlmFlgq: number; //#是否挂起 gzlmFlkd: number; //#栏目宽度 gzlmFldq: number; //#栏目对齐 对齐方式{1:居左,2:居中,3:居右} gzlmTjlx: number; //@统计类型(字段作废) gzlmFlmc: string; //#栏目名称 entityID: string; //#唯一标识 dictType: number; //#字典类型 canInput: number; //#允许编辑 gzlmQzgs: string; //#取值公式 gzlmLxgs: number; //#列向公式 formType: string; //#表单形式 formArea: string; //#表单区块 inFormat: string; //#显示格式 gzlmQslm: number; gzlmTotal: number; gzlmPara: string; //#参数约定 gzlmParaConv: IGzjgGzlmResponseGzlmPara; gzlmLmbm: string; //#栏目别名 gzlmFlbm: string; //#栏目编号 typTotal: number; //#统计类型{1:应发合计,2:应扣合计,3:实发合计} dataGUID: string; isLasted: number; //#是否子级{1:是;0:否} expdType: number; //#支出科目 expdTypc: string; //#支出科目编码 expdTypn: string; //#支出科目名称 heavyVal: number; //#待扣优先 copyJoin: number; //#参与复制 notEmpty: number; //#非空栏目 useQuery: number; //#开放查询 jsScript: string; //#js运行脚本 sql4Load: string; //#sql运行脚本 gnkmMain: number; gnkmCode: string; gnkmName: string; bmkmMain: number; bmkmCode: string; bmkmName: string; ysxmMain: number; ysxmCode: string; ysxmName: string; // 虚拟字段 colIndex: number; // 报表工资栏目显示起始位置 dynamicField: string; dynamicDict: any[]; id: number; children: IGzjgGzlmResponse[]; } export class TGzjgGzlmResponse implements IGzjgGzlmResponse { whoBuild: number = 0; userIndx: number = 0; gzjgIndx: number = 0; gzlmFlid: number = 0; // 主键序号 elemName: string = ""; parentID: number = 0; parentCD: string | undefined = undefined; dataLevl: number = 0; dataStat: number = 1; dataHide: number = 0; dataOrdr: number = 0; dataFrom: number = 0; dataDate: number = 0; dataTime: number = 0; mastName: string = ""; mastGUID: string = ""; createBy: string = ""; createAt: number = 0; updateBy: string = ""; updateAt: number = 0; deleteBy: string = ""; deleteAt: number = 0; gzlmFlbh: number = 0; gzlmFllx: number = 0; gzlmFlws: number = 0; gzlmFljs: number = 0; gzlmFllj: number = 0; gzlmFlgq: number = 0; gzlmFlkd: number = 0; gzlmFldq: number = 0; gzlmTjlx: number = 0; gzlmFlmc: string = ""; entityID: string = ""; dictType: number = 0; canInput: number = 0; gzlmQzgs: string = ""; gzlmLxgs: number = 0; formType: string = ""; formArea: string = ""; inFormat: string = ""; gzlmQslm: number = 0; gzlmTotal: number = 0; gzlmPara: string = ""; gzjgName: string = ""; gzjgMain: number = 0; gzlmParaConv: IGzjgGzlmResponseGzlmPara = new TGzjgGzlmResponseGzlmPara(); gzlmLmbm: string = ""; gzlmFlbm: string = ""; typTotal: number = 0; dataGUID: string = ""; listElem: IElemElemResponse[] = []; isLasted: number = 0; jsScript: string = ""; sql4Load: string = ""; gzlmFlfz: number = 0; expdType: number = 0; expdTypc: string = ""; expdTypn: string = ""; colIndex: number = 0; heavyVal: number = 0; // #待扣优先 copyJoin: number = 0; notEmpty: number = 0; useQuery: number = 0; gnkmMain: number = 0; gnkmCode: string = ""; gnkmName: string = ""; bmkmMain: number = 0; bmkmCode: string = ""; bmkmName: string = ""; ysxmMain: number = 0; ysxmCode: string = ""; ysxmName: string = ""; dynamicField: string = ""; dynamicDict: any[] = []; id: number = 0; children = []; constructor(data: Partial = {}) { if (data) { _.merge(this, _.pick(data, Object.keys(this))); } } static parseJson(gzlmPara: string) { const defaultGzlmPara = new TGzjgGzlmResponseGzlmPara(); if (_.isEmpty(gzlmPara)) { return defaultGzlmPara; } try { const obj = JSON.parse(gzlmPara) as TGzjgGzlmResponseGzlmPara; return _.merge(defaultGzlmPara, obj); } catch (_e) { } return defaultGzlmPara; } public static toTree(listGzlm: IGzjgGzlmResponse[]) { return construct(_.cloneDeep(listGzlm), { id: "gzlmFlid", pid: "parentID", children: "children" }) as IGzjgGzlmResponse[]; } public static toList(listGzlm: IGzjgGzlmResponse[]) { return destruct(_.cloneDeep(listGzlm), { id: "gzlmFlid", pid: "parentID", children: "children" }) as IGzjgGzlmResponse[]; } static toGzlmLite(listPara: IGzjgGzlmResponse[]) { return listPara .filter((element): element is IGzjgGzlmResponse => !_.isNil(element)) .map((element) => new TGzlmLiteResponse(element)); } }