panhui 2 lat temu
rodzic
commit
1a0b9dd056

+ 24 - 0
src/form/entities/userField.entity.ts

@@ -0,0 +1,24 @@
+import { Column, CreateDateColumn, Entity, Index, PrimaryGeneratedColumn } from 'typeorm'
+
+@Entity()
+export class UserField {
+    @PrimaryGeneratedColumn()
+    id: number
+
+    @Column()
+    userId:number
+
+    @Column()
+    formId:number
+
+    //filedId
+    @Column()
+    filedId: number
+
+    //表单值
+    @Column()
+    value:string
+
+    @CreateDateColumn()
+    createdAt: Date
+}

+ 20 - 1
src/form/form.controller.ts

@@ -1,10 +1,12 @@
-import { Body, Controller, Delete, Get, Param, Post, Put } from '@nestjs/common'
+import { Body, Controller, Delete, Get, Param, Post, Put, Query } from '@nestjs/common'
 import { ApiBearerAuth, ApiTags } from '@nestjs/swagger'
 import { FormService } from './form.service'
 import { PageRequest } from 'src/common/dto/page-request'
 import { Form } from './entities/form.entity'
 import { FormDto } from './dto/form.dto'
 import { Field } from './entities/filed.entity'
+import { UserField } from './entities/userField.entity'
+import { number } from 'yup'
 
 @ApiTags('form')
 @ApiBearerAuth()
@@ -46,4 +48,21 @@ export class FormController {
     public async updateFiled(@Body() field: Partial<Field>) {
         return await this.formService.updateFiled(field)
     }
+
+    @Post('/userFileds')
+    public async createFileds(@Body() fileds: Array<Partial<UserField>>) {
+        return await this.formService.saveUserFileds(fileds)
+    }
+
+    @Get('/getUserFields')
+    public async getUserFields(@Query() { userId, orgId }) {
+
+        return await this.formService.getUserFields(userId, orgId)
+    }
+
+    @Get('/getUserFieldsByForm')
+    public async getUserFieldsByForm(@Query() { formId }) {
+
+        return await this.formService.getUserFieldsByForm(formId)
+    }
 }

+ 2 - 1
src/form/form.module.ts

@@ -4,9 +4,10 @@ import { FormService } from './form.service'
 import { Form } from './entities/form.entity'
 import { FormController } from './form.controller'
 import { Field } from './entities/filed.entity'
+import { UserField } from './entities/userField.entity'
 
 @Module({
-    imports: [TypeOrmModule.forFeature([Form, Field])],
+    imports: [TypeOrmModule.forFeature([Form, Field,UserField])],
     controllers: [FormController],
     providers: [FormService],
     exports: [FormService]

+ 69 - 1
src/form/form.service.ts

@@ -6,6 +6,7 @@ import { PageRequest } from '../common/dto/page-request'
 import { Form } from './entities/form.entity'
 import { FormDto } from './dto/form.dto'
 import { Field } from './entities/filed.entity'
+import { UserField } from './entities/userField.entity'
 
 @Injectable()
 export class FormService {
@@ -13,7 +14,9 @@ export class FormService {
         @InjectRepository(Form)
         private readonly formRepository: Repository<Form>,
         @InjectRepository(Field)
-        private readonly filedRepository: Repository<Field>
+        private readonly filedRepository: Repository<Field>,
+        @InjectRepository(UserField)
+        private readonly userFieldRepository: Repository<UserField>
     ) {}
 
     public async create(formDto: FormDto) {
@@ -88,4 +91,69 @@ export class FormService {
     async delete(id: number) {
         await this.formRepository.delete(id)
     }
+
+    async saveUserFileds(fields: Array<Partial<UserField>>) {
+        await fields.forEach(async (field) => {
+            await this.userFieldRepository.save(field)
+        })
+    }
+
+    async getUserFields(userId, orgId) {
+        const form = await this.formRepository.findOneBy({
+            orgId: orgId,
+            used: true
+        })
+        const filedsNum = await this.userFieldRepository.countBy({
+            formId: form.id,
+            userId: userId
+        })
+        if (filedsNum) {
+            //收集成功
+            return {
+                code: 1
+            }
+        } else {
+            const fileds = await this.getFileds(String(form.id))
+            //未填写返回表单
+            return {
+                code: 0,
+                form: form,
+                fileds: fileds
+            }
+        }
+    }
+
+    async getUserFieldsByForm(formId) {
+        const fileds = await this.getFileds(formId)
+        const filedsNum = await this.userFieldRepository.countBy({
+            formId: formId
+        })
+        let backFileds = <any>[]
+        if (filedsNum) {
+            const userFileds = await this.userFieldRepository.findBy({
+                formId: formId
+            })
+            let filedMap = new Map()
+            userFileds.forEach((userFiled) => {
+                if (filedMap.has(userFiled.userId)) {
+                    filedMap.set(userFiled.userId, {
+                        ...filedMap.get(userFiled.userId),
+                        [userFiled.filedId]: userFiled.value
+                    })
+                } else {
+                    filedMap.set(userFiled.userId, {
+                        userId: userFiled.userId,
+                        [userFiled.filedId]: userFiled.value,
+                        createdAt: userFiled.createdAt
+                    })
+                }
+            })
+            backFileds = [...filedMap.values()]
+            console.log(backFileds)
+        }
+        return {
+            fileds,
+            backFileds
+        }
+    }
 }