Sfoglia il codice sorgente

Merge branch 'master' of http://192.168.1.41:3000/SmartCost/SCCommon

lishihao 5 anni fa
parent
commit
f2c6756bb9

+ 2 - 0
types/src/interface/bill.ts

@@ -1,4 +1,5 @@
 import { BRType } from './base';
+import { IQuantityDetail } from './quantityDetail';
 
 export interface IJobContent {
   serialNo: number;
@@ -31,6 +32,7 @@ export interface IBill {
   name?: string;
   flag?: number; // 清单固定类别
   quantity?: number;
+  quantityDetails?: IQuantityDetail[]; // 工程量明细 -- 原先保存在另外的表中
   recharge?: string; // 补注
   ruleText?: string; // 工程量计算规则
   jobContent?: IJobContent[]; // 工作内容

+ 1 - 0
types/src/interface/index.ts

@@ -12,3 +12,4 @@ export * from './ration';
 export * from './bill';
 export * from './glj';
 export * from './option';
+export * from './quantityDetail';

+ 8 - 0
types/src/interface/quantityDetail.ts

@@ -0,0 +1,8 @@
+export interface IQuantityDetail {
+  ID: string;
+  name?: string;
+  regex?: string;
+  result?: number;
+  isSummation: boolean; // 0:false 1:true
+  referenceIndexes: number[];
+}

+ 2 - 2
types/src/interface/ration.ts

@@ -3,10 +3,10 @@ import {
   prefix,
   fromType,
   gljCreateType,
-  supplyType,
   createLocation,
   BRType,
 } from './base';
+import { IQuantityDetail } from './quantityDetail';
 
 export interface IStdRationChapter {
   rationRepId: number; // 标准库的属性
@@ -331,7 +331,7 @@ export interface IRation {
   // 定额子项
   rationGljList?: IRationGlj[]; // 定额工料机
   rationAssList?: IRationAss[]; // 辅助定额
-  quantityDetails?: any; // 工程量明细 -- 原先保存在另外的表中
+  quantityDetails?: IQuantityDetail[]; // 工程量明细 -- 原先保存在另外的表中
   rationCoeList?: IRationCoe[]; // 定额调整系数
   rationTemplate?: IRationTemplate; // 定额模板
   rationInstallList?: IRationInstall[]; // 定额安装增加

+ 2 - 2
util/package.json

@@ -1,7 +1,7 @@
 {
   "name": "@sc/util",
-  "version": "1.0.0",
-  "description": "4舍5入算法,防止浮点数计算不精确问题",
+  "version": "1.0.1",
+  "description": "共用的工具包",
   "main": "./dist/index.cjs.js",
   "module": "./dist/index.esm.js",
   "browser": "./dist/index.min.js",

+ 59 - 1
util/src/bill.ts

@@ -1,10 +1,23 @@
-import { IJobContent, IItemCharacter } from '@sc/types';
+import {
+  IJobContent,
+  IItemCharacter,
+  IStdBill,
+  IStdJobContent,
+  IStdItemCharacter,
+} from '@sc/types';
 
 interface IJobsAndCharacterText {
   jobContentText: string;
   itemCharacterText: string;
 }
 
+interface IJobContentMap {
+  [id: string]: IStdJobContent;
+}
+interface IItemCharacterMap {
+  [id: string]: IStdItemCharacter;
+}
+
 export interface IJobAndCharacter extends IJobsAndCharacterText {
   jobContents: IJobContent[];
   itemCharacters: IItemCharacter[];
@@ -32,3 +45,48 @@ export const getJobsAndCharacterText = (
   itemCharacterText = textArray.join('\n');
   return { jobContentText, itemCharacterText };
 };
+
+export const getJobContents = (
+  stdBill: IStdBill,
+  stdJobContenMap: IJobContentMap
+): IJobContent[] => {
+  const jobs: IJobContent[] = [];
+  let i = 1;
+  for (const j of stdBill.jobs) {
+    const job = stdJobContenMap[j.id];
+    if (job) {
+      jobs.push({ serialNo: i + 1, content: job.content, isChecked: true });
+      i += 1;
+    }
+  }
+
+  return jobs;
+};
+
+export const getItemCharacters = (
+  stdBill: IStdBill,
+  itemCharacterMap: IItemCharacterMap
+): IItemCharacter[] => {
+  const characters: IItemCharacter[] = [];
+  let i = 1;
+  for (const item of stdBill.items) {
+    const character = itemCharacterMap[item.id];
+    if (character) {
+      const newItem: IItemCharacter = {
+        serialNo: i + 1,
+        character: character.content,
+        eigenvalue: [],
+        isChecked: false,
+      };
+      const eigenvalues = character.itemValue;
+      for (let j = 0; j < eigenvalues.length; j += 1) {
+        const newValue = { value: eigenvalues[j].value, isSelected: false };
+        newItem.eigenvalue.push(newValue);
+      }
+      characters.push(newItem);
+      i += 1;
+    }
+  }
+
+  return characters;
+};

+ 1 - 0
util/src/index.ts

@@ -1 +1,2 @@
 export * from './math';
+export * from './bill';