Commit 6dd1b9bfa471041057e74bf76ff12af15f7c2dfe

Authored by 李宇
2 parents 91d339c2 2164125c

Merge branch 'master' of http://39.98.150.180/antissoft/lvqianmeiye_ERP

Showing 73 changed files with 2287 additions and 2421 deletions
antis-ncc-admin/.env.development
@@ -3,5 +3,5 @@ @@ -3,5 +3,5 @@
3 VUE_CLI_BABEL_TRANSPILE_MODULES = true 3 VUE_CLI_BABEL_TRANSPILE_MODULES = true
4 VUE_APP_BASE_API = 'http://lvqian.antissoft.com' 4 VUE_APP_BASE_API = 'http://lvqian.antissoft.com'
5 # VUE_APP_BASE_API = 'http://erp_test.lvqianmeiye.com' 5 # VUE_APP_BASE_API = 'http://erp_test.lvqianmeiye.com'
6 -# VUE_APP_BASE_API = 'http://localhost:2011' 6 +VUE_APP_BASE_API = 'http://localhost:2011'
7 VUE_APP_BASE_WSS = 'ws://192.168.110.45:2011/websocket' 7 VUE_APP_BASE_WSS = 'ws://192.168.110.45:2011/websocket'
antis-ncc-admin/src/views/lqXhmxb/ExportBox.vue deleted
1 -<template>  
2 - <el-dialog title="导出数据" :close-on-click-modal="false" :visible.sync="visible"  
3 - class="NCC-dialog NCC-dialog_center" lock-scroll width="600px">  
4 - <el-form label-position="top" label-width="80px">  
5 - <el-form-item label="数据选择">  
6 - <el-radio-group v-model="type">  
7 - <el-radio :label="0">当前页面数据</el-radio>  
8 - <el-radio :label="1">全部页面数据</el-radio>  
9 - </el-radio-group>  
10 - </el-form-item>  
11 - <el-form-item label="导出字段">  
12 - <el-checkbox :indeterminate="isIndeterminate" v-model="checkAll"  
13 - @change="handleCheckAllChange">全选</el-checkbox>  
14 - <el-checkbox-group v-model="columns" @change="handleCheckedChange">  
15 - <el-checkbox v-for="item in columnList" :label="item.prop" :key="item.prop">  
16 - {{item.label}}  
17 - </el-checkbox>  
18 - </el-checkbox-group>  
19 - </el-form-item>  
20 - </el-form>  
21 - <span slot="footer" class="dialog-footer">  
22 - <el-button @click="visible=false">取 消</el-button>  
23 - <el-button type="primary" @click="downLoad">导 出</el-button>  
24 - </span>  
25 - </el-dialog>  
26 -</template>  
27 -  
28 -<script>  
29 -export default {  
30 - data() {  
31 - return {  
32 - visible: false,  
33 - btnLoading: false,  
34 - type: 0,  
35 - columns: [],  
36 - checkAll: true,  
37 - isIndeterminate: false,  
38 - columnList: []  
39 - }  
40 - },  
41 - methods: {  
42 - init(columnList) {  
43 - this.visible = true  
44 - this.columnList = columnList  
45 - this.columns = columnList.map(o => o.prop)  
46 - },  
47 - handleCheckAllChange(val) {  
48 - this.columns = val ? this.columnList.map(o => o.prop) : [];  
49 - this.isIndeterminate = false;  
50 - },  
51 - handleCheckedChange(value) {  
52 - let checkedCount = value.length;  
53 - this.checkAll = checkedCount === this.columnList.length;  
54 - this.isIndeterminate = checkedCount > 0 && checkedCount < this.columnList.length;  
55 - },  
56 - downLoad() {  
57 - this.$emit('download', { dataType: this.type, selectKey: this.columns.join(',') })  
58 - }  
59 - }  
60 -}  
61 -</script>  
62 -<style lang="scss" scoped>  
63 ->>> .el-dialog__body {  
64 - padding: 20px !important;  
65 -}  
66 -</style>  
67 \ No newline at end of file 0 \ No newline at end of file
antis-ncc-admin/src/views/lqXhmxb/Form.vue deleted
1 -<template>  
2 - <el-dialog :title="!dataForm.id ? '新建' : isDetail ? '详情':'编辑'" :close-on-click-modal="false" :visible.sync="visible" class="NCC-dialog NCC-dialog_center" lock-scroll width="600px">  
3 - <el-row :gutter="15" class="" >  
4 - <el-form ref="elForm" :model="dataForm" size="small" label-width="100px" label-position="right" :disabled="!!isDetail" :rules="rules">  
5 - <el-col :span="24" v-if="false" >  
6 - <el-form-item label="消耗编号" prop="id">  
7 - <el-input v-model="dataForm.id" placeholder="请输入" clearable :style='{"width":"100%"}' >  
8 - </el-input>  
9 - </el-form-item>  
10 - </el-col>  
11 - <el-col :span="24">  
12 - <el-form-item label="门店编号" prop="mdbh">  
13 - <el-input v-model="dataForm.mdbh" placeholder="请输入" clearable :style='{"width":"100%"}' >  
14 - </el-input>  
15 - </el-form-item>  
16 - </el-col>  
17 - <el-col :span="24">  
18 - <el-form-item label="门店名称" prop="mdmc">  
19 - <el-input v-model="dataForm.mdmc" placeholder="请输入" clearable :style='{"width":"100%"}' >  
20 - </el-input>  
21 - </el-form-item>  
22 - </el-col>  
23 - <el-col :span="24">  
24 - <el-form-item label="部门编号" prop="bmbh">  
25 - <el-input v-model="dataForm.bmbh" placeholder="请输入" clearable :style='{"width":"100%"}' >  
26 - </el-input>  
27 - </el-form-item>  
28 - </el-col>  
29 - <el-col :span="24">  
30 - <el-form-item label="部门名称" prop="bmmc">  
31 - <el-input v-model="dataForm.bmmc" placeholder="请输入" clearable :style='{"width":"100%"}' >  
32 - </el-input>  
33 - </el-form-item>  
34 - </el-col>  
35 - <el-col :span="24">  
36 - <el-form-item label="员工编号" prop="ygbh">  
37 - <el-input v-model="dataForm.ygbh" placeholder="请输入" clearable :style='{"width":"100%"}' >  
38 - </el-input>  
39 - </el-form-item>  
40 - </el-col>  
41 - <el-col :span="24">  
42 - <el-form-item label="员工名称" prop="ygmc">  
43 - <el-input v-model="dataForm.ygmc" placeholder="请输入" clearable :style='{"width":"100%"}' >  
44 - </el-input>  
45 - </el-form-item>  
46 - </el-col>  
47 - <el-col :span="24">  
48 - <el-form-item label="项目数" prop="xms">  
49 - <el-input v-model="dataForm.xms" placeholder="请输入" clearable :style='{"width":"100%"}' >  
50 - </el-input>  
51 - </el-form-item>  
52 - </el-col>  
53 - <el-col :span="24">  
54 - <el-form-item label="消耗" prop="xh">  
55 - <el-input v-model="dataForm.xh" placeholder="请输入" clearable :style='{"width":"100%"}' >  
56 - </el-input>  
57 - </el-form-item>  
58 - </el-col>  
59 - <el-col :span="24">  
60 - <el-form-item label="手工" prop="sg">  
61 - <el-input v-model="dataForm.sg" placeholder="请输入" clearable :style='{"width":"100%"}' >  
62 - </el-input>  
63 - </el-form-item>  
64 - </el-col>  
65 - <el-col :span="24">  
66 - <el-form-item label="其它手工1" prop="qtsg1">  
67 - <el-input v-model="dataForm.qtsg1" placeholder="请输入" clearable :style='{"width":"100%"}' >  
68 - </el-input>  
69 - </el-form-item>  
70 - </el-col>  
71 - <el-col :span="24">  
72 - <el-form-item label="其它手工2" prop="qtsg2">  
73 - <el-input v-model="dataForm.qtsg2" placeholder="请输入" clearable :style='{"width":"100%"}' >  
74 - </el-input>  
75 - </el-form-item>  
76 - </el-col>  
77 - <el-col :span="24">  
78 - <el-form-item label="其它手工3" prop="qtsg3">  
79 - <el-input v-model="dataForm.qtsg3" placeholder="请输入" clearable :style='{"width":"100%"}' >  
80 - </el-input>  
81 - </el-form-item>  
82 - </el-col>  
83 - <el-col :span="24">  
84 - <el-form-item label="手工合计" prop="sghj">  
85 - <el-input v-model="dataForm.sghj" placeholder="请输入" clearable :style='{"width":"100%"}' >  
86 - </el-input>  
87 - </el-form-item>  
88 - </el-col>  
89 - </el-form>  
90 - </el-row>  
91 - <span slot="footer" class="dialog-footer">  
92 - <el-button @click="visible = false">取 消</el-button>  
93 - <el-button type="primary" @click="dataFormSubmit()" v-if="!isDetail">确 定</el-button>  
94 - </span>  
95 - </el-dialog>  
96 -</template>  
97 -<script>  
98 - import request from '@/utils/request'  
99 - import { getDictionaryDataSelector } from '@/api/systemData/dictionary'  
100 - import { previewDataInterface } from '@/api/systemData/dataInterface'  
101 - export default {  
102 - components: {},  
103 - props: [],  
104 - data() {  
105 - return {  
106 - loading: false,  
107 - visible: false,  
108 - isDetail: false,  
109 - dataForm: {  
110 - id:'',  
111 - id:undefined,  
112 - mdbh:undefined,  
113 - mdmc:undefined,  
114 - bmbh:undefined,  
115 - bmmc:undefined,  
116 - ygbh:undefined,  
117 - ygmc:undefined,  
118 - xms:undefined,  
119 - xh:undefined,  
120 - sg:undefined,  
121 - qtsg1:undefined,  
122 - qtsg2:undefined,  
123 - qtsg3:undefined,  
124 - sghj:undefined,  
125 - },  
126 - rules: {  
127 - },  
128 - }  
129 - },  
130 - computed: {},  
131 - watch: {},  
132 - created() {  
133 - },  
134 - mounted() {  
135 - },  
136 - methods: {  
137 - goBack() {  
138 - this.$emit('refresh')  
139 - },  
140 - init(id, isDetail) {  
141 - this.dataForm.id = id || 0;  
142 - this.visible = true;  
143 - this.isDetail = isDetail || false;  
144 - this.$nextTick(() => {  
145 - this.$refs['elForm'].resetFields();  
146 - if (this.dataForm.id) {  
147 - request({  
148 - url: '/api/Extend/LqXhmxb/' + this.dataForm.id,  
149 - method: 'get'  
150 - }).then(res =>{  
151 - this.dataForm = res.data;  
152 - })  
153 - }  
154 - })  
155 - },  
156 - dataFormSubmit() {  
157 - this.$refs['elForm'].validate((valid) => {  
158 - if (valid) {  
159 - if (!this.dataForm.id) {  
160 - request({  
161 - url: `/api/Extend/LqXhmxb`,  
162 - method: 'post',  
163 - data: this.dataForm,  
164 - }).then((res) => {  
165 - this.$message({  
166 - message: res.msg,  
167 - type: 'success',  
168 - duration: 1000,  
169 - onClose: () => {  
170 - this.visible = false,  
171 - this.$emit('refresh', true)  
172 - }  
173 - })  
174 - })  
175 - } else {  
176 - request({  
177 - url: '/api/Extend/LqXhmxb/' + this.dataForm.id,  
178 - method: 'PUT',  
179 - data: this.dataForm  
180 - }).then((res) => {  
181 - this.$message({  
182 - message: res.msg,  
183 - type: 'success',  
184 - duration: 1000,  
185 - onClose: () => {  
186 - this.visible = false  
187 - this.$emit('refresh', true)  
188 - }  
189 - })  
190 - })  
191 - }  
192 - }  
193 - })  
194 - },  
195 - }  
196 - }  
197 -</script>  
antis-ncc-admin/src/views/lqXhmxb/index.vue deleted
1 -<template>  
2 - <div class="NCC-common-layout">  
3 - <div class="NCC-common-layout-center">  
4 - <el-row class="NCC-common-search-box" :gutter="16">  
5 - <el-form @submit.native.prevent>  
6 - <el-col :span="6">  
7 - <el-form-item label="消耗编号">  
8 - <el-input v-model="query.id" placeholder="消耗编号" clearable />  
9 - </el-form-item>  
10 - </el-col>  
11 - <el-col :span="6">  
12 - <el-form-item label="门店编号">  
13 - <el-input v-model="query.mdbh" placeholder="门店编号" clearable />  
14 - </el-form-item>  
15 - </el-col>  
16 - <el-col :span="6">  
17 - <el-form-item label="门店名称">  
18 - <el-input v-model="query.mdmc" placeholder="门店名称" clearable />  
19 - </el-form-item>  
20 - </el-col>  
21 - <template v-if="showAll">  
22 - <el-col :span="6">  
23 - <el-form-item label="部门编号">  
24 - <el-input v-model="query.bmbh" placeholder="部门编号" clearable />  
25 - </el-form-item>  
26 - </el-col>  
27 - <el-col :span="6">  
28 - <el-form-item label="部门名称">  
29 - <el-input v-model="query.bmmc" placeholder="部门名称" clearable />  
30 - </el-form-item>  
31 - </el-col>  
32 - <el-col :span="6">  
33 - <el-form-item label="员工编号">  
34 - <el-input v-model="query.ygbh" placeholder="员工编号" clearable />  
35 - </el-form-item>  
36 - </el-col>  
37 - <el-col :span="6">  
38 - <el-form-item label="员工名称">  
39 - <el-input v-model="query.ygmc" placeholder="员工名称" clearable />  
40 - </el-form-item>  
41 - </el-col>  
42 - <el-col :span="6">  
43 - <el-form-item label="项目数">  
44 - <el-input v-model="query.xms" placeholder="项目数" clearable />  
45 - </el-form-item>  
46 - </el-col>  
47 - <el-col :span="6">  
48 - <el-form-item label="消耗">  
49 - <el-input v-model="query.xh" placeholder="消耗" clearable />  
50 - </el-form-item>  
51 - </el-col>  
52 - <el-col :span="6">  
53 - <el-form-item label="手工">  
54 - <el-input v-model="query.sg" placeholder="手工" clearable />  
55 - </el-form-item>  
56 - </el-col>  
57 - <el-col :span="6">  
58 - <el-form-item label="其它手工1">  
59 - <el-input v-model="query.qtsg1" placeholder="其它手工1" clearable />  
60 - </el-form-item>  
61 - </el-col>  
62 - <el-col :span="6">  
63 - <el-form-item label="其它手工2">  
64 - <el-input v-model="query.qtsg2" placeholder="其它手工2" clearable />  
65 - </el-form-item>  
66 - </el-col>  
67 - <el-col :span="6">  
68 - <el-form-item label="其它手工3">  
69 - <el-input v-model="query.qtsg3" placeholder="其它手工3" clearable />  
70 - </el-form-item>  
71 - </el-col>  
72 - <el-col :span="6">  
73 - <el-form-item label="手工合计">  
74 - <el-input v-model="query.sghj" placeholder="手工合计" clearable />  
75 - </el-form-item>  
76 - </el-col>  
77 - </template>  
78 - <el-col :span="6">  
79 - <el-form-item>  
80 - <el-button type="primary" icon="el-icon-search" @click="search()">查询</el-button>  
81 - <el-button icon="el-icon-refresh-right" @click="reset()">重置</el-button>  
82 - <el-button type="text" icon="el-icon-arrow-down" @click="showAll=true" v-if="!showAll">展开</el-button>  
83 - <el-button type="text" icon="el-icon-arrow-up" @click="showAll=false" v-else>收起</el-button>  
84 - </el-form-item>  
85 - </el-col>  
86 - </el-form>  
87 - </el-row>  
88 - <div class="NCC-common-layout-main NCC-flex-main">  
89 - <div class="NCC-common-head">  
90 - <div>  
91 - <el-button type="primary" icon="el-icon-plus" @click="addOrUpdateHandle()">新增</el-button>  
92 - <el-button type="text" icon="el-icon-download" @click="exportData()">导出</el-button>  
93 - <el-button type="text" icon="el-icon-delete" @click="handleBatchRemoveDel()">批量删除</el-button>  
94 - </div>  
95 - <div class="NCC-common-head-right">  
96 - <el-tooltip effect="dark" content="刷新" placement="top">  
97 - <el-link icon="icon-ym icon-ym-Refresh NCC-common-head-icon" :underline="false" @click="reset()" />  
98 - </el-tooltip>  
99 - <screenfull isContainer />  
100 - </div>  
101 - </div>  
102 - <NCC-table v-loading="listLoading" :data="list" has-c @selection-change="handleSelectionChange">  
103 - <el-table-column prop="id" label="消耗编号" align="left" />  
104 - <el-table-column prop="mdbh" label="门店编号" align="left" />  
105 - <el-table-column prop="mdmc" label="门店名称" align="left" />  
106 - <el-table-column prop="bmbh" label="部门编号" align="left" />  
107 - <el-table-column prop="bmmc" label="部门名称" align="left" />  
108 - <el-table-column prop="ygbh" label="员工编号" align="left" />  
109 - <el-table-column prop="ygmc" label="员工名称" align="left" />  
110 - <el-table-column prop="xms" label="项目数" align="left" />  
111 - <el-table-column prop="xh" label="消耗" align="left" />  
112 - <el-table-column prop="sg" label="手工" align="left" />  
113 - <el-table-column prop="qtsg1" label="其它手工1" align="left" />  
114 - <el-table-column prop="qtsg2" label="其它手工2" align="left" />  
115 - <el-table-column prop="qtsg3" label="其它手工3" align="left" />  
116 - <el-table-column prop="sghj" label="手工合计" align="left" />  
117 - <el-table-column label="操作" fixed="right" width="100">  
118 - <template slot-scope="scope">  
119 - <el-button type="text" @click="addOrUpdateHandle(scope.row.id)" >编辑</el-button>  
120 - <el-button type="text" @click="handleDel(scope.row.id)" class="NCC-table-delBtn" >删除</el-button>  
121 - </template>  
122 - </el-table-column>  
123 - </NCC-table>  
124 - <pagination :total="total" :page.sync="listQuery.currentPage" :limit.sync="listQuery.pageSize" @pagination="initData" />  
125 - </div>  
126 - </div>  
127 - <NCC-Form v-if="formVisible" ref="NCCForm" @refresh="refresh" />  
128 - <ExportBox v-if="exportBoxVisible" ref="ExportBox" @download="download" />  
129 - </div>  
130 -</template>  
131 -<script>  
132 - import request from '@/utils/request'  
133 - import { getDictionaryDataSelector } from '@/api/systemData/dictionary'  
134 - import NCCForm from './Form'  
135 - import ExportBox from './ExportBox'  
136 - import { previewDataInterface } from '@/api/systemData/dataInterface'  
137 - export default {  
138 - components: { NCCForm, ExportBox },  
139 - data() {  
140 - return {  
141 - showAll: false,  
142 - query: {  
143 - id:undefined,  
144 - mdbh:undefined,  
145 - mdmc:undefined,  
146 - bmbh:undefined,  
147 - bmmc:undefined,  
148 - ygbh:undefined,  
149 - ygmc:undefined,  
150 - xms:undefined,  
151 - xh:undefined,  
152 - sg:undefined,  
153 - qtsg1:undefined,  
154 - qtsg2:undefined,  
155 - qtsg3:undefined,  
156 - sghj:undefined,  
157 - },  
158 - list: [],  
159 - listLoading: true,  
160 - multipleSelection: [], total: 0,  
161 - listQuery: {  
162 - currentPage: 1,  
163 - pageSize: 20,  
164 - sort: "desc",  
165 - sidx: "",  
166 - },  
167 - formVisible: false,  
168 - exportBoxVisible: false,  
169 - columnList: [  
170 - { prop: 'id', label: '消耗编号' },  
171 - { prop: 'mdbh', label: '门店编号' },  
172 - { prop: 'mdmc', label: '门店名称' },  
173 - { prop: 'bmbh', label: '部门编号' },  
174 - { prop: 'bmmc', label: '部门名称' },  
175 - { prop: 'ygbh', label: '员工编号' },  
176 - { prop: 'ygmc', label: '员工名称' },  
177 - { prop: 'xms', label: '项目数' },  
178 - { prop: 'xh', label: '消耗' },  
179 - { prop: 'sg', label: '手工' },  
180 - { prop: 'qtsg1', label: '其它手工1' },  
181 - { prop: 'qtsg2', label: '其它手工2' },  
182 - { prop: 'qtsg3', label: '其它手工3' },  
183 - { prop: 'sghj', label: '手工合计' },  
184 - ],  
185 - }  
186 - },  
187 - computed: {},  
188 - created() {  
189 - this.initData()  
190 - },  
191 - methods: {  
192 - initData() {  
193 - this.listLoading = true;  
194 - let _query = {  
195 - ...this.listQuery,  
196 - ...this.query  
197 - };  
198 - let query = {}  
199 - for (let key in _query) {  
200 - if (Array.isArray(_query[key])) {  
201 - query[key] = _query[key].join()  
202 - } else {  
203 - query[key] = _query[key]  
204 - }  
205 - }  
206 - request({  
207 - url: `/api/Extend/LqXhmxb`,  
208 - method: 'GET',  
209 - data: query  
210 - }).then(res => {  
211 - this.list = res.data.list  
212 - this.total = res.data.pagination.total  
213 - this.listLoading = false  
214 - })  
215 - },  
216 - handleDel(id) {  
217 - this.$confirm('此操作将永久删除该数据, 是否继续?', '提示', {  
218 - type: 'warning'  
219 - }).then(() => {  
220 - request({  
221 - url: `/api/Extend/LqXhmxb/${id}`,  
222 - method: 'DELETE'  
223 - }).then(res => {  
224 - this.$message({  
225 - type: 'success',  
226 - message: res.msg,  
227 - onClose: () => {  
228 - this.initData()  
229 - }  
230 - });  
231 - })  
232 - }).catch(() => {  
233 - });  
234 - },  
235 - handleSelectionChange(val) {  
236 - const res = val.map(item => item.id)  
237 - this.multipleSelection = res  
238 - },  
239 - handleBatchRemoveDel() {  
240 - if (!this.multipleSelection.length) {  
241 - this.$message({  
242 - type: 'error',  
243 - message: '请选择一条数据',  
244 - duration: 1500,  
245 - })  
246 - return  
247 - }  
248 - const ids = this.multipleSelection  
249 - this.$confirm('您确定要删除这些数据吗, 是否继续?', '提示', {  
250 - type: 'warning'  
251 - }).then(() => {  
252 - request({  
253 - url: `/api/Extend/LqXhmxb/batchRemove`,  
254 - method: 'POST',  
255 - data: ids ,  
256 - }).then(res => {  
257 - this.$message({  
258 - type: 'success',  
259 - message: res.msg,  
260 - onClose: () => {  
261 - this.initData()  
262 - }  
263 - });  
264 - })  
265 - }).catch(() => { })  
266 - },  
267 - addOrUpdateHandle(id, isDetail) {  
268 - this.formVisible = true  
269 - this.$nextTick(() => {  
270 - this.$refs.NCCForm.init(id, isDetail)  
271 - })  
272 - },  
273 - exportData() {  
274 - this.exportBoxVisible = true  
275 - this.$nextTick(() => {  
276 - this.$refs.ExportBox.init(this.columnList)  
277 - })  
278 - },  
279 - download(data) {  
280 - let query = { ...data, ...this.listQuery, ...this.query }  
281 - request({  
282 - url: `/api/Extend/LqXhmxb/Actions/Export`,  
283 - method: 'GET',  
284 - data: query  
285 - }).then(res => {  
286 - if (!res.data.url) return  
287 - window.location.href = this.define.comUrl + res.data.url  
288 - this.$refs.ExportBox.visible = false  
289 - this.exportBoxVisible = false  
290 - })  
291 - },  
292 - search() {  
293 - this.listQuery = {  
294 - currentPage: 1,  
295 - pageSize: 20,  
296 - sort: "desc",  
297 - sidx: "",  
298 - }  
299 - this.initData()  
300 - },  
301 - refresh(isrRefresh) {  
302 - this.formVisible = false  
303 - if (isrRefresh) this.reset()  
304 - },  
305 - reset() {  
306 - for (let key in this.query) {  
307 - this.query[key] = undefined  
308 - }  
309 - this.listQuery = {  
310 - currentPage: 1,  
311 - pageSize: 20,  
312 - sort: "desc",  
313 - sidx: "",  
314 - }  
315 - this.initData()  
316 - }  
317 - }  
318 - }  
319 -</script>  
320 \ No newline at end of file 0 \ No newline at end of file
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqHytkHytk/LqHytkHytkListOutput.cs
@@ -11,72 +11,72 @@ namespace NCC.Extend.Entitys.Dto.LqHytkHytk @@ -11,72 +11,72 @@ namespace NCC.Extend.Entitys.Dto.LqHytkHytk
11 /// 退卡编号 11 /// 退卡编号
12 /// </summary> 12 /// </summary>
13 public string id { get; set; } 13 public string id { get; set; }
14 - 14 +
15 /// <summary> 15 /// <summary>
16 /// 门店 16 /// 门店
17 /// </summary> 17 /// </summary>
18 public string md { get; set; } 18 public string md { get; set; }
19 - 19 +
20 /// <summary> 20 /// <summary>
21 /// 门店编号 21 /// 门店编号
22 /// </summary> 22 /// </summary>
23 public string mdbh { get; set; } 23 public string mdbh { get; set; }
24 - 24 +
25 /// <summary> 25 /// <summary>
26 /// 门店名称 26 /// 门店名称
27 /// </summary> 27 /// </summary>
28 public string mdmc { get; set; } 28 public string mdmc { get; set; }
29 - 29 +
30 /// <summary> 30 /// <summary>
31 /// 会员 31 /// 会员
32 /// </summary> 32 /// </summary>
33 public string hy { get; set; } 33 public string hy { get; set; }
34 - 34 +
35 /// <summary> 35 /// <summary>
36 /// 会员姓名 36 /// 会员姓名
37 /// </summary> 37 /// </summary>
38 public string hymc { get; set; } 38 public string hymc { get; set; }
39 - 39 +
40 /// <summary> 40 /// <summary>
41 /// 会员账号 41 /// 会员账号
42 /// </summary> 42 /// </summary>
43 public string hyzh { get; set; } 43 public string hyzh { get; set; }
44 - 44 +
45 /// <summary> 45 /// <summary>
46 /// 顾客类型 46 /// 顾客类型
47 /// </summary> 47 /// </summary>
48 public string gklx { get; set; } 48 public string gklx { get; set; }
49 - 49 +
50 /// <summary> 50 /// <summary>
51 /// 退卡总金额 51 /// 退卡总金额
52 /// </summary> 52 /// </summary>
53 public decimal? tkje { get; set; } 53 public decimal? tkje { get; set; }
54 - 54 +
55 /// <summary> 55 /// <summary>
56 /// 手工费用 56 /// 手工费用
57 /// </summary> 57 /// </summary>
58 public decimal? sgfy { get; set; } 58 public decimal? sgfy { get; set; }
59 - 59 +
60 /// <summary> 60 /// <summary>
61 /// 备注 61 /// 备注
62 /// </summary> 62 /// </summary>
63 public string bz { get; set; } 63 public string bz { get; set; }
64 - 64 +
65 /// <summary> 65 /// <summary>
66 /// 退卡时间 66 /// 退卡时间
67 /// </summary> 67 /// </summary>
68 public DateTime? tksj { get; set; } 68 public DateTime? tksj { get; set; }
69 - 69 +
70 /// <summary> 70 /// <summary>
71 /// 操作人员 71 /// 操作人员
72 /// </summary> 72 /// </summary>
73 public string czry { get; set; } 73 public string czry { get; set; }
74 - 74 +
75 /// <summary> 75 /// <summary>
76 /// 退卡状态 76 /// 退卡状态
77 /// </summary> 77 /// </summary>
78 public string tkzt { get; set; } 78 public string tkzt { get; set; }
79 - 79 +
80 /// <summary> 80 /// <summary>
81 /// 退卡原因 81 /// 退卡原因
82 /// </summary> 82 /// </summary>
@@ -86,6 +86,11 @@ namespace NCC.Extend.Entitys.Dto.LqHytkHytk @@ -86,6 +86,11 @@ namespace NCC.Extend.Entitys.Dto.LqHytkHytk
86 /// 退卡附件 86 /// 退卡附件
87 /// </summary> 87 /// </summary>
88 public string fileUrl { get; set; } 88 public string fileUrl { get; set; }
89 - 89 +
  90 + /// <summary>
  91 + /// 是否有效
  92 + /// </summary>
  93 + public int isEffective { get; set; }
  94 +
90 } 95 }
91 } 96 }
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqKdDeductinfo/LqKdDeductinfoInfoOutput.cs
@@ -10,56 +10,62 @@ namespace NCC.Extend.Entitys.Dto.LqKdDeductinfo @@ -10,56 +10,62 @@ namespace NCC.Extend.Entitys.Dto.LqKdDeductinfo
10 /// <summary> 10 /// <summary>
11 /// 主键 11 /// 主键
12 /// </summary> 12 /// </summary>
13 - public string Id { get; set; } 13 + public string id { get; set; }
14 14
15 /// <summary> 15 /// <summary>
16 /// 扣减类型 16 /// 扣减类型
17 /// </summary> 17 /// </summary>
18 - public string DeductType { get; set; } 18 + public string deductType { get; set; }
19 19
20 /// <summary> 20 /// <summary>
21 /// 扣减类型名称 21 /// 扣减类型名称
22 /// </summary> 22 /// </summary>
23 - public string DeductTypeName { get; set; } 23 + public string deductTypeName { get; set; }
24 24
25 /// <summary> 25 /// <summary>
26 /// 扣减关联ID 26 /// 扣减关联ID
27 /// </summary> 27 /// </summary>
28 - public string DeductId { get; set; } 28 + public string deductId { get; set; }
29 29
30 /// <summary> 30 /// <summary>
31 /// 开单id 31 /// 开单id
32 /// </summary> 32 /// </summary>
33 - public string BillingId { get; set; } 33 + public string billingId { get; set; }
34 34
35 /// <summary> 35 /// <summary>
36 /// 合计金额 36 /// 合计金额
37 /// </summary> 37 /// </summary>
38 - public decimal? Amount { get; set; } 38 + public decimal? amount { get; set; }
39 39
40 /// <summary> 40 /// <summary>
41 /// 是否有效 41 /// 是否有效
42 /// </summary> 42 /// </summary>
43 - public int? IsEffective { get; set; } 43 + public int? isEffective { get; set; }
44 44
45 /// <summary> 45 /// <summary>
46 /// 单价 46 /// 单价
47 /// </summary> 47 /// </summary>
48 - public decimal? UnitPrice { get; set; } 48 + public decimal? unitPrice { get; set; }
49 49
50 /// <summary> 50 /// <summary>
51 /// 品项名称 51 /// 品项名称
52 /// </summary> 52 /// </summary>
53 - public string ItemName { get; set; } 53 + public string itemName { get; set; }
54 54
55 /// <summary> 55 /// <summary>
56 /// 品项id 56 /// 品项id
57 /// </summary> 57 /// </summary>
58 - public string ItemId { get; set; } 58 + public string itemId { get; set; }
  59 +
  60 + /// <summary>
  61 + /// 项目数量
  62 + /// </summary>
  63 + public decimal? projectNumber { get; set; }
59 64
60 /// <summary> 65 /// <summary>
61 /// 创建时间 66 /// 创建时间
62 /// </summary> 67 /// </summary>
63 - public DateTime? CreateTime { get; set; } 68 + public DateTime? createTime { get; set; }
  69 +
64 } 70 }
65 } 71 }
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqKdJksyj/LqKdJksyjInfoOutput.cs
@@ -12,45 +12,50 @@ namespace NCC.Extend.Entitys.Dto.LqKdKdjlb @@ -12,45 +12,50 @@ namespace NCC.Extend.Entitys.Dto.LqKdKdjlb
12 /// 业绩编号 12 /// 业绩编号
13 /// </summary> 13 /// </summary>
14 public string id { get; set; } 14 public string id { get; set; }
15 - 15 +
16 /// <summary> 16 /// <summary>
17 /// 关联开单编号 17 /// 关联开单编号
18 /// </summary> 18 /// </summary>
19 public string glkdbh { get; set; } 19 public string glkdbh { get; set; }
20 - 20 +
21 /// <summary> 21 /// <summary>
22 /// 关联开单品项ID 22 /// 关联开单品项ID
23 /// </summary> 23 /// </summary>
24 public string kdpxid { get; set; } 24 public string kdpxid { get; set; }
25 - 25 +
26 /// <summary> 26 /// <summary>
27 /// 健康师ID 27 /// 健康师ID
28 /// </summary> 28 /// </summary>
29 public string jks { get; set; } 29 public string jks { get; set; }
30 - 30 +
31 /// <summary> 31 /// <summary>
32 /// 健康师姓名 32 /// 健康师姓名
33 /// </summary> 33 /// </summary>
34 public string jksxm { get; set; } 34 public string jksxm { get; set; }
35 - 35 +
36 /// <summary> 36 /// <summary>
37 /// 健康师账号 37 /// 健康师账号
38 /// </summary> 38 /// </summary>
39 public string jkszh { get; set; } 39 public string jkszh { get; set; }
40 - 40 +
41 /// <summary> 41 /// <summary>
42 /// 健康师业绩 42 /// 健康师业绩
43 /// </summary> 43 /// </summary>
44 public string jksyj { get; set; } 44 public string jksyj { get; set; }
45 - 45 +
46 /// <summary> 46 /// <summary>
47 /// 业绩时间 47 /// 业绩时间
48 /// </summary> 48 /// </summary>
49 public DateTime? yjsj { get; set; } 49 public DateTime? yjsj { get; set; }
50 - 50 +
51 /// <summary> 51 /// <summary>
52 /// 金三角ID 52 /// 金三角ID
53 /// </summary> 53 /// </summary>
54 public string jsj_id { get; set; } 54 public string jsj_id { get; set; }
  55 +
  56 + /// <summary>
  57 + /// 是否有效
  58 + /// </summary>
  59 + public int IsEffective { get; set; }
55 } 60 }
56 } 61 }
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqKdKdjlb/CancelBillingInput.cs 0 → 100644
  1 +using System.ComponentModel.DataAnnotations;
  2 +
  3 +namespace NCC.Extend.Entitys.Dto.LqKdKdjlb
  4 +{
  5 + /// <summary>
  6 + /// 作废开单记录输入
  7 + /// </summary>
  8 + public class CancelBillingInput
  9 + {
  10 + /// <summary>
  11 + /// 开单记录ID
  12 + /// </summary>
  13 + [Required(ErrorMessage = "开单记录ID不能为空")]
  14 + [Display(Name = "开单记录ID", Description = "需要作废的开单记录ID")]
  15 + public string Id { get; set; }
  16 +
  17 + /// <summary>
  18 + /// 作废备注
  19 + /// </summary>
  20 + [Display(Name = "作废备注", Description = "作废开单记录的原因说明")]
  21 + public string Remarks { get; set; }
  22 + }
  23 +}
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqKdQkbj/LqKdQkbjUpInput.cs renamed to netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqKdKdjlb/DebtRecordQueryInput.cs
1 -using System;  
2 using System.ComponentModel.DataAnnotations; 1 using System.ComponentModel.DataAnnotations;
  2 +using NCC.Common.Filter;
3 3
4 -namespace NCC.Extend.Entitys.Dto.LqKdQkbj 4 +namespace NCC.Extend.Entitys.Dto.LqKdKdjlb
5 { 5 {
6 /// <summary> 6 /// <summary>
7 - /// 开单欠款补缴记录更新输入 7 + /// 门店欠款记录查询输入
8 /// </summary> 8 /// </summary>
9 - public class LqKdQkbjUpInput : LqKdQkbjCrInput 9 + public class DebtRecordQueryInput : PageInputBase
10 { 10 {
11 /// <summary> 11 /// <summary>
12 - /// 主键 12 + /// 门店ID
13 /// </summary> 13 /// </summary>
14 - [Required(ErrorMessage = "主键不能为空")]  
15 - public string Id { get; set; } 14 + [Required(ErrorMessage = "门店ID不能为空")]
  15 + [Display(Name = "门店ID", Description = "查询欠款记录的门店ID")]
  16 + public string StoreId { get; set; }
16 } 17 }
17 } 18 }
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqKdKdjlb/LqKdKdjlbCrInput.cs
@@ -146,6 +146,11 @@ namespace NCC.Extend.Entitys.Dto.LqKdKdjlb @@ -146,6 +146,11 @@ namespace NCC.Extend.Entitys.Dto.LqKdKdjlb
146 public string F_FIleUrl { get; set; } 146 public string F_FIleUrl { get; set; }
147 147
148 /// <summary> 148 /// <summary>
  149 + /// 营销活动ID
  150 + /// </summary>
  151 + public string activityId { get; set; }
  152 +
  153 + /// <summary>
149 /// 作废关联id 154 /// 作废关联id
150 /// </summary> 155 /// </summary>
151 public string cancelRefId { get; set; } 156 public string cancelRefId { get; set; }
@@ -156,6 +161,16 @@ namespace NCC.Extend.Entitys.Dto.LqKdKdjlb @@ -156,6 +161,16 @@ namespace NCC.Extend.Entitys.Dto.LqKdKdjlb
156 public string cancelRefRemarks { get; set; } 161 public string cancelRefRemarks { get; set; }
157 162
158 /// <summary> 163 /// <summary>
  164 + /// 补缴开单ID
  165 + /// </summary>
  166 + public string supplementBillingId { get; set; }
  167 +
  168 + /// <summary>
  169 + /// 补缴金额
  170 + /// </summary>
  171 + public decimal supplementAmount { get; set; }
  172 +
  173 + /// <summary>
159 /// 扣款信息 174 /// 扣款信息
160 /// </summary> 175 /// </summary>
161 public List<LqKdDeductinfoCrInput> lqKdKdjlbDeductList { get; set; } 176 public List<LqKdDeductinfoCrInput> lqKdKdjlbDeductList { get; set; }
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqKdKdjlb/LqKdKdjlbInfoOutput.cs
1 using System; 1 using System;
2 using System.Collections.Generic; 2 using System.Collections.Generic;
3 using NCC.Common.Model; 3 using NCC.Common.Model;
  4 +using NCC.Extend.Entitys.Dto.LqKdDeductinfo;
4 5
5 namespace NCC.Extend.Entitys.Dto.LqKdKdjlb 6 namespace NCC.Extend.Entitys.Dto.LqKdKdjlb
6 { 7 {
@@ -151,6 +152,32 @@ namespace NCC.Extend.Entitys.Dto.LqKdKdjlb @@ -151,6 +152,32 @@ namespace NCC.Extend.Entitys.Dto.LqKdKdjlb
151 public string F_FIleUrl { get; set; } 152 public string F_FIleUrl { get; set; }
152 153
153 /// <summary> 154 /// <summary>
  155 + /// 是否有效
  156 + /// </summary>
  157 + public int IsEffective { get; set; }
  158 +
  159 + /// <summary>
  160 + /// 补缴开单ID
  161 + /// </summary>
  162 + public string SupplementBillingId { get; set; }
  163 +
  164 + /// <summary>
  165 + /// 补缴金额
  166 + /// </summary>
  167 + public decimal SupplementAmount { get; set; }
  168 +
  169 + /// <summary>
  170 + /// 已缴欠款
  171 + /// </summary>
  172 + public decimal PaidDebt { get; set; }
  173 +
  174 +
  175 + /// <summary>
  176 + /// 作废关联备注
  177 + /// </summary>
  178 + public string CancelRefRemarks { get; set; }
  179 +
  180 + /// <summary>
154 /// 健康师业绩 181 /// 健康师业绩
155 /// </summary> 182 /// </summary>
156 public List<LqKdJksyjInfoOutput> lqKdJksyjList { get; set; } 183 public List<LqKdJksyjInfoOutput> lqKdJksyjList { get; set; }
@@ -165,5 +192,11 @@ namespace NCC.Extend.Entitys.Dto.LqKdKdjlb @@ -165,5 +192,11 @@ namespace NCC.Extend.Entitys.Dto.LqKdKdjlb
165 /// </summary> 192 /// </summary>
166 public List<LqKdPxmxInfoOutput> lqKdPxmxList { get; set; } 193 public List<LqKdPxmxInfoOutput> lqKdPxmxList { get; set; }
167 194
  195 +
  196 + /// <summary>
  197 + /// 扣款信息列表
  198 + /// </summary>
  199 + public List<LqKdDeductinfoInfoOutput> lqKdDeductList { get; set; }
  200 +
168 } 201 }
169 } 202 }
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqKdKdjlb/LqKdKdjlbListOutput.cs
@@ -53,6 +53,11 @@ namespace NCC.Extend.Entitys.Dto.LqKdKdjlb @@ -53,6 +53,11 @@ namespace NCC.Extend.Entitys.Dto.LqKdKdjlb
53 public decimal qk { get; set; } 53 public decimal qk { get; set; }
54 54
55 /// <summary> 55 /// <summary>
  56 + /// 已缴欠款
  57 + /// </summary>
  58 + public decimal PaidDebt { get; set; }
  59 +
  60 + /// <summary>
56 /// 储扣方式 61 /// 储扣方式
57 /// </summary> 62 /// </summary>
58 public string ckfs { get; set; } 63 public string ckfs { get; set; }
@@ -141,5 +146,15 @@ namespace NCC.Extend.Entitys.Dto.LqKdKdjlb @@ -141,5 +146,15 @@ namespace NCC.Extend.Entitys.Dto.LqKdKdjlb
141 /// 是否有效 146 /// 是否有效
142 /// </summary> 147 /// </summary>
143 public int IsEffective { get; set; } 148 public int IsEffective { get; set; }
  149 +
  150 + /// <summary>
  151 + /// 开单用户
  152 + /// </summary>
  153 + public string CreateUser { get; set; }
  154 +
  155 + /// <summary>
  156 + /// 开单用户名称
  157 + /// </summary>
  158 + public string CreateUserName { get; set; }
144 } 159 }
145 } 160 }
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqKdKdjlb/LqKdKdjlbListQueryInput.cs
@@ -23,126 +23,131 @@ namespace NCC.Extend.Entitys.Dto.LqKdKdjlb @@ -23,126 +23,131 @@ namespace NCC.Extend.Entitys.Dto.LqKdKdjlb
23 /// 开单编号 23 /// 开单编号
24 /// </summary> 24 /// </summary>
25 public string id { get; set; } 25 public string id { get; set; }
26 - 26 +
27 /// <summary> 27 /// <summary>
28 /// 单据门店 28 /// 单据门店
29 /// </summary> 29 /// </summary>
30 public string djmd { get; set; } 30 public string djmd { get; set; }
31 - 31 +
32 /// <summary> 32 /// <summary>
33 /// 金三角 33 /// 金三角
34 /// </summary> 34 /// </summary>
35 public string jsj { get; set; } 35 public string jsj { get; set; }
36 - 36 +
37 /// <summary> 37 /// <summary>
38 /// 开单日期 38 /// 开单日期
39 /// </summary> 39 /// </summary>
40 public string kdrq { get; set; } 40 public string kdrq { get; set; }
41 - 41 +
42 /// <summary> 42 /// <summary>
43 /// 顾客类型 43 /// 顾客类型
44 /// </summary> 44 /// </summary>
45 public string gjlx { get; set; } 45 public string gjlx { get; set; }
46 - 46 +
47 /// <summary> 47 /// <summary>
48 /// 合作机构 48 /// 合作机构
49 /// </summary> 49 /// </summary>
50 public string hgjg { get; set; } 50 public string hgjg { get; set; }
51 - 51 +
52 /// <summary> 52 /// <summary>
53 /// 整单业绩 53 /// 整单业绩
54 /// </summary> 54 /// </summary>
55 public string zdyj { get; set; } 55 public string zdyj { get; set; }
56 - 56 +
57 /// <summary> 57 /// <summary>
58 /// 实付业绩 58 /// 实付业绩
59 /// </summary> 59 /// </summary>
60 public string sfyj { get; set; } 60 public string sfyj { get; set; }
61 - 61 +
62 /// <summary> 62 /// <summary>
63 /// 欠款 63 /// 欠款
64 /// </summary> 64 /// </summary>
65 public string qk { get; set; } 65 public string qk { get; set; }
66 - 66 +
67 /// <summary> 67 /// <summary>
68 /// 储扣方式 68 /// 储扣方式
69 /// </summary> 69 /// </summary>
70 public string ckfs { get; set; } 70 public string ckfs { get; set; }
71 - 71 +
72 /// <summary> 72 /// <summary>
73 /// 付款方式 73 /// 付款方式
74 /// </summary> 74 /// </summary>
75 public string fkfs { get; set; } 75 public string fkfs { get; set; }
76 - 76 +
77 /// <summary> 77 /// <summary>
78 /// 付款医院 78 /// 付款医院
79 /// </summary> 79 /// </summary>
80 public string fkyy { get; set; } 80 public string fkyy { get; set; }
81 - 81 +
82 /// <summary> 82 /// <summary>
83 /// 付款判断 83 /// 付款判断
84 /// </summary> 84 /// </summary>
85 public string fkpd { get; set; } 85 public string fkpd { get; set; }
86 - 86 +
87 /// <summary> 87 /// <summary>
88 /// 客户来源 88 /// 客户来源
89 /// </summary> 89 /// </summary>
90 public string khly { get; set; } 90 public string khly { get; set; }
91 - 91 +
92 /// <summary> 92 /// <summary>
93 /// 推荐人 93 /// 推荐人
94 /// </summary> 94 /// </summary>
95 public string tjr { get; set; } 95 public string tjr { get; set; }
96 - 96 +
97 /// <summary> 97 /// <summary>
98 /// 是否首开订单 98 /// 是否首开订单
99 /// </summary> 99 /// </summary>
100 public string sfskdd { get; set; } 100 public string sfskdd { get; set; }
101 - 101 +
102 /// <summary> 102 /// <summary>
103 /// 简介 103 /// 简介
104 /// </summary> 104 /// </summary>
105 public string jj { get; set; } 105 public string jj { get; set; }
106 - 106 +
107 /// <summary> 107 /// <summary>
108 /// 备注 108 /// 备注
109 /// </summary> 109 /// </summary>
110 public string bz { get; set; } 110 public string bz { get; set; }
111 - 111 +
112 /// <summary> 112 /// <summary>
113 /// 开单会员 113 /// 开单会员
114 /// </summary> 114 /// </summary>
115 public string kdhy { get; set; } 115 public string kdhy { get; set; }
116 - 116 +
117 /// <summary> 117 /// <summary>
118 /// 开单会员名称 118 /// 开单会员名称
119 /// </summary> 119 /// </summary>
120 public string kdhyc { get; set; } 120 public string kdhyc { get; set; }
121 - 121 +
122 /// <summary> 122 /// <summary>
123 /// 开单会员手机号 123 /// 开单会员手机号
124 /// </summary> 124 /// </summary>
125 public string kdhysjh { get; set; } 125 public string kdhysjh { get; set; }
126 - 126 +
127 /// <summary> 127 /// <summary>
128 /// 健康师业绩 128 /// 健康师业绩
129 /// </summary> 129 /// </summary>
130 public string jksyj { get; set; } 130 public string jksyj { get; set; }
131 - 131 +
132 /// <summary> 132 /// <summary>
133 /// 科技部老师业绩 133 /// 科技部老师业绩
134 /// </summary> 134 /// </summary>
135 public string kjblsyj { get; set; } 135 public string kjblsyj { get; set; }
136 - 136 +
137 /// <summary> 137 /// <summary>
138 /// 品项信息 138 /// 品项信息
139 /// </summary> 139 /// </summary>
140 public string pxxx { get; set; } 140 public string pxxx { get; set; }
141 - 141 +
142 /// <summary> 142 /// <summary>
143 /// 方案其他 143 /// 方案其他
144 /// </summary> 144 /// </summary>
145 public string F_FIleUrl { get; set; } 145 public string F_FIleUrl { get; set; }
146 - 146 +
  147 + /// <summary>
  148 + /// 开单用户
  149 + /// </summary>
  150 + public string CreateUser { get; set; }
  151 +
147 } 152 }
148 } 153 }
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqKdKdjlb/LqKdKdjlbUpInput.cs
@@ -12,6 +12,6 @@ namespace NCC.Extend.Entitys.Dto.LqKdKdjlb @@ -12,6 +12,6 @@ namespace NCC.Extend.Entitys.Dto.LqKdKdjlb
12 /// 开单编号 12 /// 开单编号
13 /// </summary> 13 /// </summary>
14 public string id { get; set; } 14 public string id { get; set; }
15 - 15 +
16 } 16 }
17 } 17 }
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqKdKjbsyj/LqKdKjbsyjInfoOutput.cs
@@ -12,40 +12,45 @@ namespace NCC.Extend.Entitys.Dto.LqKdKdjlb @@ -12,40 +12,45 @@ namespace NCC.Extend.Entitys.Dto.LqKdKdjlb
12 /// 业绩编号 12 /// 业绩编号
13 /// </summary> 13 /// </summary>
14 public string id { get; set; } 14 public string id { get; set; }
15 - 15 +
16 /// <summary> 16 /// <summary>
17 /// 关联开单编号 17 /// 关联开单编号
18 /// </summary> 18 /// </summary>
19 public string glkdbh { get; set; } 19 public string glkdbh { get; set; }
20 - 20 +
21 /// <summary> 21 /// <summary>
22 /// 关联开单品项ID 22 /// 关联开单品项ID
23 /// </summary> 23 /// </summary>
24 public string kdpxid { get; set; } 24 public string kdpxid { get; set; }
25 - 25 +
26 /// <summary> 26 /// <summary>
27 /// 科技部老师ID 27 /// 科技部老师ID
28 /// </summary> 28 /// </summary>
29 public string kjbls { get; set; } 29 public string kjbls { get; set; }
30 - 30 +
31 /// <summary> 31 /// <summary>
32 /// 科技部老师姓名 32 /// 科技部老师姓名
33 /// </summary> 33 /// </summary>
34 public string kjblsxm { get; set; } 34 public string kjblsxm { get; set; }
35 - 35 +
36 /// <summary> 36 /// <summary>
37 /// 科技部老师账号 37 /// 科技部老师账号
38 /// </summary> 38 /// </summary>
39 public string kjblszh { get; set; } 39 public string kjblszh { get; set; }
40 - 40 +
41 /// <summary> 41 /// <summary>
42 /// 科技部老师业绩 42 /// 科技部老师业绩
43 /// </summary> 43 /// </summary>
44 public string kjblsyj { get; set; } 44 public string kjblsyj { get; set; }
45 - 45 +
46 /// <summary> 46 /// <summary>
47 /// 业绩时间 47 /// 业绩时间
48 /// </summary> 48 /// </summary>
49 public DateTime? yjsj { get; set; } 49 public DateTime? yjsj { get; set; }
  50 +
  51 + /// <summary>
  52 + /// 是否有效
  53 + /// </summary>
  54 + public int IsEffective { get; set; }
50 } 55 }
51 } 56 }
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqKdPxmx/LqKdPxmxInfoOutput.cs
1 using System; 1 using System;
2 using System.Collections.Generic; 2 using System.Collections.Generic;
  3 +using NCC.Extend.Entitys.Dto.LqKdDeductinfo;
3 4
4 namespace NCC.Extend.Entitys.Dto.LqKdKdjlb 5 namespace NCC.Extend.Entitys.Dto.LqKdKdjlb
5 { 6 {
@@ -75,6 +76,11 @@ namespace NCC.Extend.Entitys.Dto.LqKdKdjlb @@ -75,6 +76,11 @@ namespace NCC.Extend.Entitys.Dto.LqKdKdjlb
75 public string remark { get; set; } 76 public string remark { get; set; }
76 77
77 /// <summary> 78 /// <summary>
  79 + /// 是否有效
  80 + /// </summary>
  81 + public int isEffective { get; set; }
  82 +
  83 + /// <summary>
78 /// 健康师业绩列表 84 /// 健康师业绩列表
79 /// </summary> 85 /// </summary>
80 public List<LqKdJksyjInfoOutput> lqKdJksyjList { get; set; } 86 public List<LqKdJksyjInfoOutput> lqKdJksyjList { get; set; }
@@ -83,5 +89,6 @@ namespace NCC.Extend.Entitys.Dto.LqKdKdjlb @@ -83,5 +89,6 @@ namespace NCC.Extend.Entitys.Dto.LqKdKdjlb
83 /// 科技部老师业绩列表 89 /// 科技部老师业绩列表
84 /// </summary> 90 /// </summary>
85 public List<LqKdKjbsyjInfoOutput> lqKdKjbsyjList { get; set; } 91 public List<LqKdKjbsyjInfoOutput> lqKdKjbsyjList { get; set; }
  92 +
86 } 93 }
87 } 94 }
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqKdQkbj/LqKdQkbjCrInput.cs deleted
1 -using System;  
2 -using System.ComponentModel.DataAnnotations;  
3 -  
4 -namespace NCC.Extend.Entitys.Dto.LqKdQkbj  
5 -{  
6 - /// <summary>  
7 - /// 开单欠款补缴记录创建输入  
8 - /// </summary>  
9 - public class LqKdQkbjCrInput  
10 - {  
11 - /// <summary>  
12 - /// 开单ID  
13 - /// </summary>  
14 - [Required(ErrorMessage = "开单ID不能为空")]  
15 - public string BillingId { get; set; }  
16 -  
17 - /// <summary>  
18 - /// 补缴金额  
19 - /// </summary>  
20 - [Required(ErrorMessage = "补缴金额不能为空")]  
21 - [Range(0.01, 999999.99, ErrorMessage = "补缴金额必须在0.01到999999.99之间")]  
22 - public decimal PaymentAmount { get; set; }  
23 -  
24 - /// <summary>  
25 - /// 补缴方式  
26 - /// </summary>  
27 - [Required(ErrorMessage = "补缴方式不能为空")]  
28 - public string PaymentMethod { get; set; }  
29 -  
30 - /// <summary>  
31 - /// 补缴时间  
32 - /// </summary>  
33 - [Required(ErrorMessage = "补缴时间不能为空")]  
34 - public DateTime PaymentTime { get; set; }  
35 -  
36 - /// <summary>  
37 - /// 补缴操作人  
38 - /// </summary>  
39 - public string PaymentUser { get; set; }  
40 -  
41 - /// <summary>  
42 - /// 补缴账户  
43 - /// </summary>  
44 - public string PaymentAccount { get; set; }  
45 -  
46 - /// <summary>  
47 - /// 补缴凭证号  
48 - /// </summary>  
49 - public string PaymentReference { get; set; }  
50 -  
51 - /// <summary>  
52 - /// 补缴备注  
53 - /// </summary>  
54 - [StringLength(500, ErrorMessage = "补缴备注不能超过500个字符")]  
55 - public string Remark { get; set; }  
56 - }  
57 -}  
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqKdQkbj/LqKdQkbjListQueryInput.cs deleted
1 -using System;  
2 -  
3 -namespace NCC.Extend.Entitys.Dto.LqKdQkbj  
4 -{  
5 - /// <summary>  
6 - /// 开单欠款补缴记录列表查询输入  
7 - /// </summary>  
8 - public class LqKdQkbjListQueryInput  
9 - {  
10 - /// <summary>  
11 - /// 开单ID  
12 - /// </summary>  
13 - public string BillingId { get; set; }  
14 -  
15 - /// <summary>  
16 - /// 补缴方式  
17 - /// </summary>  
18 - public string PaymentMethod { get; set; }  
19 -  
20 - /// <summary>  
21 - /// 补缴操作人  
22 - /// </summary>  
23 - public string PaymentUser { get; set; }  
24 -  
25 - /// <summary>  
26 - /// 最小补缴金额  
27 - /// </summary>  
28 - public decimal? MinPaymentAmount { get; set; }  
29 -  
30 - /// <summary>  
31 - /// 最大补缴金额  
32 - /// </summary>  
33 - public decimal? MaxPaymentAmount { get; set; }  
34 -  
35 - /// <summary>  
36 - /// 开始补缴时间  
37 - /// </summary>  
38 - public DateTime? StartPaymentTime { get; set; }  
39 -  
40 - /// <summary>  
41 - /// 结束补缴时间  
42 - /// </summary>  
43 - public DateTime? EndPaymentTime { get; set; }  
44 -  
45 - /// <summary>  
46 - /// 是否有效  
47 - /// </summary>  
48 - public int? IsEffective { get; set; }  
49 -  
50 - /// <summary>  
51 - /// 补缴凭证号  
52 - /// </summary>  
53 - public string PaymentReference { get; set; }  
54 - }  
55 -}  
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqPackageInfo/LqPackageInfoCrInput.cs 0 → 100644
  1 +using System;
  2 +using System.Collections.Generic;
  3 +using System.ComponentModel.DataAnnotations;
  4 +
  5 +namespace NCC.Extend.Entitys.Dto.LqPackageInfo
  6 +{
  7 + /// <summary>
  8 + /// 营销活动创建输入
  9 + /// </summary>
  10 + public class LqPackageInfoCrInput
  11 + {
  12 + /// <summary>
  13 + /// 活动名称
  14 + /// </summary>
  15 + [Required(ErrorMessage = "活动名称不能为空")]
  16 + [Display(Name = "活动名称", Description = "营销活动的名称")]
  17 + public string ActivityName { get; set; }
  18 +
  19 + /// <summary>
  20 + /// 活动描述
  21 + /// </summary>
  22 + [Display(Name = "活动描述", Description = "营销活动的详细描述")]
  23 + public string ActivityDesc { get; set; }
  24 +
  25 + /// <summary>
  26 + /// 活动开始时间
  27 + /// </summary>
  28 + [Required(ErrorMessage = "活动开始时间不能为空")]
  29 + [Display(Name = "活动开始时间", Description = "营销活动的开始时间")]
  30 + public DateTime StartTime { get; set; }
  31 +
  32 + /// <summary>
  33 + /// 活动结束时间
  34 + /// </summary>
  35 + [Required(ErrorMessage = "活动结束时间不能为空")]
  36 + [Display(Name = "活动结束时间", Description = "营销活动的结束时间")]
  37 + public DateTime EndTime { get; set; }
  38 +
  39 + /// <summary>
  40 + /// 至少购买品项数量
  41 + /// </summary>
  42 + [Required(ErrorMessage = "至少购买品项数量不能为空")]
  43 + [Range(1, int.MaxValue, ErrorMessage = "至少购买品项数量必须大于0")]
  44 + [Display(Name = "至少购买品项数量", Description = "参与活动需要购买的最少品项数量")]
  45 + public int MinItemQuantity { get; set; } = 1;
  46 +
  47 + /// <summary>
  48 + /// 活动规则说明
  49 + /// </summary>
  50 + [Display(Name = "活动规则说明", Description = "营销活动的规则和说明")]
  51 + public string ActivityRules { get; set; }
  52 +
  53 + /// <summary>
  54 + /// 活动图片(JSON格式)
  55 + /// </summary>
  56 + [Display(Name = "活动图片", Description = "营销活动的图片,JSON格式存储")]
  57 + public string ActivityImages { get; set; }
  58 +
  59 + /// <summary>
  60 + /// 排序
  61 + /// </summary>
  62 + [Display(Name = "排序", Description = "营销活动的显示排序")]
  63 + public int SortOrder { get; set; } = 0;
  64 +
  65 + /// <summary>
  66 + /// 营销活动品项明细列表
  67 + /// </summary>
  68 + [Display(Name = "活动品项明细", Description = "营销活动包含的品项明细列表")]
  69 + public List<MarketingActivityItemDetailInput> ActivityItems { get; set; } = new List<MarketingActivityItemDetailInput>();
  70 + }
  71 +
  72 + /// <summary>
  73 + /// 营销活动品项明细输入
  74 + /// </summary>
  75 + public class MarketingActivityItemDetailInput
  76 + {
  77 + /// <summary>
  78 + /// 品项ID
  79 + /// </summary>
  80 + [Required(ErrorMessage = "品项ID不能为空")]
  81 + [Display(Name = "品项ID", Description = "品项的唯一标识")]
  82 + public string ItemId { get; set; }
  83 +
  84 + /// <summary>
  85 + /// 品项名称
  86 + /// </summary>
  87 + [Display(Name = "品项名称", Description = "品项的名称")]
  88 + public string ItemName { get; set; }
  89 +
  90 + /// <summary>
  91 + /// 品项分类
  92 + /// </summary>
  93 + [Display(Name = "品项分类", Description = "品项的分类")]
  94 + public string ItemCategory { get; set; }
  95 +
  96 + /// <summary>
  97 + /// 品项备注
  98 + /// </summary>
  99 + [Display(Name = "品项备注", Description = "品项的备注信息")]
  100 + public string ItemRemark { get; set; }
  101 + }
  102 +}
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqKdQkbj/LqKdQkbjInfoOutput.cs renamed to netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqPackageInfo/LqPackageInfoInfoOutput.cs
1 using System; 1 using System;
  2 +using System.ComponentModel.DataAnnotations;
2 3
3 -namespace NCC.Extend.Entitys.Dto.LqKdQkbj 4 +namespace NCC.Extend.Entitys.Dto.LqPackageInfo
4 { 5 {
5 /// <summary> 6 /// <summary>
6 - /// 开单欠款补缴记录详情输出 7 + /// 套餐信息详情输出
7 /// </summary> 8 /// </summary>
8 - public class LqKdQkbjInfoOutput 9 + public class LqPackageInfoInfoOutput
9 { 10 {
10 /// <summary> 11 /// <summary>
11 - /// 主键 12 + /// 套餐ID
12 /// </summary> 13 /// </summary>
13 public string Id { get; set; } 14 public string Id { get; set; }
14 15
15 /// <summary> 16 /// <summary>
16 - /// 开单ID 17 + /// 套餐编码
17 /// </summary> 18 /// </summary>
18 - public string BillingId { get; set; } 19 + public string PackageCode { get; set; }
19 20
20 /// <summary> 21 /// <summary>
21 - /// 补缴金额 22 + /// 套餐名称
22 /// </summary> 23 /// </summary>
23 - public decimal PaymentAmount { get; set; } 24 + public string PackageName { get; set; }
24 25
25 /// <summary> 26 /// <summary>
26 - /// 补缴方式 27 + /// 套餐描述
27 /// </summary> 28 /// </summary>
28 - public string PaymentMethod { get; set; } 29 + public string PackageDesc { get; set; }
29 30
30 /// <summary> 31 /// <summary>
31 - /// 补缴方式名称 32 + /// 套餐价格
32 /// </summary> 33 /// </summary>
33 - public string PaymentMethodName { get; set; } 34 + public decimal PackagePrice { get; set; }
34 35
35 /// <summary> 36 /// <summary>
36 - /// 补缴时间 37 + /// 优惠价格
37 /// </summary> 38 /// </summary>
38 - public DateTime PaymentTime { get; set; } 39 + public decimal? DiscountPrice { get; set; }
39 40
40 /// <summary> 41 /// <summary>
41 - /// 补缴操作人 42 + /// 使用状态
42 /// </summary> 43 /// </summary>
43 - public string PaymentUser { get; set; } 44 + public string Status { get; set; }
44 45
45 /// <summary> 46 /// <summary>
46 - /// 补缴操作人姓名 47 + /// 上架状态
47 /// </summary> 48 /// </summary>
48 - public string PaymentUserName { get; set; } 49 + public string ShelfStatus { get; set; }
49 50
50 /// <summary> 51 /// <summary>
51 - /// 补缴账户 52 + /// 套餐类型
52 /// </summary> 53 /// </summary>
53 - public string PaymentAccount { get; set; }  
54 -  
55 - /// <summary>  
56 - /// 补缴凭证号  
57 - /// </summary>  
58 - public string PaymentReference { get; set; }  
59 -  
60 - /// <summary>  
61 - /// 补缴备注  
62 - /// </summary>  
63 - public string Remark { get; set; } 54 + public string PackageType { get; set; }
64 55
65 /// <summary> 56 /// <summary>
66 /// 创建时间 57 /// 创建时间
@@ -73,8 +64,13 @@ namespace NCC.Extend.Entitys.Dto.LqKdQkbj @@ -73,8 +64,13 @@ namespace NCC.Extend.Entitys.Dto.LqKdQkbj
73 public DateTime UpdateTime { get; set; } 64 public DateTime UpdateTime { get; set; }
74 65
75 /// <summary> 66 /// <summary>
76 - /// 是否有效 67 + /// 创建人
  68 + /// </summary>
  69 + public string CreateUser { get; set; }
  70 +
  71 + /// <summary>
  72 + /// 更新人
77 /// </summary> 73 /// </summary>
78 - public int IsEffective { get; set; } 74 + public string UpdateUser { get; set; }
79 } 75 }
80 } 76 }
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqPackageInfo/LqPackageInfoListOutput.cs 0 → 100644
  1 +using System;
  2 +using System.ComponentModel.DataAnnotations;
  3 +
  4 +namespace NCC.Extend.Entitys.Dto.LqPackageInfo
  5 +{
  6 + /// <summary>
  7 + /// 营销活动列表输出
  8 + /// </summary>
  9 + public class LqPackageInfoListOutput
  10 + {
  11 + /// <summary>
  12 + /// 营销活动ID
  13 + /// </summary>
  14 + [Display(Name = "营销活动ID", Description = "营销活动的唯一标识")]
  15 + public string Id { get; set; }
  16 +
  17 + /// <summary>
  18 + /// 活动名称
  19 + /// </summary>
  20 + [Display(Name = "活动名称", Description = "营销活动的名称")]
  21 + public string ActivityName { get; set; }
  22 +
  23 + /// <summary>
  24 + /// 活动描述
  25 + /// </summary>
  26 + [Display(Name = "活动描述", Description = "营销活动的描述")]
  27 + public string ActivityDesc { get; set; }
  28 +
  29 + /// <summary>
  30 + /// 活动开始时间
  31 + /// </summary>
  32 + [Display(Name = "活动开始时间", Description = "营销活动的开始时间")]
  33 + public DateTime StartTime { get; set; }
  34 +
  35 + /// <summary>
  36 + /// 活动结束时间
  37 + /// </summary>
  38 + [Display(Name = "活动结束时间", Description = "营销活动的结束时间")]
  39 + public DateTime EndTime { get; set; }
  40 +
  41 + /// <summary>
  42 + /// 至少购买品项数量
  43 + /// </summary>
  44 + [Display(Name = "至少购买品项数量", Description = "参与活动需要购买的最少品项数量")]
  45 + public int MinItemQuantity { get; set; }
  46 +
  47 + /// <summary>
  48 + /// 活动规则说明
  49 + /// </summary>
  50 + [Display(Name = "活动规则说明", Description = "营销活动的规则说明")]
  51 + public string ActivityRules { get; set; }
  52 +
  53 + /// <summary>
  54 + /// 排序
  55 + /// </summary>
  56 + [Display(Name = "排序", Description = "营销活动的显示排序")]
  57 + public int SortOrder { get; set; }
  58 +
  59 + /// <summary>
  60 + /// 创建时间
  61 + /// </summary>
  62 + [Display(Name = "创建时间", Description = "营销活动的创建时间")]
  63 + public DateTime CreateTime { get; set; }
  64 + }
  65 +}
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqPackageInfo/LqPackageInfoListQueryInput.cs 0 → 100644
  1 +using System;
  2 +using System.ComponentModel.DataAnnotations;
  3 +using NCC.Common.Filter;
  4 +
  5 +namespace NCC.Extend.Entitys.Dto.LqPackageInfo
  6 +{
  7 + /// <summary>
  8 + /// 营销活动列表查询输入
  9 + /// </summary>
  10 + public class LqPackageInfoListQueryInput : PageInputBase
  11 + {
  12 + /// <summary>
  13 + /// 活动名称
  14 + /// </summary>
  15 + [Display(Name = "活动名称", Description = "营销活动名称")]
  16 + public string ActivityName { get; set; }
  17 +
  18 + /// <summary>
  19 + /// 活动描述
  20 + /// </summary>
  21 + [Display(Name = "活动描述", Description = "营销活动描述")]
  22 + public string ActivityDesc { get; set; }
  23 +
  24 + /// <summary>
  25 + /// 活动开始时间开始
  26 + /// </summary>
  27 + [Display(Name = "活动开始时间开始", Description = "活动开始时间范围开始")]
  28 + public DateTime? StartTimeStart { get; set; }
  29 +
  30 + /// <summary>
  31 + /// 活动开始时间结束
  32 + /// </summary>
  33 + [Display(Name = "活动开始时间结束", Description = "活动开始时间范围结束")]
  34 + public DateTime? StartTimeEnd { get; set; }
  35 +
  36 + /// <summary>
  37 + /// 活动结束时间开始
  38 + /// </summary>
  39 + [Display(Name = "活动结束时间开始", Description = "活动结束时间范围开始")]
  40 + public DateTime? EndTimeStart { get; set; }
  41 +
  42 + /// <summary>
  43 + /// 活动结束时间结束
  44 + /// </summary>
  45 + [Display(Name = "活动结束时间结束", Description = "活动结束时间范围结束")]
  46 + public DateTime? EndTimeEnd { get; set; }
  47 +
  48 + /// <summary>
  49 + /// 至少购买品项数量
  50 + /// </summary>
  51 + [Display(Name = "至少购买品项数量", Description = "至少购买品项数量")]
  52 + public int? MinItemQuantity { get; set; }
  53 +
  54 + /// <summary>
  55 + /// 创建时间开始
  56 + /// </summary>
  57 + [Display(Name = "创建时间开始", Description = "创建时间范围开始")]
  58 + public DateTime? CreateTimeStart { get; set; }
  59 +
  60 + /// <summary>
  61 + /// 创建时间结束
  62 + /// </summary>
  63 + [Display(Name = "创建时间结束", Description = "创建时间范围结束")]
  64 + public DateTime? CreateTimeEnd { get; set; }
  65 + }
  66 +}
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqPackageInfo/LqPackageInfoUpInput.cs 0 → 100644
  1 +using System;
  2 +using System.Collections.Generic;
  3 +using System.ComponentModel.DataAnnotations;
  4 +
  5 +namespace NCC.Extend.Entitys.Dto.LqPackageInfo
  6 +{
  7 + /// <summary>
  8 + /// 营销活动更新输入
  9 + /// </summary>
  10 + public class LqPackageInfoUpInput
  11 + {
  12 + /// <summary>
  13 + /// 营销活动ID
  14 + /// </summary>
  15 + [Required(ErrorMessage = "营销活动ID不能为空")]
  16 + [Display(Name = "营销活动ID", Description = "营销活动的唯一标识")]
  17 + public string Id { get; set; }
  18 +
  19 + /// <summary>
  20 + /// 活动名称
  21 + /// </summary>
  22 + [Required(ErrorMessage = "活动名称不能为空")]
  23 + [Display(Name = "活动名称", Description = "营销活动的名称")]
  24 + public string ActivityName { get; set; }
  25 +
  26 + /// <summary>
  27 + /// 活动描述
  28 + /// </summary>
  29 + [Display(Name = "活动描述", Description = "营销活动的详细描述")]
  30 + public string ActivityDesc { get; set; }
  31 +
  32 + /// <summary>
  33 + /// 活动开始时间
  34 + /// </summary>
  35 + [Required(ErrorMessage = "活动开始时间不能为空")]
  36 + [Display(Name = "活动开始时间", Description = "营销活动的开始时间")]
  37 + public DateTime StartTime { get; set; }
  38 +
  39 + /// <summary>
  40 + /// 活动结束时间
  41 + /// </summary>
  42 + [Required(ErrorMessage = "活动结束时间不能为空")]
  43 + [Display(Name = "活动结束时间", Description = "营销活动的结束时间")]
  44 + public DateTime EndTime { get; set; }
  45 +
  46 + /// <summary>
  47 + /// 至少购买品项数量
  48 + /// </summary>
  49 + [Required(ErrorMessage = "至少购买品项数量不能为空")]
  50 + [Range(1, int.MaxValue, ErrorMessage = "至少购买品项数量必须大于0")]
  51 + [Display(Name = "至少购买品项数量", Description = "参与活动需要购买的最少品项数量")]
  52 + public int MinItemQuantity { get; set; } = 1;
  53 +
  54 + /// <summary>
  55 + /// 活动规则说明
  56 + /// </summary>
  57 + [Display(Name = "活动规则说明", Description = "营销活动的规则和说明")]
  58 + public string ActivityRules { get; set; }
  59 +
  60 + /// <summary>
  61 + /// 活动图片(JSON格式)
  62 + /// </summary>
  63 + [Display(Name = "活动图片", Description = "营销活动的图片,JSON格式存储")]
  64 + public string ActivityImages { get; set; }
  65 +
  66 + /// <summary>
  67 + /// 排序
  68 + /// </summary>
  69 + [Display(Name = "排序", Description = "营销活动的显示排序")]
  70 + public int SortOrder { get; set; } = 0;
  71 +
  72 + /// <summary>
  73 + /// 营销活动品项明细列表
  74 + /// </summary>
  75 + [Display(Name = "活动品项明细", Description = "营销活动包含的品项明细列表")]
  76 + public List<MarketingActivityItemDetailInput> ActivityItems { get; set; } = new List<MarketingActivityItemDetailInput>();
  77 + }
  78 +}
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqPackageItemDetail/LqPackageItemDetailCrInput.cs 0 → 100644
  1 +using System;
  2 +using System.ComponentModel.DataAnnotations;
  3 +
  4 +namespace NCC.Extend.Entitys.Dto.LqPackageItemDetail
  5 +{
  6 + /// <summary>
  7 + /// 套餐品项明细创建输入
  8 + /// </summary>
  9 + public class LqPackageItemDetailCrInput
  10 + {
  11 + /// <summary>
  12 + /// 套餐ID
  13 + /// </summary>
  14 + [Required(ErrorMessage = "套餐ID不能为空")]
  15 + public string PackageId { get; set; }
  16 +
  17 + /// <summary>
  18 + /// 品项ID
  19 + /// </summary>
  20 + [Required(ErrorMessage = "品项ID不能为空")]
  21 + public string ItemId { get; set; }
  22 +
  23 + /// <summary>
  24 + /// 品项数量
  25 + /// </summary>
  26 + [Required(ErrorMessage = "品项数量不能为空")]
  27 + [Range(1, int.MaxValue, ErrorMessage = "品项数量必须大于0")]
  28 + public int ItemQuantity { get; set; }
  29 +
  30 + /// <summary>
  31 + /// 品项金额
  32 + /// </summary>
  33 + [Required(ErrorMessage = "品项金额不能为空")]
  34 + [Range(0, double.MaxValue, ErrorMessage = "品项金额必须大于等于0")]
  35 + public decimal ItemAmount { get; set; }
  36 +
  37 + /// <summary>
  38 + /// 品项备注
  39 + /// </summary>
  40 + public string ItemRemark { get; set; }
  41 +
  42 + /// <summary>
  43 + /// 排序
  44 + /// </summary>
  45 + public int SortOrder { get; set; } = 0;
  46 + }
  47 +}
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqKdQkbj/LqKdQkbjListOutput.cs renamed to netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqPackageItemDetail/LqPackageItemDetailInfoOutput.cs
1 using System; 1 using System;
2 2
3 -namespace NCC.Extend.Entitys.Dto.LqKdQkbj 3 +namespace NCC.Extend.Entitys.Dto.LqPackageItemDetail
4 { 4 {
5 /// <summary> 5 /// <summary>
6 - /// 开单欠款补缴记录列表输出 6 + /// 套餐品项明细详情输出
7 /// </summary> 7 /// </summary>
8 - public class LqKdQkbjListOutput 8 + public class LqPackageItemDetailInfoOutput
9 { 9 {
10 /// <summary> 10 /// <summary>
11 - /// 主键 11 + /// 明细ID
12 /// </summary> 12 /// </summary>
13 public string Id { get; set; } 13 public string Id { get; set; }
14 14
15 /// <summary> 15 /// <summary>
16 - /// 开单ID 16 + /// 套餐ID
17 /// </summary> 17 /// </summary>
18 - public string BillingId { get; set; } 18 + public string PackageId { get; set; }
19 19
20 /// <summary> 20 /// <summary>
21 - /// 补缴金额 21 + /// 品项ID
22 /// </summary> 22 /// </summary>
23 - public decimal PaymentAmount { get; set; } 23 + public string ItemId { get; set; }
24 24
25 /// <summary> 25 /// <summary>
26 - /// 补缴方式 26 + /// 品项数量
27 /// </summary> 27 /// </summary>
28 - public string PaymentMethod { get; set; } 28 + public int ItemQuantity { get; set; }
29 29
30 /// <summary> 30 /// <summary>
31 - /// 补缴方式名称 31 + /// 品项金额
32 /// </summary> 32 /// </summary>
33 - public string PaymentMethodName { get; set; } 33 + public decimal ItemAmount { get; set; }
34 34
35 /// <summary> 35 /// <summary>
36 - /// 补缴时间 36 + /// 品项备注
37 /// </summary> 37 /// </summary>
38 - public DateTime PaymentTime { get; set; } 38 + public string ItemRemark { get; set; }
39 39
40 /// <summary> 40 /// <summary>
41 - /// 补缴操作人 41 + /// 排序
42 /// </summary> 42 /// </summary>
43 - public string PaymentUser { get; set; } 43 + public int SortOrder { get; set; }
44 44
45 /// <summary> 45 /// <summary>
46 - /// 补缴操作人姓名  
47 - /// </summary>  
48 - public string PaymentUserName { get; set; }  
49 -  
50 - /// <summary>  
51 - /// 补缴账户  
52 - /// </summary>  
53 - public string PaymentAccount { get; set; }  
54 -  
55 - /// <summary>  
56 - /// 补缴凭证号  
57 - /// </summary>  
58 - public string PaymentReference { get; set; }  
59 -  
60 - /// <summary>  
61 - /// 补缴备注 46 + /// 创建时间
62 /// </summary> 47 /// </summary>
63 - public string Remark { get; set; } 48 + public DateTime CreateTime { get; set; }
64 49
65 /// <summary> 50 /// <summary>
66 - /// 创建时间 51 + /// 更新时间
67 /// </summary> 52 /// </summary>
68 - public DateTime CreateTime { get; set; } 53 + public DateTime UpdateTime { get; set; }
69 54
70 /// <summary> 55 /// <summary>
71 /// 是否有效 56 /// 是否有效
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqYxhdfa/LqYxhdfaListQueryInput.cs renamed to netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqPackageItemDetail/LqPackageItemDetailListOutput.cs
1 -using NCC.Common.Filter;  
2 -using System.Collections.Generic; 1 +using System;
3 2
4 -namespace NCC.Extend.Entitys.Dto.LqYxhdfa 3 +namespace NCC.Extend.Entitys.Dto.LqPackageItemDetail
5 { 4 {
6 /// <summary> 5 /// <summary>
7 - /// 营销活动方案列表查询输入 6 + /// 套餐品项明细列表输出
8 /// </summary> 7 /// </summary>
9 - public class LqYxhdfaListQueryInput : PageInputBase 8 + public class LqPackageItemDetailListOutput
10 { 9 {
11 /// <summary> 10 /// <summary>
12 - /// 选择导出数据key 11 + /// 明细ID
13 /// </summary> 12 /// </summary>
14 - public string selectKey { get; set; } 13 + public string Id { get; set; }
15 14
16 /// <summary> 15 /// <summary>
17 - /// 16 + /// 套餐ID
18 /// </summary> 17 /// </summary>
19 - public int dataType { get; set; }  
20 - 18 + public string PackageId { get; set; }
21 19
22 /// <summary> 20 /// <summary>
23 - /// 方案编号 21 + /// 品项ID
24 /// </summary> 22 /// </summary>
25 - public string id { get; set; }  
26 - 23 + public string ItemId { get; set; }
  24 +
27 /// <summary> 25 /// <summary>
28 - /// 营销活动编号 26 + /// 品项数量
29 /// </summary> 27 /// </summary>
30 - public string yxhdbh { get; set; }  
31 - 28 + public int ItemQuantity { get; set; }
  29 +
32 /// <summary> 30 /// <summary>
33 - /// 活动名称 31 + /// 品项金额
34 /// </summary> 32 /// </summary>
35 - public string hdmc { get; set; }  
36 - 33 + public decimal ItemAmount { get; set; }
  34 +
37 /// <summary> 35 /// <summary>
38 - /// 张数奖 36 + /// 排序
39 /// </summary> 37 /// </summary>
40 - public string zsj { get; set; }  
41 - 38 + public int SortOrder { get; set; }
  39 +
42 /// <summary> 40 /// <summary>
43 - /// 金额奖 41 + /// 创建时间
44 /// </summary> 42 /// </summary>
45 - public string jej { get; set; }  
46 - 43 + public DateTime CreateTime { get; set; }
47 } 44 }
48 } 45 }
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqYxhdfa/LqYxhdfaInfoOutput.cs renamed to netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqPackageItemDetail/LqPackageItemDetailListQueryInput.cs
1 -using System; 1 +using System;
2 2
3 -namespace NCC.Extend.Entitys.Dto.LqYxhdfa 3 +namespace NCC.Extend.Entitys.Dto.LqPackageItemDetail
4 { 4 {
5 /// <summary> 5 /// <summary>
6 - /// 营销活动方案输出参数 6 + /// 套餐品项明细列表查询输入
7 /// </summary> 7 /// </summary>
8 - public class LqYxhdfaInfoOutput 8 + public class LqPackageItemDetailListQueryInput
9 { 9 {
10 /// <summary> 10 /// <summary>
11 - /// 方案编号 11 + /// 套餐ID
12 /// </summary> 12 /// </summary>
13 - public string id { get; set; } 13 + public string PackageId { get; set; }
14 14
15 /// <summary> 15 /// <summary>
16 - /// 营销活动编号 16 + /// 品项ID
17 /// </summary> 17 /// </summary>
18 - public string yxhdbh { get; set; } 18 + public string ItemId { get; set; }
19 19
20 /// <summary> 20 /// <summary>
21 - /// 活动名称 21 + /// 是否有效
22 /// </summary> 22 /// </summary>
23 - public string hdmc { get; set; } 23 + public int? IsEffective { get; set; }
24 24
25 /// <summary> 25 /// <summary>
26 - /// 张数奖 26 + /// 创建时间开始
27 /// </summary> 27 /// </summary>
28 - public string zsj { get; set; } 28 + public DateTime? CreateTimeStart { get; set; }
29 29
30 /// <summary> 30 /// <summary>
31 - /// 金额奖 31 + /// 创建时间结束
32 /// </summary> 32 /// </summary>
33 - public string jej { get; set; } 33 + public DateTime? CreateTimeEnd { get; set; }
34 } 34 }
35 } 35 }
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqPackageItemDetail/LqPackageItemDetailUpInput.cs 0 → 100644
  1 +using System;
  2 +using System.ComponentModel.DataAnnotations;
  3 +
  4 +namespace NCC.Extend.Entitys.Dto.LqPackageItemDetail
  5 +{
  6 + /// <summary>
  7 + /// 套餐品项明细更新输入
  8 + /// </summary>
  9 + public class LqPackageItemDetailUpInput
  10 + {
  11 + /// <summary>
  12 + /// 明细ID
  13 + /// </summary>
  14 + [Required(ErrorMessage = "明细ID不能为空")]
  15 + public string Id { get; set; }
  16 +
  17 + /// <summary>
  18 + /// 套餐ID
  19 + /// </summary>
  20 + [Required(ErrorMessage = "套餐ID不能为空")]
  21 + public string PackageId { get; set; }
  22 +
  23 + /// <summary>
  24 + /// 品项ID
  25 + /// </summary>
  26 + [Required(ErrorMessage = "品项ID不能为空")]
  27 + public string ItemId { get; set; }
  28 +
  29 + /// <summary>
  30 + /// 品项数量
  31 + /// </summary>
  32 + [Required(ErrorMessage = "品项数量不能为空")]
  33 + [Range(1, int.MaxValue, ErrorMessage = "品项数量必须大于0")]
  34 + public int ItemQuantity { get; set; }
  35 +
  36 + /// <summary>
  37 + /// 品项金额
  38 + /// </summary>
  39 + [Required(ErrorMessage = "品项金额不能为空")]
  40 + [Range(0, double.MaxValue, ErrorMessage = "品项金额必须大于等于0")]
  41 + public decimal ItemAmount { get; set; }
  42 +
  43 + /// <summary>
  44 + /// 品项备注
  45 + /// </summary>
  46 + public string ItemRemark { get; set; }
  47 +
  48 + /// <summary>
  49 + /// 排序
  50 + /// </summary>
  51 + public int SortOrder { get; set; }
  52 + }
  53 +}
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqSkzh/LqSkzhListQueryInput.cs
@@ -23,16 +23,16 @@ namespace NCC.Extend.Entitys.Dto.LqSkzh @@ -23,16 +23,16 @@ namespace NCC.Extend.Entitys.Dto.LqSkzh
23 /// 收款途径编号 23 /// 收款途径编号
24 /// </summary> 24 /// </summary>
25 public string id { get; set; } 25 public string id { get; set; }
26 - 26 +
27 /// <summary> 27 /// <summary>
28 /// 收款途径 28 /// 收款途径
29 /// </summary> 29 /// </summary>
30 public string sktj { get; set; } 30 public string sktj { get; set; }
31 - 31 +
32 /// <summary> 32 /// <summary>
33 /// 收款账号 33 /// 收款账号
34 /// </summary> 34 /// </summary>
35 public string skzh { get; set; } 35 public string skzh { get; set; }
36 - 36 +
37 } 37 }
38 } 38 }
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqTkjlb/LqTkjlbInfoOutput.cs
@@ -82,5 +82,10 @@ namespace NCC.Extend.Entitys.Dto.LqTkjlb @@ -82,5 +82,10 @@ namespace NCC.Extend.Entitys.Dto.LqTkjlb
82 /// 拓客活动名称 82 /// 拓客活动名称
83 /// </summary> 83 /// </summary>
84 public string eventName { get; set; } 84 public string eventName { get; set; }
  85 +
  86 + /// <summary>
  87 + /// 是否有效
  88 + /// </summary>
  89 + public int isEffective { get; set; }
85 } 90 }
86 } 91 }
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqTkjlb/LqTkjlbListOutput.cs
@@ -92,5 +92,10 @@ namespace NCC.Extend.Entitys.Dto.LqTkjlb @@ -92,5 +92,10 @@ namespace NCC.Extend.Entitys.Dto.LqTkjlb
92 /// 拓客活动名称 92 /// 拓客活动名称
93 /// </summary> 93 /// </summary>
94 public string eventName { get; set; } 94 public string eventName { get; set; }
  95 +
  96 + /// <summary>
  97 + /// 是否有效
  98 + /// </summary>
  99 + public int isEffective { get; set; }
95 } 100 }
96 } 101 }
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqXhHyhk/LqXhHyhkListOutput.cs
@@ -11,66 +11,71 @@ namespace NCC.Extend.Entitys.Dto.LqXhHyhk @@ -11,66 +11,71 @@ namespace NCC.Extend.Entitys.Dto.LqXhHyhk
11 /// 耗卡编号 11 /// 耗卡编号
12 /// </summary> 12 /// </summary>
13 public string id { get; set; } 13 public string id { get; set; }
14 - 14 +
15 /// <summary> 15 /// <summary>
16 /// 门店 16 /// 门店
17 /// </summary> 17 /// </summary>
18 public string md { get; set; } 18 public string md { get; set; }
19 - 19 +
20 /// <summary> 20 /// <summary>
21 /// 门店编号 21 /// 门店编号
22 /// </summary> 22 /// </summary>
23 public string mdbh { get; set; } 23 public string mdbh { get; set; }
24 - 24 +
25 /// <summary> 25 /// <summary>
26 /// 门店名称 26 /// 门店名称
27 /// </summary> 27 /// </summary>
28 public string mdmc { get; set; } 28 public string mdmc { get; set; }
29 - 29 +
30 /// <summary> 30 /// <summary>
31 /// 会员 31 /// 会员
32 /// </summary> 32 /// </summary>
33 public string hy { get; set; } 33 public string hy { get; set; }
34 - 34 +
35 /// <summary> 35 /// <summary>
36 /// 会员账号 36 /// 会员账号
37 /// </summary> 37 /// </summary>
38 public string hyzh { get; set; } 38 public string hyzh { get; set; }
39 - 39 +
  40 + /// <summary>
  41 + /// 会员手机号
  42 + /// </summary>
  43 + public string memberPhone { get; set; }
  44 +
40 /// <summary> 45 /// <summary>
41 /// 会员名称 46 /// 会员名称
42 /// </summary> 47 /// </summary>
43 public string hymc { get; set; } 48 public string hymc { get; set; }
44 - 49 +
45 /// <summary> 50 /// <summary>
46 /// 顾客类型 51 /// 顾客类型
47 /// </summary> 52 /// </summary>
48 public string gklx { get; set; } 53 public string gklx { get; set; }
49 - 54 +
50 /// <summary> 55 /// <summary>
51 /// 消费金额 56 /// 消费金额
52 /// </summary> 57 /// </summary>
53 public string xfje { get; set; } 58 public string xfje { get; set; }
54 - 59 +
55 /// <summary> 60 /// <summary>
56 /// 手工费用 61 /// 手工费用
57 /// </summary> 62 /// </summary>
58 public string sgfy { get; set; } 63 public string sgfy { get; set; }
59 - 64 +
60 /// <summary> 65 /// <summary>
61 /// 是否有科技部 66 /// 是否有科技部
62 /// </summary> 67 /// </summary>
63 public string sfykjb { get; set; } 68 public string sfykjb { get; set; }
64 - 69 +
65 /// <summary> 70 /// <summary>
66 /// 耗卡时间 71 /// 耗卡时间
67 /// </summary> 72 /// </summary>
68 public DateTime? hksj { get; set; } 73 public DateTime? hksj { get; set; }
69 - 74 +
70 /// <summary> 75 /// <summary>
71 /// 操作人员 76 /// 操作人员
72 /// </summary> 77 /// </summary>
73 public string czry { get; set; } 78 public string czry { get; set; }
74 - 79 +
75 } 80 }
76 } 81 }
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqXhHyhk/LqXhHyhkMemberCardUsageOutput.cs 0 → 100644
  1 +using System;
  2 +using System.Collections.Generic;
  3 +
  4 +namespace NCC.Extend.Entitys.Dto.LqXhHyhk
  5 +{
  6 + /// <summary>
  7 + /// 会员耗卡记录输出
  8 + /// </summary>
  9 + public class LqXhHyhkMemberCardUsageOutput
  10 + {
  11 + /// <summary>
  12 + /// 耗卡记录ID
  13 + /// </summary>
  14 + public string Id { get; set; }
  15 +
  16 + /// <summary>
  17 + /// 会员ID
  18 + /// </summary>
  19 + public string MemberId { get; set; }
  20 +
  21 + /// <summary>
  22 + /// 会员姓名
  23 + /// </summary>
  24 + public string MemberName { get; set; }
  25 +
  26 + /// <summary>
  27 + /// 门店ID
  28 + /// </summary>
  29 + public string StoreId { get; set; }
  30 +
  31 + /// <summary>
  32 + /// 门店名称
  33 + /// </summary>
  34 + public string StoreName { get; set; }
  35 +
  36 + /// <summary>
  37 + /// 耗卡时间
  38 + /// </summary>
  39 + public DateTime? UsageDate { get; set; }
  40 +
  41 + /// <summary>
  42 + /// 消费金额
  43 + /// </summary>
  44 + public decimal? TotalAmount { get; set; }
  45 +
  46 + /// <summary>
  47 + /// 备注
  48 + /// </summary>
  49 + public string Remarks { get; set; }
  50 +
  51 + /// <summary>
  52 + /// 创建时间
  53 + /// </summary>
  54 + public DateTime? CreateTime { get; set; }
  55 +
  56 + /// <summary>
  57 + /// 品项明细列表
  58 + /// </summary>
  59 + public List<LqXhHyhkMemberCardUsageItemDetail> ItemDetails { get; set; } = new List<LqXhHyhkMemberCardUsageItemDetail>();
  60 + }
  61 +
  62 + /// <summary>
  63 + /// 会员耗卡记录品项明细
  64 + /// </summary>
  65 + public class LqXhHyhkMemberCardUsageItemDetail
  66 + {
  67 + /// <summary>
  68 + /// 明细ID
  69 + /// </summary>
  70 + public string Id { get; set; }
  71 +
  72 + /// <summary>
  73 + /// 品项ID
  74 + /// </summary>
  75 + public string ItemId { get; set; }
  76 +
  77 + /// <summary>
  78 + /// 品项名称
  79 + /// </summary>
  80 + public string ItemName { get; set; }
  81 +
  82 + /// <summary>
  83 + /// 单价
  84 + /// </summary>
  85 + public decimal? UnitPrice { get; set; }
  86 +
  87 + /// <summary>
  88 + /// 项目次数
  89 + /// </summary>
  90 + public int? ProjectNumber { get; set; }
  91 +
  92 + /// <summary>
  93 + /// 合计金额
  94 + /// </summary>
  95 + public decimal? TotalPrice { get; set; }
  96 +
  97 + /// <summary>
  98 + /// 来源类型
  99 + /// </summary>
  100 + public string SourceType { get; set; }
  101 +
  102 + /// <summary>
  103 + /// 创建时间
  104 + /// </summary>
  105 + public DateTime? CreateTime { get; set; }
  106 + }
  107 +}
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqXhHyhk/LqXhHyhkMemberCardUsageQueryInput.cs 0 → 100644
  1 +using NCC.Common.Filter;
  2 +using System.ComponentModel.DataAnnotations;
  3 +
  4 +namespace NCC.Extend.Entitys.Dto.LqXhHyhk
  5 +{
  6 + /// <summary>
  7 + /// 会员耗卡记录查询输入
  8 + /// </summary>
  9 + public class LqXhHyhkMemberCardUsageQueryInput : PageInputBase
  10 + {
  11 + /// <summary>
  12 + /// 会员ID
  13 + /// </summary>
  14 + [Required(ErrorMessage = "会员ID不能为空")]
  15 + public string MemberId { get; set; }
  16 +
  17 + /// <summary>
  18 + /// 门店ID
  19 + /// </summary>
  20 + public string StoreId { get; set; }
  21 +
  22 + /// <summary>
  23 + /// 开始时间
  24 + /// </summary>
  25 + public System.DateTime? StartTime { get; set; }
  26 +
  27 + /// <summary>
  28 + /// 结束时间
  29 + /// </summary>
  30 + public System.DateTime? EndTime { get; set; }
  31 + }
  32 +}
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqXhHyhk/LqXhJksyjQueryInput.cs 0 → 100644
  1 +using System;
  2 +using System.ComponentModel.DataAnnotations;
  3 +using NCC.Common.Filter;
  4 +
  5 +namespace NCC.Extend.Entitys.Dto.LqXhHyhk
  6 +{
  7 + /// <summary>
  8 + /// 健康师业绩查询输入
  9 + /// </summary>
  10 + public class LqXhJksyjQueryInput : PageInputBase
  11 + {
  12 + /// <summary>
  13 + /// 开单记录ID
  14 + /// </summary>
  15 + [Display(Name = "开单记录ID", Description = "关联的开单记录ID")]
  16 + public string Glkdbh { get; set; }
  17 +
  18 + /// <summary>
  19 + /// 健康师ID
  20 + /// </summary>
  21 + [Display(Name = "健康师ID", Description = "健康师用户ID,可选")]
  22 + public string JksId { get; set; }
  23 +
  24 + /// <summary>
  25 + /// 开始时间
  26 + /// </summary>
  27 + [Display(Name = "开始时间", Description = "查询开始时间")]
  28 + public DateTime? StartTime { get; set; }
  29 +
  30 + /// <summary>
  31 + /// 结束时间
  32 + /// </summary>
  33 + [Display(Name = "结束时间", Description = "查询结束时间")]
  34 + public DateTime? EndTime { get; set; }
  35 + }
  36 +}
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqXhJksyj/LqXhJksyjInfoOutput.cs
@@ -11,27 +11,27 @@ namespace NCC.Extend.Entitys.Dto.LqXhJksyj @@ -11,27 +11,27 @@ namespace NCC.Extend.Entitys.Dto.LqXhJksyj
11 /// 业绩编号 11 /// 业绩编号
12 /// </summary> 12 /// </summary>
13 public string id { get; set; } 13 public string id { get; set; }
14 - 14 +
15 /// <summary> 15 /// <summary>
16 /// 关联开单编号 16 /// 关联开单编号
17 /// </summary> 17 /// </summary>
18 public string glkdbh { get; set; } 18 public string glkdbh { get; set; }
19 - 19 +
20 /// <summary> 20 /// <summary>
21 /// 健康师 21 /// 健康师
22 /// </summary> 22 /// </summary>
23 public string jks { get; set; } 23 public string jks { get; set; }
24 - 24 +
25 /// <summary> 25 /// <summary>
26 /// 健康师姓名 26 /// 健康师姓名
27 /// </summary> 27 /// </summary>
28 public string jksxm { get; set; } 28 public string jksxm { get; set; }
29 - 29 +
30 /// <summary> 30 /// <summary>
31 /// 健康师账号 31 /// 健康师账号
32 /// </summary> 32 /// </summary>
33 public string jkszh { get; set; } 33 public string jkszh { get; set; }
34 - 34 +
35 /// <summary> 35 /// <summary>
36 /// 健康师业绩 36 /// 健康师业绩
37 /// </summary> 37 /// </summary>
@@ -43,6 +43,11 @@ namespace NCC.Extend.Entitys.Dto.LqXhJksyj @@ -43,6 +43,11 @@ namespace NCC.Extend.Entitys.Dto.LqXhJksyj
43 public DateTime? yjsj { get; set; } 43 public DateTime? yjsj { get; set; }
44 44
45 /// <summary> 45 /// <summary>
  46 + /// 门店
  47 + /// </summary>
  48 + public string storeName { get; set; }
  49 +
  50 + /// <summary>
46 /// 金三角id 51 /// 金三角id
47 /// </summary> 52 /// </summary>
48 public string jsjId { get; set; } 53 public string jsjId { get; set; }
@@ -61,5 +66,16 @@ namespace NCC.Extend.Entitys.Dto.LqXhJksyj @@ -61,5 +66,16 @@ namespace NCC.Extend.Entitys.Dto.LqXhJksyj
61 /// 耗卡品项次数 66 /// 耗卡品项次数
62 /// </summary> 67 /// </summary>
63 public decimal? kdpxNumber { get; set; } 68 public decimal? kdpxNumber { get; set; }
  69 +
  70 + /// <summary>
  71 + /// 会员id
  72 + /// </summary>
  73 + public string memberId { get; set; }
  74 +
  75 +
  76 + /// <summary>
  77 + /// 会员名称
  78 + /// </summary>
  79 + public string memberName { get; set; }
64 } 80 }
65 } 81 }
66 \ No newline at end of file 82 \ No newline at end of file
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqXhmxb/LqXhmxbCrInput.cs deleted
1 -using System;  
2 -using System.Collections.Generic;  
3 -  
4 -namespace NCC.Extend.Entitys.Dto.LqXhmxb  
5 -{  
6 - /// <summary>  
7 - /// 消耗明细表修改输入参数  
8 - /// </summary>  
9 - public class LqXhmxbCrInput  
10 - {  
11 - /// <summary>  
12 - /// 消耗编号  
13 - /// </summary>  
14 - public string id { get; set; }  
15 -  
16 - /// <summary>  
17 - /// 门店编号  
18 - /// </summary>  
19 - public string mdbh { get; set; }  
20 -  
21 - /// <summary>  
22 - /// 门店名称  
23 - /// </summary>  
24 - public string mdmc { get; set; }  
25 -  
26 - /// <summary>  
27 - /// 部门编号  
28 - /// </summary>  
29 - public string bmbh { get; set; }  
30 -  
31 - /// <summary>  
32 - /// 部门名称  
33 - /// </summary>  
34 - public string bmmc { get; set; }  
35 -  
36 - /// <summary>  
37 - /// 员工编号  
38 - /// </summary>  
39 - public string ygbh { get; set; }  
40 -  
41 - /// <summary>  
42 - /// 员工名称  
43 - /// </summary>  
44 - public string ygmc { get; set; }  
45 -  
46 - /// <summary>  
47 - /// 项目数  
48 - /// </summary>  
49 - public string xms { get; set; }  
50 -  
51 - /// <summary>  
52 - /// 消耗  
53 - /// </summary>  
54 - public string xh { get; set; }  
55 -  
56 - /// <summary>  
57 - /// 手工  
58 - /// </summary>  
59 - public string sg { get; set; }  
60 -  
61 - /// <summary>  
62 - /// 其它手工1  
63 - /// </summary>  
64 - public string qtsg1 { get; set; }  
65 -  
66 - /// <summary>  
67 - /// 其它手工2  
68 - /// </summary>  
69 - public string qtsg2 { get; set; }  
70 -  
71 - /// <summary>  
72 - /// 其它手工3  
73 - /// </summary>  
74 - public string qtsg3 { get; set; }  
75 -  
76 - /// <summary>  
77 - /// 手工合计  
78 - /// </summary>  
79 - public string sghj { get; set; }  
80 -  
81 - }  
82 -}  
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqXhmxb/LqXhmxbInfoOutput.cs deleted
1 -using System;  
2 -using System.Collections.Generic;  
3 -  
4 -namespace NCC.Extend.Entitys.Dto.LqXhmxb  
5 -{  
6 - /// <summary>  
7 - /// 消耗明细表输出参数  
8 - /// </summary>  
9 - public class LqXhmxbInfoOutput  
10 - {  
11 - /// <summary>  
12 - /// 消耗编号  
13 - /// </summary>  
14 - public string id { get; set; }  
15 -  
16 - /// <summary>  
17 - /// 门店编号  
18 - /// </summary>  
19 - public string mdbh { get; set; }  
20 -  
21 - /// <summary>  
22 - /// 门店名称  
23 - /// </summary>  
24 - public string mdmc { get; set; }  
25 -  
26 - /// <summary>  
27 - /// 部门编号  
28 - /// </summary>  
29 - public string bmbh { get; set; }  
30 -  
31 - /// <summary>  
32 - /// 部门名称  
33 - /// </summary>  
34 - public string bmmc { get; set; }  
35 -  
36 - /// <summary>  
37 - /// 员工编号  
38 - /// </summary>  
39 - public string ygbh { get; set; }  
40 -  
41 - /// <summary>  
42 - /// 员工名称  
43 - /// </summary>  
44 - public string ygmc { get; set; }  
45 -  
46 - /// <summary>  
47 - /// 项目数  
48 - /// </summary>  
49 - public string xms { get; set; }  
50 -  
51 - /// <summary>  
52 - /// 消耗  
53 - /// </summary>  
54 - public string xh { get; set; }  
55 -  
56 - /// <summary>  
57 - /// 手工  
58 - /// </summary>  
59 - public string sg { get; set; }  
60 -  
61 - /// <summary>  
62 - /// 其它手工1  
63 - /// </summary>  
64 - public string qtsg1 { get; set; }  
65 -  
66 - /// <summary>  
67 - /// 其它手工2  
68 - /// </summary>  
69 - public string qtsg2 { get; set; }  
70 -  
71 - /// <summary>  
72 - /// 其它手工3  
73 - /// </summary>  
74 - public string qtsg3 { get; set; }  
75 -  
76 - /// <summary>  
77 - /// 手工合计  
78 - /// </summary>  
79 - public string sghj { get; set; }  
80 -  
81 - }  
82 -}  
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqXhmxb/LqXhmxbListOutput.cs deleted
1 -using System;  
2 -  
3 -namespace NCC.Extend.Entitys.Dto.LqXhmxb  
4 -{  
5 - /// <summary>  
6 - /// 消耗明细表输入参数  
7 - /// </summary>  
8 - public class LqXhmxbListOutput  
9 - {  
10 - /// <summary>  
11 - /// 消耗编号  
12 - /// </summary>  
13 - public string id { get; set; }  
14 -  
15 - /// <summary>  
16 - /// 门店编号  
17 - /// </summary>  
18 - public string mdbh { get; set; }  
19 -  
20 - /// <summary>  
21 - /// 门店名称  
22 - /// </summary>  
23 - public string mdmc { get; set; }  
24 -  
25 - /// <summary>  
26 - /// 部门编号  
27 - /// </summary>  
28 - public string bmbh { get; set; }  
29 -  
30 - /// <summary>  
31 - /// 部门名称  
32 - /// </summary>  
33 - public string bmmc { get; set; }  
34 -  
35 - /// <summary>  
36 - /// 员工编号  
37 - /// </summary>  
38 - public string ygbh { get; set; }  
39 -  
40 - /// <summary>  
41 - /// 员工名称  
42 - /// </summary>  
43 - public string ygmc { get; set; }  
44 -  
45 - /// <summary>  
46 - /// 项目数  
47 - /// </summary>  
48 - public string xms { get; set; }  
49 -  
50 - /// <summary>  
51 - /// 消耗  
52 - /// </summary>  
53 - public string xh { get; set; }  
54 -  
55 - /// <summary>  
56 - /// 手工  
57 - /// </summary>  
58 - public string sg { get; set; }  
59 -  
60 - /// <summary>  
61 - /// 其它手工1  
62 - /// </summary>  
63 - public string qtsg1 { get; set; }  
64 -  
65 - /// <summary>  
66 - /// 其它手工2  
67 - /// </summary>  
68 - public string qtsg2 { get; set; }  
69 -  
70 - /// <summary>  
71 - /// 其它手工3  
72 - /// </summary>  
73 - public string qtsg3 { get; set; }  
74 -  
75 - /// <summary>  
76 - /// 手工合计  
77 - /// </summary>  
78 - public string sghj { get; set; }  
79 -  
80 - }  
81 -}  
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqXhmxb/LqXhmxbListQueryInput.cs deleted
1 -using NCC.Common.Filter;  
2 -using System.Collections.Generic;  
3 -  
4 -namespace NCC.Extend.Entitys.Dto.LqXhmxb  
5 -{  
6 - /// <summary>  
7 - /// 消耗明细表列表查询输入  
8 - /// </summary>  
9 - public class LqXhmxbListQueryInput : PageInputBase  
10 - {  
11 - /// <summary>  
12 - /// 选择导出数据key  
13 - /// </summary>  
14 - public string selectKey { get; set; }  
15 -  
16 - /// <summary>  
17 - ///  
18 - /// </summary>  
19 - public int dataType { get; set; }  
20 -  
21 -  
22 - /// <summary>  
23 - /// 消耗编号  
24 - /// </summary>  
25 - public string id { get; set; }  
26 -  
27 - /// <summary>  
28 - /// 门店编号  
29 - /// </summary>  
30 - public string mdbh { get; set; }  
31 -  
32 - /// <summary>  
33 - /// 门店名称  
34 - /// </summary>  
35 - public string mdmc { get; set; }  
36 -  
37 - /// <summary>  
38 - /// 部门编号  
39 - /// </summary>  
40 - public string bmbh { get; set; }  
41 -  
42 - /// <summary>  
43 - /// 部门名称  
44 - /// </summary>  
45 - public string bmmc { get; set; }  
46 -  
47 - /// <summary>  
48 - /// 员工编号  
49 - /// </summary>  
50 - public string ygbh { get; set; }  
51 -  
52 - /// <summary>  
53 - /// 员工名称  
54 - /// </summary>  
55 - public string ygmc { get; set; }  
56 -  
57 - /// <summary>  
58 - /// 项目数  
59 - /// </summary>  
60 - public string xms { get; set; }  
61 -  
62 - /// <summary>  
63 - /// 消耗  
64 - /// </summary>  
65 - public string xh { get; set; }  
66 -  
67 - /// <summary>  
68 - /// 手工  
69 - /// </summary>  
70 - public string sg { get; set; }  
71 -  
72 - /// <summary>  
73 - /// 其它手工1  
74 - /// </summary>  
75 - public string qtsg1 { get; set; }  
76 -  
77 - /// <summary>  
78 - /// 其它手工2  
79 - /// </summary>  
80 - public string qtsg2 { get; set; }  
81 -  
82 - /// <summary>  
83 - /// 其它手工3  
84 - /// </summary>  
85 - public string qtsg3 { get; set; }  
86 -  
87 - /// <summary>  
88 - /// 手工合计  
89 - /// </summary>  
90 - public string sghj { get; set; }  
91 -  
92 - }  
93 -}  
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqYxhdfa/LqYxhdfaCrInput.cs deleted
1 -using System;  
2 -using System.ComponentModel.DataAnnotations;  
3 -  
4 -namespace NCC.Extend.Entitys.Dto.LqYxhdfa  
5 -{  
6 - /// <summary>  
7 - /// 营销活动方案创建输入参数  
8 - /// </summary>  
9 - public class LqYxhdfaCrInput  
10 - {  
11 - /// <summary>  
12 - /// 方案编号  
13 - /// </summary>  
14 - public string id { get; set; }  
15 -  
16 - /// <summary>  
17 - /// 营销活动编号  
18 - /// </summary>  
19 - [Required(ErrorMessage = "营销活动编号不能为空")]  
20 - public string yxhdbh { get; set; }  
21 -  
22 - /// <summary>  
23 - /// 活动名称  
24 - /// </summary>  
25 - [Required(ErrorMessage = "活动名称不能为空")]  
26 - [StringLength(200, ErrorMessage = "活动名称长度不能超过200个字符")]  
27 - public string hdmc { get; set; }  
28 -  
29 - /// <summary>  
30 - /// 张数奖  
31 - /// </summary>  
32 - public string zsj { get; set; }  
33 -  
34 - /// <summary>  
35 - /// 金额奖  
36 - /// </summary>  
37 - public string jej { get; set; }  
38 - }  
39 -}  
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqYxhdfa/LqYxhdfaListOutput.cs deleted
1 -using System;  
2 -  
3 -namespace NCC.Extend.Entitys.Dto.LqYxhdfa  
4 -{  
5 - /// <summary>  
6 - /// 营销活动方案输入参数  
7 - /// </summary>  
8 - public class LqYxhdfaListOutput  
9 - {  
10 - /// <summary>  
11 - /// 方案编号  
12 - /// </summary>  
13 - public string id { get; set; }  
14 -  
15 - /// <summary>  
16 - /// 营销活动编号  
17 - /// </summary>  
18 - public string yxhdbh { get; set; }  
19 -  
20 - /// <summary>  
21 - /// 活动名称  
22 - /// </summary>  
23 - public string hdmc { get; set; }  
24 -  
25 - /// <summary>  
26 - /// 张数奖  
27 - /// </summary>  
28 - public string zsj { get; set; }  
29 -  
30 - /// <summary>  
31 - /// 金额奖  
32 - /// </summary>  
33 - public string jej { get; set; }  
34 -  
35 - }  
36 -}  
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqYxhdfa/LqYxhdfaUpInput.cs deleted
1 -using System;  
2 -using System.Collections.Generic;  
3 -  
4 -namespace NCC.Extend.Entitys.Dto.LqYxhdfa  
5 -{  
6 - /// <summary>  
7 - /// 营销活动方案更新输入参数  
8 - /// </summary>  
9 - public class LqYxhdfaUpInput : LqYxhdfaCrInput  
10 - {  
11 - /// <summary>  
12 - /// 方案编号  
13 - /// </summary>  
14 - public string id { get; set; }  
15 -  
16 - }  
17 -}  
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Entity/README.md
@@ -65,7 +65,7 @@ @@ -65,7 +65,7 @@
65 - `lq_tkjlb/` - 拓客记录表 65 - `lq_tkjlb/` - 拓客记录表
66 - (已删除) `lq_tk_xsc/` - 拓客记录表 66 - (已删除) `lq_tk_xsc/` - 拓客记录表
67 - `lq_yaoyjl/` - 邀约记录 67 - `lq_yaoyjl/` - 邀约记录
68 -- `lq_yxhdfa/` - 营销活动方案 68 +- (已删除) `lq_yxhdfa/` - 营销活动方案
69 - `lq_yyjl/` - 预约记录 69 - `lq_yyjl/` - 预约记录
70 - `lq_cpxx/` - 产品资料 70 - `lq_cpxx/` - 产品资料
71 - `lq_gz/` - 工资全字段 71 - `lq_gz/` - 工资全字段
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Entity/lq_hytk_hytk/LqHytkHytkEntity.cs
1 using NCC.Common.Const; 1 using NCC.Common.Const;
  2 +using NCC.Extend.Entitys.Enum;
2 using SqlSugar; 3 using SqlSugar;
3 using System; 4 using System;
4 5
@@ -16,127 +17,125 @@ namespace NCC.Extend.Entitys.lq_hytk_hytk @@ -16,127 +17,125 @@ namespace NCC.Extend.Entitys.lq_hytk_hytk
16 /// </summary> 17 /// </summary>
17 [SugarColumn(ColumnName = "F_Id", IsPrimaryKey = true)] 18 [SugarColumn(ColumnName = "F_Id", IsPrimaryKey = true)]
18 public string Id { get; set; } 19 public string Id { get; set; }
19 - 20 +
20 /// <summary> 21 /// <summary>
21 /// 门店 22 /// 门店
22 /// </summary> 23 /// </summary>
23 - [SugarColumn(ColumnName = "md")] 24 + [SugarColumn(ColumnName = "md")]
24 public string Md { get; set; } 25 public string Md { get; set; }
25 - 26 +
26 /// <summary> 27 /// <summary>
27 /// 门店编号 28 /// 门店编号
28 /// </summary> 29 /// </summary>
29 - [SugarColumn(ColumnName = "mdbh")] 30 + [SugarColumn(ColumnName = "mdbh")]
30 public string Mdbh { get; set; } 31 public string Mdbh { get; set; }
31 - 32 +
32 /// <summary> 33 /// <summary>
33 /// 门店名称 34 /// 门店名称
34 /// </summary> 35 /// </summary>
35 - [SugarColumn(ColumnName = "mdmc")] 36 + [SugarColumn(ColumnName = "mdmc")]
36 public string Mdmc { get; set; } 37 public string Mdmc { get; set; }
37 - 38 +
38 /// <summary> 39 /// <summary>
39 /// 会员 40 /// 会员
40 /// </summary> 41 /// </summary>
41 - [SugarColumn(ColumnName = "hy")] 42 + [SugarColumn(ColumnName = "hy")]
42 public string Hy { get; set; } 43 public string Hy { get; set; }
43 - 44 +
44 /// <summary> 45 /// <summary>
45 /// 会员姓名 46 /// 会员姓名
46 /// </summary> 47 /// </summary>
47 - [SugarColumn(ColumnName = "hymc")] 48 + [SugarColumn(ColumnName = "hymc")]
48 public string Hymc { get; set; } 49 public string Hymc { get; set; }
49 - 50 +
50 /// <summary> 51 /// <summary>
51 /// 会员账号 52 /// 会员账号
52 /// </summary> 53 /// </summary>
53 - [SugarColumn(ColumnName = "hyzh")] 54 + [SugarColumn(ColumnName = "hyzh")]
54 public string Hyzh { get; set; } 55 public string Hyzh { get; set; }
55 - 56 +
56 /// <summary> 57 /// <summary>
57 /// 顾客类型 58 /// 顾客类型
58 /// </summary> 59 /// </summary>
59 - [SugarColumn(ColumnName = "gklx")] 60 + [SugarColumn(ColumnName = "gklx")]
60 public string Gklx { get; set; } 61 public string Gklx { get; set; }
61 - 62 +
62 /// <summary> 63 /// <summary>
63 /// 退卡总金额 64 /// 退卡总金额
64 /// </summary> 65 /// </summary>
65 - [SugarColumn(ColumnName = "tkje")] 66 + [SugarColumn(ColumnName = "tkje")]
66 public decimal? Tkje { get; set; } 67 public decimal? Tkje { get; set; }
67 - 68 +
68 /// <summary> 69 /// <summary>
69 /// 手工费用 70 /// 手工费用
70 /// </summary> 71 /// </summary>
71 - [SugarColumn(ColumnName = "sgfy")] 72 + [SugarColumn(ColumnName = "sgfy")]
72 public decimal? Sgfy { get; set; } 73 public decimal? Sgfy { get; set; }
73 - 74 +
74 /// <summary> 75 /// <summary>
75 /// 备注 76 /// 备注
76 /// </summary> 77 /// </summary>
77 - [SugarColumn(ColumnName = "bz")] 78 + [SugarColumn(ColumnName = "bz")]
78 public string Bz { get; set; } 79 public string Bz { get; set; }
79 - 80 +
80 /// <summary> 81 /// <summary>
81 /// 退卡时间 82 /// 退卡时间
82 /// </summary> 83 /// </summary>
83 - [SugarColumn(ColumnName = "tksj")] 84 + [SugarColumn(ColumnName = "tksj")]
84 public DateTime? Tksj { get; set; } 85 public DateTime? Tksj { get; set; }
85 - 86 +
86 /// <summary> 87 /// <summary>
87 /// 操作人员 88 /// 操作人员
88 /// </summary> 89 /// </summary>
89 - [SugarColumn(ColumnName = "czry")] 90 + [SugarColumn(ColumnName = "czry")]
90 public string Czry { get; set; } 91 public string Czry { get; set; }
91 - 92 +
92 /// <summary> 93 /// <summary>
93 /// 退卡状态 94 /// 退卡状态
94 /// </summary> 95 /// </summary>
95 - [SugarColumn(ColumnName = "tkzt")] 96 + [SugarColumn(ColumnName = "tkzt")]
96 public string Tkzt { get; set; } 97 public string Tkzt { get; set; }
97 - 98 +
98 /// <summary> 99 /// <summary>
99 /// 退卡原因 100 /// 退卡原因
100 /// </summary> 101 /// </summary>
101 - [SugarColumn(ColumnName = "tkyy")] 102 + [SugarColumn(ColumnName = "tkyy")]
102 public string Tkyy { get; set; } 103 public string Tkyy { get; set; }
103 104
104 -  
105 /// <summary> 105 /// <summary>
106 /// 退卡附件 106 /// 退卡附件
107 /// </summary> 107 /// </summary>
108 - [SugarColumn(ColumnName = "F_FileUrl")] 108 + [SugarColumn(ColumnName = "F_FileUrl")]
109 public string FileUrl { get; set; } 109 public string FileUrl { get; set; }
110 - 110 +
111 /// <summary> 111 /// <summary>
112 /// 创建时间 112 /// 创建时间
113 /// </summary> 113 /// </summary>
114 - [SugarColumn(ColumnName = "F_CreateTime")] 114 + [SugarColumn(ColumnName = "F_CreateTime")]
115 public DateTime? F_CreateTime { get; set; } 115 public DateTime? F_CreateTime { get; set; }
116 - 116 +
117 /// <summary> 117 /// <summary>
118 /// 创建用户 118 /// 创建用户
119 /// </summary> 119 /// </summary>
120 - [SugarColumn(ColumnName = "F_CreateUser")] 120 + [SugarColumn(ColumnName = "F_CreateUser")]
121 public string F_CreateUser { get; set; } 121 public string F_CreateUser { get; set; }
122 - 122 +
123 /// <summary> 123 /// <summary>
124 /// 修改时间 124 /// 修改时间
125 /// </summary> 125 /// </summary>
126 - [SugarColumn(ColumnName = "F_ModifyTime")] 126 + [SugarColumn(ColumnName = "F_ModifyTime")]
127 public DateTime? F_ModifyTime { get; set; } 127 public DateTime? F_ModifyTime { get; set; }
128 - 128 +
129 /// <summary> 129 /// <summary>
130 /// 修改用户 130 /// 修改用户
131 /// </summary> 131 /// </summary>
132 - [SugarColumn(ColumnName = "F_ModifyUser")] 132 + [SugarColumn(ColumnName = "F_ModifyUser")]
133 public string F_ModifyUser { get; set; } 133 public string F_ModifyUser { get; set; }
134 - 134 +
135 /// <summary> 135 /// <summary>
136 - /// 删除标记 136 + /// 是否有效
137 /// </summary> 137 /// </summary>
138 - [SugarColumn(ColumnName = "F_DeleteMark")]  
139 - public int? F_DeleteMark { get; set; }  
140 - 138 + [SugarColumn(ColumnName = "F_IsEffective")]
  139 + public int IsEffective { get; set; } = StatusEnum.有效.GetHashCode();
141 } 140 }
142 } 141 }
143 \ No newline at end of file 142 \ No newline at end of file
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Entity/lq_hytk_jksyj/LqHytkJksyjEntity.cs
1 using System; 1 using System;
2 using NCC.Common.Const; 2 using NCC.Common.Const;
  3 +using NCC.Extend.Entitys.Enum;
3 using SqlSugar; 4 using SqlSugar;
4 5
5 namespace NCC.Extend.Entitys.lq_hytk_jksyj 6 namespace NCC.Extend.Entitys.lq_hytk_jksyj
@@ -102,15 +103,15 @@ namespace NCC.Extend.Entitys.lq_hytk_jksyj @@ -102,15 +103,15 @@ namespace NCC.Extend.Entitys.lq_hytk_jksyj
102 public string F_ModifyUser { get; set; } 103 public string F_ModifyUser { get; set; }
103 104
104 /// <summary> 105 /// <summary>
105 - /// 删除标记 106 + /// 退卡品相表id
106 /// </summary> 107 /// </summary>
107 - [SugarColumn(ColumnName = "F_DeleteMark")]  
108 - public int? F_DeleteMark { get; set; } 108 + [SugarColumn(ColumnName = "F_CardReturn")]
  109 + public string CardReturn { get; set; }
109 110
110 /// <summary> 111 /// <summary>
111 - /// 退卡品项明细id 112 + /// 是否有效
112 /// </summary> 113 /// </summary>
113 - [SugarColumn(ColumnName = "F_CardReturn")]  
114 - public string CardReturn { get; set; } 114 + [SugarColumn(ColumnName = "F_IsEffective")]
  115 + public int IsEffective { get; set; } = StatusEnum.有效.GetHashCode();
115 } 116 }
116 } 117 }
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Entity/lq_hytk_kjbsyj/LqHytkKjbsyjEntity.cs
1 using System; 1 using System;
2 using NCC.Common.Const; 2 using NCC.Common.Const;
  3 +using NCC.Extend.Entitys.Enum;
3 using SqlSugar; 4 using SqlSugar;
4 5
5 namespace NCC.Extend.Entitys.lq_hytk_kjbsyj 6 namespace NCC.Extend.Entitys.lq_hytk_kjbsyj
@@ -95,16 +96,17 @@ namespace NCC.Extend.Entitys.lq_hytk_kjbsyj @@ -95,16 +96,17 @@ namespace NCC.Extend.Entitys.lq_hytk_kjbsyj
95 [SugarColumn(ColumnName = "F_ModifyUser")] 96 [SugarColumn(ColumnName = "F_ModifyUser")]
96 public string F_ModifyUser { get; set; } 97 public string F_ModifyUser { get; set; }
97 98
98 - /// <summary>  
99 - /// 删除标记  
100 - /// </summary>  
101 - [SugarColumn(ColumnName = "F_DeleteMark")]  
102 - public int? F_DeleteMark { get; set; }  
103 99
104 /// <summary> 100 /// <summary>
105 - /// 退卡品项明细id 101 + /// 退卡品项明细ID
106 /// </summary> 102 /// </summary>
107 [SugarColumn(ColumnName = "F_CardReturn")] 103 [SugarColumn(ColumnName = "F_CardReturn")]
108 public string CardReturn { get; set; } 104 public string CardReturn { get; set; }
  105 +
  106 + /// <summary>
  107 + /// 是否有效
  108 + /// </summary>
  109 + [SugarColumn(ColumnName = "F_IsEffective")]
  110 + public int IsEffective { get; set; } = StatusEnum.有效.GetHashCode();
109 } 111 }
110 } 112 }
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Entity/lq_hytk_mx/LqHytkMxEntity.cs
@@ -25,7 +25,7 @@ namespace NCC.Extend.Entitys.lq_hytk_mx @@ -25,7 +25,7 @@ namespace NCC.Extend.Entitys.lq_hytk_mx
25 public string RefundInfoId { get; set; } 25 public string RefundInfoId { get; set; }
26 26
27 /// <summary> 27 /// <summary>
28 - /// 退卡记录Id 28 + /// 开单品项明细表id
29 /// </summary> 29 /// </summary>
30 [SugarColumn(ColumnName = "F_BillingItemId")] 30 [SugarColumn(ColumnName = "F_BillingItemId")]
31 public string BillingItemId { get; set; } 31 public string BillingItemId { get; set; }
@@ -68,12 +68,6 @@ namespace NCC.Extend.Entitys.lq_hytk_mx @@ -68,12 +68,6 @@ namespace NCC.Extend.Entitys.lq_hytk_mx
68 public int ProjectNumber { get; set; } 68 public int ProjectNumber { get; set; }
69 69
70 /// <summary> 70 /// <summary>
71 - /// 是否有效  
72 - /// </summary>  
73 - [SugarColumn(ColumnName = "F_IsEnabled")]  
74 - public int IsEnabled { get; set; } = StatusEnum.有效.GetHashCode();  
75 -  
76 - /// <summary>  
77 /// 来源类型 71 /// 来源类型
78 /// </summary> 72 /// </summary>
79 [SugarColumn(ColumnName = "F_SourceType")] 73 [SugarColumn(ColumnName = "F_SourceType")]
@@ -110,9 +104,9 @@ namespace NCC.Extend.Entitys.lq_hytk_mx @@ -110,9 +104,9 @@ namespace NCC.Extend.Entitys.lq_hytk_mx
110 public string ModifyUser { get; set; } 104 public string ModifyUser { get; set; }
111 105
112 /// <summary> 106 /// <summary>
113 - /// 删除标记 107 + /// 是否有效
114 /// </summary> 108 /// </summary>
115 - [SugarColumn(ColumnName = "F_DeleteMark")]  
116 - public int? DeleteMark { get; set; } 109 + [SugarColumn(ColumnName = "F_IsEffective")]
  110 + public int IsEffective { get; set; } = StatusEnum.有效.GetHashCode();
117 } 111 }
118 } 112 }
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Entity/lq_kd_jksyj/LqKdJksyjEntity.cs
@@ -70,5 +70,11 @@ namespace NCC.Extend.Entitys.lq_kd_jksyj @@ -70,5 +70,11 @@ namespace NCC.Extend.Entitys.lq_kd_jksyj
70 /// </summary> 70 /// </summary>
71 [SugarColumn(ColumnName = "F_IsEffective")] 71 [SugarColumn(ColumnName = "F_IsEffective")]
72 public int IsEffective { get; set; } = 1; 72 public int IsEffective { get; set; } = 1;
  73 +
  74 + /// <summary>
  75 + /// 营销活动ID
  76 + /// </summary>
  77 + [SugarColumn(ColumnName = "F_ActivityId")]
  78 + public string ActivityId { get; set; }
73 } 79 }
74 } 80 }
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Entity/lq_kd_kdjlb/LqKdKdjlbEntity.cs
@@ -217,5 +217,29 @@ namespace NCC.Extend.Entitys.lq_kd_kdjlb @@ -217,5 +217,29 @@ namespace NCC.Extend.Entitys.lq_kd_kdjlb
217 [SugarColumn(ColumnName = "F_CancelRefRemarks")] 217 [SugarColumn(ColumnName = "F_CancelRefRemarks")]
218 public string CancelRefRemarks { get; set; } 218 public string CancelRefRemarks { get; set; }
219 219
  220 +
  221 + /// <summary>
  222 + /// 营销活动ID
  223 + /// </summary>
  224 + [SugarColumn(ColumnName = "F_ActivityId")]
  225 + public string ActivityId { get; set; }
  226 +
  227 + /// <summary>
  228 + /// 已缴欠款
  229 + /// </summary>
  230 + [SugarColumn(ColumnName = "F_PaidDebt")]
  231 + public decimal PaidDebt { get; set; }
  232 +
  233 + /// <summary>
  234 + /// 补缴开单ID
  235 + /// </summary>
  236 + [SugarColumn(ColumnName = "F_SupplementBillingId")]
  237 + public string SupplementBillingId { get; set; }
  238 +
  239 + /// <summary>
  240 + /// 补缴金额
  241 + /// </summary>
  242 + [SugarColumn(ColumnName = "F_SupplementAmount")]
  243 + public decimal SupplementAmount { get; set; }
220 } 244 }
221 } 245 }
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Entity/lq_kd_kjbsyj/LqKdKjbsyjEntity.cs
@@ -70,5 +70,11 @@ namespace NCC.Extend.Entitys.lq_kd_kjbsyj @@ -70,5 +70,11 @@ namespace NCC.Extend.Entitys.lq_kd_kjbsyj
70 /// </summary> 70 /// </summary>
71 [SugarColumn(ColumnName = "F_IsEffective")] 71 [SugarColumn(ColumnName = "F_IsEffective")]
72 public int IsEffective { get; set; } = 1; 72 public int IsEffective { get; set; } = 1;
  73 +
  74 + /// <summary>
  75 + /// 营销活动ID
  76 + /// </summary>
  77 + [SugarColumn(ColumnName = "F_ActivityId")]
  78 + public string ActivityId { get; set; }
73 } 79 }
74 } 80 }
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Entity/lq_kd_pxmx/LqKdPxmxEntity.cs
@@ -101,5 +101,11 @@ namespace NCC.Extend.Entitys.lq_kd_pxmx @@ -101,5 +101,11 @@ namespace NCC.Extend.Entitys.lq_kd_pxmx
101 /// </summary> 101 /// </summary>
102 [SugarColumn(ColumnName = "F_Remark")] 102 [SugarColumn(ColumnName = "F_Remark")]
103 public string Remark { get; set; } 103 public string Remark { get; set; }
  104 +
  105 + /// <summary>
  106 + /// 营销活动ID
  107 + /// </summary>
  108 + [SugarColumn(ColumnName = "F_ActivityId")]
  109 + public string ActivityId { get; set; }
104 } 110 }
105 } 111 }
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Entity/lq_khxx/LqKhxxEntity.cs
1 using System; 1 using System;
2 using NCC.Common.Const; 2 using NCC.Common.Const;
  3 +using NCC.Extend.Entitys.Enum;
3 using SqlSugar; 4 using SqlSugar;
4 5
5 namespace NCC.Extend.Entitys.lq_khxx 6 namespace NCC.Extend.Entitys.lq_khxx
@@ -140,5 +141,11 @@ namespace NCC.Extend.Entitys.lq_khxx @@ -140,5 +141,11 @@ namespace NCC.Extend.Entitys.lq_khxx
140 [SugarColumn(ColumnName = "F_SubHealthUser")] 141 [SugarColumn(ColumnName = "F_SubHealthUser")]
141 public string SubHealthUser { get; set; } 142 public string SubHealthUser { get; set; }
142 143
  144 + /// <summary>
  145 + /// 是否有效
  146 + /// </summary>
  147 + [SugarColumn(ColumnName = "F_IsEffective")]
  148 + public int IsEffective { get; set; } = StatusEnum.有效.GetHashCode();
  149 +
143 } 150 }
144 } 151 }
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Entity/lq_package_info/LqPackageInfoEntity.cs 0 → 100644
  1 +using NCC.Common.Const;
  2 +using SqlSugar;
  3 +using System;
  4 +
  5 +namespace NCC.Extend.Entitys.lq_package_info
  6 +{
  7 + /// <summary>
  8 + /// 营销活动表
  9 + /// </summary>
  10 + [SugarTable("lq_marketing_activity")]
  11 + [Tenant(ClaimConst.TENANT_ID)]
  12 + public class LqPackageInfoEntity
  13 + {
  14 + /// <summary>
  15 + /// 营销活动ID
  16 + /// </summary>
  17 + [SugarColumn(ColumnName = "F_Id", IsPrimaryKey = true)]
  18 + public string Id { get; set; }
  19 +
  20 + /// <summary>
  21 + /// 活动名称
  22 + /// </summary>
  23 + [SugarColumn(ColumnName = "F_ActivityName")]
  24 + public string ActivityName { get; set; }
  25 +
  26 + /// <summary>
  27 + /// 活动描述
  28 + /// </summary>
  29 + [SugarColumn(ColumnName = "F_ActivityDesc")]
  30 + public string ActivityDesc { get; set; }
  31 +
  32 + /// <summary>
  33 + /// 活动开始时间
  34 + /// </summary>
  35 + [SugarColumn(ColumnName = "F_StartTime")]
  36 + public DateTime StartTime { get; set; }
  37 +
  38 + /// <summary>
  39 + /// 活动结束时间
  40 + /// </summary>
  41 + [SugarColumn(ColumnName = "F_EndTime")]
  42 + public DateTime EndTime { get; set; }
  43 +
  44 + /// <summary>
  45 + /// 至少购买品项数量
  46 + /// </summary>
  47 + [SugarColumn(ColumnName = "F_MinItemQuantity")]
  48 + public int MinItemQuantity { get; set; } = 1;
  49 +
  50 + /// <summary>
  51 + /// 活动规则说明
  52 + /// </summary>
  53 + [SugarColumn(ColumnName = "F_ActivityRules")]
  54 + public string ActivityRules { get; set; }
  55 +
  56 + /// <summary>
  57 + /// 活动图片(JSON格式)
  58 + /// </summary>
  59 + [SugarColumn(ColumnName = "F_ActivityImages")]
  60 + public string ActivityImages { get; set; }
  61 +
  62 + /// <summary>
  63 + /// 排序
  64 + /// </summary>
  65 + [SugarColumn(ColumnName = "F_SortOrder")]
  66 + public int SortOrder { get; set; } = 0;
  67 +
  68 + /// <summary>
  69 + /// 创建时间
  70 + /// </summary>
  71 + [SugarColumn(ColumnName = "F_CreateTime")]
  72 + public DateTime CreateTime { get; set; }
  73 +
  74 + /// <summary>
  75 + /// 更新时间
  76 + /// </summary>
  77 + [SugarColumn(ColumnName = "F_UpdateTime")]
  78 + public DateTime UpdateTime { get; set; }
  79 +
  80 + /// <summary>
  81 + /// 创建人
  82 + /// </summary>
  83 + [SugarColumn(ColumnName = "F_CreateUser")]
  84 + public string CreateUser { get; set; }
  85 +
  86 + /// <summary>
  87 + /// 更新人
  88 + /// </summary>
  89 + [SugarColumn(ColumnName = "F_UpdateUser")]
  90 + public string UpdateUser { get; set; }
  91 +
  92 + /// <summary>
  93 + /// 是否有效
  94 + /// </summary>
  95 + [SugarColumn(ColumnName = "F_IsEffective")]
  96 + public int IsEffective { get; set; } = 1;
  97 + }
  98 +}
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Entity/lq_kd_qkbj/LqKdQkbjEntity.cs renamed to netcore/src/Modularity/Extend/NCC.Extend.Entitys/Entity/lq_package_item_detail/LqPackageItemDetailEntity.cs
1 -using System;  
2 using NCC.Common.Const; 1 using NCC.Common.Const;
3 using SqlSugar; 2 using SqlSugar;
  3 +using System;
4 4
5 -namespace NCC.Extend.Entitys.lq_kd_qkbj 5 +namespace NCC.Extend.Entitys.lq_package_item_detail
6 { 6 {
7 /// <summary> 7 /// <summary>
8 - /// 开单欠款补缴记录 8 + /// 营销活动品项明细
9 /// </summary> 9 /// </summary>
10 - [SugarTable("lq_kd_qkbj")] 10 + [SugarTable("lq_marketing_activity_item_detail")]
11 [Tenant(ClaimConst.TENANT_ID)] 11 [Tenant(ClaimConst.TENANT_ID)]
12 - public class LqKdQkbjEntity 12 + public class LqPackageItemDetailEntity
13 { 13 {
14 /// <summary> 14 /// <summary>
15 - /// 主键 15 + /// 明细ID
16 /// </summary> 16 /// </summary>
17 [SugarColumn(ColumnName = "F_Id", IsPrimaryKey = true)] 17 [SugarColumn(ColumnName = "F_Id", IsPrimaryKey = true)]
18 public string Id { get; set; } 18 public string Id { get; set; }
19 19
20 /// <summary> 20 /// <summary>
21 - /// 开单ID  
22 - /// </summary>  
23 - [SugarColumn(ColumnName = "F_BillingId")]  
24 - public string BillingId { get; set; }  
25 -  
26 - /// <summary>  
27 - /// 补缴金额  
28 - /// </summary>  
29 - [SugarColumn(ColumnName = "F_PaymentAmount")]  
30 - public decimal PaymentAmount { get; set; }  
31 -  
32 - /// <summary>  
33 - /// 补缴方式  
34 - /// </summary>  
35 - [SugarColumn(ColumnName = "F_PaymentMethod")]  
36 - public string PaymentMethod { get; set; }  
37 -  
38 - /// <summary>  
39 - /// 补缴时间 21 + /// 营销活动ID
40 /// </summary> 22 /// </summary>
41 - [SugarColumn(ColumnName = "F_PaymentTime")]  
42 - public DateTime PaymentTime { get; set; } 23 + [SugarColumn(ColumnName = "F_ActivityId")]
  24 + public string ActivityId { get; set; }
43 25
44 /// <summary> 26 /// <summary>
45 - /// 补缴操作人 27 + /// 品项ID
46 /// </summary> 28 /// </summary>
47 - [SugarColumn(ColumnName = "F_PaymentUser")]  
48 - public string PaymentUser { get; set; } 29 + [SugarColumn(ColumnName = "F_ItemId")]
  30 + public string ItemId { get; set; }
49 31
50 /// <summary> 32 /// <summary>
51 - /// 补缴账户 33 + /// 品项名称
52 /// </summary> 34 /// </summary>
53 - [SugarColumn(ColumnName = "F_PaymentAccount")]  
54 - public string PaymentAccount { get; set; } 35 + [SugarColumn(ColumnName = "F_ItemName")]
  36 + public string ItemName { get; set; }
55 37
56 /// <summary> 38 /// <summary>
57 - /// 补缴凭证号 39 + /// 品项分类
58 /// </summary> 40 /// </summary>
59 - [SugarColumn(ColumnName = "F_PaymentReference")]  
60 - public string PaymentReference { get; set; } 41 + [SugarColumn(ColumnName = "F_ItemCategory")]
  42 + public string ItemCategory { get; set; }
61 43
62 /// <summary> 44 /// <summary>
63 - /// 补缴备注 45 + /// 品项备注
64 /// </summary> 46 /// </summary>
65 - [SugarColumn(ColumnName = "F_Remark")]  
66 - public string Remark { get; set; } 47 + [SugarColumn(ColumnName = "F_ItemRemark")]
  48 + public string ItemRemark { get; set; }
67 49
68 /// <summary> 50 /// <summary>
69 /// 创建时间 51 /// 创建时间
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Entity/lq_tkjlb/LqTkjlbEntity.cs
1 using System; 1 using System;
  2 +using NCC.Common.Enum;
  3 +using NCC.Extend.Entitys.Enum;
2 using SqlSugar; 4 using SqlSugar;
3 5
4 namespace NCC.Extend.Entitys.lq_tkjlb 6 namespace NCC.Extend.Entitys.lq_tkjlb
@@ -92,5 +94,6 @@ namespace NCC.Extend.Entitys.lq_tkjlb @@ -92,5 +94,6 @@ namespace NCC.Extend.Entitys.lq_tkjlb
92 /// </summary> 94 /// </summary>
93 [SugarColumn(ColumnName = "F_CreateTime")] 95 [SugarColumn(ColumnName = "F_CreateTime")]
94 public DateTime CreateTime { get; set; } = DateTime.Now; 96 public DateTime CreateTime { get; set; } = DateTime.Now;
  97 +
95 } 98 }
96 } 99 }
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Entity/lq_xh_hyhk/LqXhHyhkEntity.cs
1 using System; 1 using System;
2 using NCC.Common.Const; 2 using NCC.Common.Const;
  3 +using NCC.Extend.Entitys.Enum;
3 using SqlSugar; 4 using SqlSugar;
4 5
5 namespace NCC.Extend.Entitys.lq_xh_hyhk 6 namespace NCC.Extend.Entitys.lq_xh_hyhk
@@ -48,6 +49,12 @@ namespace NCC.Extend.Entitys.lq_xh_hyhk @@ -48,6 +49,12 @@ namespace NCC.Extend.Entitys.lq_xh_hyhk
48 public string Hyzh { get; set; } 49 public string Hyzh { get; set; }
49 50
50 /// <summary> 51 /// <summary>
  52 + /// 会员手机号
  53 + /// </summary>
  54 + [SugarColumn(ColumnName = "F_MemberPhone")]
  55 + public string MemberPhone { get; set; }
  56 +
  57 + /// <summary>
51 /// 会员名称 58 /// 会员名称
52 /// </summary> 59 /// </summary>
53 [SugarColumn(ColumnName = "hymc")] 60 [SugarColumn(ColumnName = "hymc")]
@@ -112,6 +119,6 @@ namespace NCC.Extend.Entitys.lq_xh_hyhk @@ -112,6 +119,6 @@ namespace NCC.Extend.Entitys.lq_xh_hyhk
112 /// 是否有效 119 /// 是否有效
113 /// </summary> 120 /// </summary>
114 [SugarColumn(ColumnName = "F_IsEffective")] 121 [SugarColumn(ColumnName = "F_IsEffective")]
115 - public int? IsEffective { get; set; } = 1; 122 + public int IsEffective { get; set; } = StatusEnum.有效.GetHashCode();
116 } 123 }
117 } 124 }
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Entity/lq_xhmxb/LqXhmxbEntity.cs deleted
1 -using NCC.Common.Const;  
2 -using SqlSugar;  
3 -using System;  
4 -  
5 -namespace NCC.Extend.Entitys.lq_xhmxb  
6 -{  
7 - /// <summary>  
8 - /// 消耗明细表  
9 - /// </summary>  
10 - [SugarTable("lq_xhmxb")]  
11 - [Tenant(ClaimConst.TENANT_ID)]  
12 - public class LqXhmxbEntity  
13 - {  
14 - /// <summary>  
15 - /// 消耗编号  
16 - /// </summary>  
17 - [SugarColumn(ColumnName = "F_Id", IsPrimaryKey = true)]  
18 - public string Id { get; set; }  
19 -  
20 - /// <summary>  
21 - /// 门店编号  
22 - /// </summary>  
23 - [SugarColumn(ColumnName = "mdbh")]  
24 - public string Mdbh { get; set; }  
25 -  
26 - /// <summary>  
27 - /// 门店名称  
28 - /// </summary>  
29 - [SugarColumn(ColumnName = "mdmc")]  
30 - public string Mdmc { get; set; }  
31 -  
32 - /// <summary>  
33 - /// 部门编号  
34 - /// </summary>  
35 - [SugarColumn(ColumnName = "bmbh")]  
36 - public string Bmbh { get; set; }  
37 -  
38 - /// <summary>  
39 - /// 部门名称  
40 - /// </summary>  
41 - [SugarColumn(ColumnName = "bmmc")]  
42 - public string Bmmc { get; set; }  
43 -  
44 - /// <summary>  
45 - /// 员工编号  
46 - /// </summary>  
47 - [SugarColumn(ColumnName = "ygbh")]  
48 - public string Ygbh { get; set; }  
49 -  
50 - /// <summary>  
51 - /// 员工名称  
52 - /// </summary>  
53 - [SugarColumn(ColumnName = "ygmc")]  
54 - public string Ygmc { get; set; }  
55 -  
56 - /// <summary>  
57 - /// 项目数  
58 - /// </summary>  
59 - [SugarColumn(ColumnName = "xms")]  
60 - public string Xms { get; set; }  
61 -  
62 - /// <summary>  
63 - /// 消耗  
64 - /// </summary>  
65 - [SugarColumn(ColumnName = "xh")]  
66 - public string Xh { get; set; }  
67 -  
68 - /// <summary>  
69 - /// 手工  
70 - /// </summary>  
71 - [SugarColumn(ColumnName = "sg")]  
72 - public string Sg { get; set; }  
73 -  
74 - /// <summary>  
75 - /// 其它手工1  
76 - /// </summary>  
77 - [SugarColumn(ColumnName = "qtsg1")]  
78 - public string Qtsg1 { get; set; }  
79 -  
80 - /// <summary>  
81 - /// 其它手工2  
82 - /// </summary>  
83 - [SugarColumn(ColumnName = "qtsg2")]  
84 - public string Qtsg2 { get; set; }  
85 -  
86 - /// <summary>  
87 - /// 其它手工3  
88 - /// </summary>  
89 - [SugarColumn(ColumnName = "qtsg3")]  
90 - public string Qtsg3 { get; set; }  
91 -  
92 - /// <summary>  
93 - /// 手工合计  
94 - /// </summary>  
95 - [SugarColumn(ColumnName = "sghj")]  
96 - public string Sghj { get; set; }  
97 -  
98 - }  
99 -}  
100 \ No newline at end of file 0 \ No newline at end of file
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Entity/lq_yxhdfa/LqYxhdfaEntity.cs deleted
1 -using NCC.Common.Const;  
2 -using SqlSugar;  
3 -using System;  
4 -  
5 -namespace NCC.Extend.Entitys.lq_yxhdfa  
6 -{  
7 - /// <summary>  
8 - /// 营销活动方案  
9 - /// </summary>  
10 - [SugarTable("lq_yxhdfa")]  
11 - [Tenant(ClaimConst.TENANT_ID)]  
12 - public class LqYxhdfaEntity  
13 - {  
14 - /// <summary>  
15 - /// 方案编号  
16 - /// </summary>  
17 - [SugarColumn(ColumnName = "F_Id", IsPrimaryKey = true)]  
18 - public string Id { get; set; }  
19 -  
20 - /// <summary>  
21 - /// 营销活动编号  
22 - /// </summary>  
23 - [SugarColumn(ColumnName = "yxhdbh")]  
24 - public string Yxhdbh { get; set; }  
25 -  
26 - /// <summary>  
27 - /// 活动名称  
28 - /// </summary>  
29 - [SugarColumn(ColumnName = "hdmc")]  
30 - public string Hdmc { get; set; }  
31 -  
32 - /// <summary>  
33 - /// 张数奖  
34 - /// </summary>  
35 - [SugarColumn(ColumnName = "zsj")]  
36 - public string Zsj { get; set; }  
37 -  
38 - /// <summary>  
39 - /// 金额奖  
40 - /// </summary>  
41 - [SugarColumn(ColumnName = "jej")]  
42 - public string Jej { get; set; }  
43 -  
44 - }  
45 -}  
46 \ No newline at end of file 0 \ No newline at end of file
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Mapper/LqXhmxbMapper.cs deleted
1 -using NCC.Common.Helper;  
2 -using NCC.Extend.Entitys.Dto.LqXhmxb;  
3 -using Mapster;  
4 -using System.Collections.Generic;  
5 -  
6 -namespace NCC.Extend.Entitys.Mapper.LqXhmxb  
7 -{  
8 - public class Mapper : IRegister  
9 - {  
10 - public void Register(TypeAdapterConfig config)  
11 - {  
12 - }  
13 - }  
14 -}  
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Mapper/LqYxhdfaMapper.cs deleted
1 -using NCC.Common.Helper;  
2 -using NCC.Extend.Entitys.Dto.LqYxhdfa;  
3 -using Mapster;  
4 -using System.Collections.Generic;  
5 -  
6 -namespace NCC.Extend.Entitys.Mapper.LqYxhdfa  
7 -{  
8 - public class Mapper : IRegister  
9 - {  
10 - public void Register(TypeAdapterConfig config)  
11 - {  
12 - }  
13 - }  
14 -}  
netcore/src/Modularity/Extend/NCC.Extend.Interfaces/ILqXhmxbService.cs deleted
1 -namespace NCC.Extend.Interfaces.LqXhmxb  
2 -{  
3 - public interface ILqXhmxbService  
4 - {  
5 - }  
6 -}  
7 \ No newline at end of file 0 \ No newline at end of file
netcore/src/Modularity/Extend/NCC.Extend.Interfaces/ILqYxhdfaService.cs deleted
1 -namespace NCC.Extend.Interfaces.LqYxhdfa  
2 -{  
3 - public interface ILqYxhdfaService  
4 - {  
5 - }  
6 -}  
7 \ No newline at end of file 0 \ No newline at end of file
netcore/src/Modularity/Extend/NCC.Extend.Entitys/Dto/LqXhmxb/LqXhmxbUpInput.cs renamed to netcore/src/Modularity/Extend/NCC.Extend.Interfaces/LqPackageInfo/ILqPackageInfoService.cs
1 -using System;  
2 -using System.Collections.Generic; 1 +using NCC.Extend.Entitys.Dto.LqPackageInfo;
  2 +using System.Threading.Tasks;
3 3
4 -namespace NCC.Extend.Entitys.Dto.LqXhmxb 4 +namespace NCC.Extend.Interfaces.LqPackageInfo
5 { 5 {
6 /// <summary> 6 /// <summary>
7 - /// 消耗明细表更新输入参数 7 + /// 营销活动服务接口
8 /// </summary> 8 /// </summary>
9 - public class LqXhmxbUpInput : LqXhmxbCrInput 9 + public interface ILqPackageInfoService
10 { 10 {
11 /// <summary> 11 /// <summary>
12 - /// 消耗编号 12 + /// 添加营销活动
13 /// </summary> 13 /// </summary>
14 - public string id { get; set; }  
15 - 14 + /// <param name="input">营销活动创建输入</param>
  15 + /// <returns>营销活动ID</returns>
  16 + Task<string> CreatePackageInfoAsync(LqPackageInfoCrInput input);
16 } 17 }
17 } 18 }
netcore/src/Modularity/Extend/NCC.Extend/LqHytkHytkService.cs
@@ -19,6 +19,7 @@ using NCC.Extend.Entitys.Dto.LqHytkHytk; @@ -19,6 +19,7 @@ using NCC.Extend.Entitys.Dto.LqHytkHytk;
19 using NCC.Extend.Entitys.Dto.LqHytkJksyj; 19 using NCC.Extend.Entitys.Dto.LqHytkJksyj;
20 using NCC.Extend.Entitys.Dto.LqHytkKjbsyj; 20 using NCC.Extend.Entitys.Dto.LqHytkKjbsyj;
21 using NCC.Extend.Entitys.Dto.LqHytkMx; 21 using NCC.Extend.Entitys.Dto.LqHytkMx;
  22 +using NCC.Extend.Entitys.Enum;
22 using NCC.Extend.Entitys.lq_hytk_hytk; 23 using NCC.Extend.Entitys.lq_hytk_hytk;
23 using NCC.Extend.Entitys.lq_hytk_jksyj; 24 using NCC.Extend.Entitys.lq_hytk_jksyj;
24 using NCC.Extend.Entitys.lq_hytk_kjbsyj; 25 using NCC.Extend.Entitys.lq_hytk_kjbsyj;
@@ -113,6 +114,7 @@ namespace NCC.Extend.LqHytkHytk @@ -113,6 +114,7 @@ namespace NCC.Extend.LqHytkHytk
113 tksj = it.Tksj, 114 tksj = it.Tksj,
114 czry = it.Czry, 115 czry = it.Czry,
115 fileUrl = it.FileUrl, 116 fileUrl = it.FileUrl,
  117 + isEffective = it.IsEffective,
116 }) 118 })
117 .MergeTable() 119 .MergeTable()
118 .OrderBy(sidx + " " + input.sort) 120 .OrderBy(sidx + " " + input.sort)
@@ -198,7 +200,7 @@ namespace NCC.Extend.LqHytkHytk @@ -198,7 +200,7 @@ namespace NCC.Extend.LqHytkHytk
198 entity.Id = YitIdHelper.NextId().ToString(); 200 entity.Id = YitIdHelper.NextId().ToString();
199 entity.F_CreateTime = DateTime.Now; 201 entity.F_CreateTime = DateTime.Now;
200 entity.F_CreateUser = userInfo.userId; 202 entity.F_CreateUser = userInfo.userId;
201 - entity.F_DeleteMark = 0; 203 + entity.IsEffective = StatusEnum.有效.GetHashCode();
202 entity.Czry = userInfo.userId; 204 entity.Czry = userInfo.userId;
203 205
204 try 206 try
@@ -227,15 +229,14 @@ namespace NCC.Extend.LqHytkHytk @@ -227,15 +229,14 @@ namespace NCC.Extend.LqHytkHytk
227 BillingItemId = item.billingItemId, 229 BillingItemId = item.billingItemId,
228 CreateTime = DateTime.Now, 230 CreateTime = DateTime.Now,
229 CreateUser = userInfo.userId, 231 CreateUser = userInfo.userId,
230 - DeleteMark = 0,  
231 Px = item.px, 232 Px = item.px,
232 Pxmc = item.pxmc, 233 Pxmc = item.pxmc,
233 Pxjg = item.pxjg, 234 Pxjg = item.pxjg,
234 Tkje = item.tkje, 235 Tkje = item.tkje,
235 ProjectNumber = item.F_ProjectNumber ?? 1, 236 ProjectNumber = item.F_ProjectNumber ?? 1,
236 - IsEnabled = item.F_IsEnabled ?? 1,  
237 SourceType = item.F_SourceType, 237 SourceType = item.F_SourceType,
238 TotalPrice = item.F_TotalPrice ?? (item.pxjg * (item.F_ProjectNumber ?? 1)), 238 TotalPrice = item.F_TotalPrice ?? (item.pxjg * (item.F_ProjectNumber ?? 1)),
  239 + IsEffective = StatusEnum.有效.GetHashCode(),
239 }; 240 };
240 allMxEntities.Add(lqHytkMxEntity); 241 allMxEntities.Add(lqHytkMxEntity);
241 242
@@ -244,25 +245,24 @@ namespace NCC.Extend.LqHytkHytk @@ -244,25 +245,24 @@ namespace NCC.Extend.LqHytkHytk
244 { 245 {
245 foreach (var ijks_tem in item.lqHytkJksyjList) 246 foreach (var ijks_tem in item.lqHytkJksyjList)
246 { 247 {
247 - allJksyjEntities.Add(  
248 - new LqHytkJksyjEntity  
249 - {  
250 - Id = YitIdHelper.NextId().ToString(),  
251 - Gltkbh = newEntity.Id,  
252 - Jks = ijks_tem.jks,  
253 - Jksxm = ijks_tem.jksxm,  
254 - Jkszh = ijks_tem.jkszh,  
255 - Jksyj = ijks_tem.jksyj,  
256 - Tksj = DateTime.Now,  
257 - F_jsjid = ijks_tem.F_jsjid,  
258 - F_tkpxid = ijks_tem.F_tkpxid,  
259 - F_LaborCost = ijks_tem.F_LaborCost,  
260 - F_tkpxNumber = ijks_tem.F_tkpxNumber,  
261 - F_CreateTime = DateTime.Now,  
262 - F_CreateUser = userInfo.userId,  
263 - F_DeleteMark = 0,  
264 - CardReturn = lqHytkMxEntity.Id,  
265 - } 248 + allJksyjEntities.Add(new LqHytkJksyjEntity
  249 + {
  250 + Id = YitIdHelper.NextId().ToString(),
  251 + Gltkbh = newEntity.Id,
  252 + Jks = ijks_tem.jks,
  253 + Jksxm = ijks_tem.jksxm,
  254 + Jkszh = ijks_tem.jkszh,
  255 + Jksyj = ijks_tem.jksyj,
  256 + Tksj = DateTime.Now,
  257 + F_jsjid = ijks_tem.F_jsjid,
  258 + F_tkpxid = ijks_tem.F_tkpxid,
  259 + F_LaborCost = ijks_tem.F_LaborCost,
  260 + F_tkpxNumber = ijks_tem.F_tkpxNumber,
  261 + F_CreateTime = DateTime.Now,
  262 + F_CreateUser = userInfo.userId,
  263 + CardReturn = lqHytkMxEntity.Id,
  264 + IsEffective = StatusEnum.有效.GetHashCode(),
  265 + }
266 ); 266 );
267 } 267 }
268 } 268 }
@@ -287,8 +287,8 @@ namespace NCC.Extend.LqHytkHytk @@ -287,8 +287,8 @@ namespace NCC.Extend.LqHytkHytk
287 F_tkpxNumber = ikjbs_tem.F_tkpxNumber, 287 F_tkpxNumber = ikjbs_tem.F_tkpxNumber,
288 F_CreateTime = DateTime.Now, 288 F_CreateTime = DateTime.Now,
289 F_CreateUser = userInfo.userId, 289 F_CreateUser = userInfo.userId,
290 - F_DeleteMark = 0,  
291 CardReturn = lqHytkMxEntity.Id, 290 CardReturn = lqHytkMxEntity.Id,
  291 + IsEffective = StatusEnum.有效.GetHashCode(),
292 } 292 }
293 ); 293 );
294 } 294 }
@@ -380,13 +380,11 @@ namespace NCC.Extend.LqHytkHytk @@ -380,13 +380,11 @@ namespace NCC.Extend.LqHytkHytk
380 CreateTime = DateTime.Now, 380 CreateTime = DateTime.Now,
381 CreateUser = userInfo.userId, 381 CreateUser = userInfo.userId,
382 Tksj = input.tksj, 382 Tksj = input.tksj,
383 - DeleteMark = 0,  
384 Px = item.px, 383 Px = item.px,
385 Pxmc = item.pxmc, 384 Pxmc = item.pxmc,
386 Pxjg = item.pxjg, 385 Pxjg = item.pxjg,
387 Tkje = item.tkje, 386 Tkje = item.tkje,
388 ProjectNumber = item.F_ProjectNumber ?? 1, 387 ProjectNumber = item.F_ProjectNumber ?? 1,
389 - IsEnabled = item.F_IsEnabled ?? 1,  
390 SourceType = item.F_SourceType, 388 SourceType = item.F_SourceType,
391 TotalPrice = item.F_TotalPrice ?? (item.pxjg * (item.F_ProjectNumber ?? 1)), 389 TotalPrice = item.F_TotalPrice ?? (item.pxjg * (item.F_ProjectNumber ?? 1)),
392 }; 390 };
@@ -413,7 +411,6 @@ namespace NCC.Extend.LqHytkHytk @@ -413,7 +411,6 @@ namespace NCC.Extend.LqHytkHytk
413 F_tkpxNumber = ijks_tem.F_tkpxNumber, 411 F_tkpxNumber = ijks_tem.F_tkpxNumber,
414 F_CreateTime = DateTime.Now, 412 F_CreateTime = DateTime.Now,
415 F_CreateUser = userInfo.userId, 413 F_CreateUser = userInfo.userId,
416 - F_DeleteMark = 0,  
417 } 414 }
418 ); 415 );
419 } 416 }
@@ -439,7 +436,6 @@ namespace NCC.Extend.LqHytkHytk @@ -439,7 +436,6 @@ namespace NCC.Extend.LqHytkHytk
439 F_tkpxNumber = ikjbs_tem.F_tkpxNumber, 436 F_tkpxNumber = ikjbs_tem.F_tkpxNumber,
440 F_CreateTime = DateTime.Now, 437 F_CreateTime = DateTime.Now,
441 F_CreateUser = userInfo.userId, 438 F_CreateUser = userInfo.userId,
442 - F_DeleteMark = 0,  
443 } 439 }
444 ); 440 );
445 } 441 }
@@ -474,20 +470,42 @@ namespace NCC.Extend.LqHytkHytk @@ -474,20 +470,42 @@ namespace NCC.Extend.LqHytkHytk
474 } 470 }
475 #endregion 471 #endregion
476 472
477 - #region 删除退卡信息 473 + #region 作废退卡信息
478 /// <summary> 474 /// <summary>
479 - /// 删除退卡信息(逻辑删除) 475 + /// 作废退卡信息
480 /// </summary> 476 /// </summary>
481 /// <param name="id">主键</param> 477 /// <param name="id">主键</param>
482 /// <returns></returns> 478 /// <returns></returns>
483 - [HttpDelete("{id}")]  
484 - public async Task Delete(string id) 479 + [HttpPut("VoidRefundCardInfo/{id}")]
  480 + public async Task<dynamic> VoidRefundCardInfo(string id)
485 { 481 {
486 - var entity = await _db.Queryable<LqHytkHytkEntity>().FirstAsync(p => p.Id == id);  
487 - if (entity != null) 482 + try
488 { 483 {
489 - entity.F_DeleteMark = 1;  
490 - await _lqHytkHytkRepository.UpdateAsync(entity); 484 + var entity = await _db.Queryable<LqHytkHytkEntity>().FirstAsync(p => p.Id == id && p.IsEffective == StatusEnum.有效.GetHashCode());
  485 + if (entity == null)
  486 + {
  487 + throw NCCException.Oh("退卡信息不存在或已被作废");
  488 + }
  489 + // 开启事务
  490 + _db.BeginTran();
  491 + // 更新主表
  492 + entity.IsEffective = StatusEnum.无效.GetHashCode();
  493 + entity.F_ModifyTime = DateTime.Now;
  494 + await _db.Updateable(entity).ExecuteCommandAsync();
  495 + // 更新明细表
  496 + await _db.Updateable<LqHytkMxEntity>().SetColumns(it => new LqHytkMxEntity { IsEffective = StatusEnum.无效.GetHashCode() }).Where(w => w.RefundInfoId == id).ExecuteCommandAsync();
  497 + // 更新健康师业绩表
  498 + await _db.Updateable<LqHytkJksyjEntity>().SetColumns(it => new LqHytkJksyjEntity { IsEffective = StatusEnum.无效.GetHashCode() }).Where(w => w.Gltkbh == id).ExecuteCommandAsync();
  499 + // 更新科技部业绩表
  500 + await _db.Updateable<LqHytkKjbsyjEntity>().SetColumns(it => new LqHytkKjbsyjEntity { IsEffective = StatusEnum.无效.GetHashCode() }).Where(w => w.Gltkbh == id).ExecuteCommandAsync();
  501 + // 提交事务
  502 + _db.CommitTran();
  503 + return entity;
  504 + }
  505 + catch (Exception ex)
  506 + {
  507 + _db.RollbackTran();
  508 + throw NCCException.Oh($"删除退卡信息失败: {ex.Message}");
491 } 509 }
492 } 510 }
493 #endregion 511 #endregion
@@ -590,10 +608,10 @@ namespace NCC.Extend.LqHytkHytk @@ -590,10 +608,10 @@ namespace NCC.Extend.LqHytkHytk
590 try 608 try
591 { 609 {
592 // 1. 查询主表信息 610 // 1. 查询主表信息
593 - var entity = await _db.Queryable<LqHytkHytkEntity>().FirstAsync(p => p.Id == id); 611 + var entity = await _db.Queryable<LqHytkHytkEntity>().Where(p => p.Id == id && p.IsEffective == StatusEnum.有效.GetHashCode()).FirstAsync();
594 if (entity == null) 612 if (entity == null)
595 { 613 {
596 - throw NCCException.Oh(ErrorCode.COM1005, "退卡记录不存在"); 614 + throw NCCException.Oh(ErrorCode.COM1005, "退卡记录不存在或已作废");
597 } 615 }
598 616
599 var output = entity.Adapt<LqHytkHytkInfoOutput>(); 617 var output = entity.Adapt<LqHytkHytkInfoOutput>();
@@ -621,7 +639,6 @@ namespace NCC.Extend.LqHytkHytk @@ -621,7 +639,6 @@ namespace NCC.Extend.LqHytkHytk
621 pxjg = mx.Pxjg, 639 pxjg = mx.Pxjg,
622 tkje = mx.Tkje, 640 tkje = mx.Tkje,
623 projectNumber = mx.ProjectNumber, 641 projectNumber = mx.ProjectNumber,
624 - isEnabled = mx.IsEnabled,  
625 sourceType = mx.SourceType, 642 sourceType = mx.SourceType,
626 totalPrice = mx.TotalPrice, 643 totalPrice = mx.TotalPrice,
627 }; 644 };
netcore/src/Modularity/Extend/NCC.Extend/LqKdKdjlbService.cs
@@ -17,8 +17,10 @@ using NCC.DataEncryption; @@ -17,8 +17,10 @@ using NCC.DataEncryption;
17 using NCC.Dependency; 17 using NCC.Dependency;
18 using NCC.DynamicApiController; 18 using NCC.DynamicApiController;
19 using NCC.Extend.Entitys.Dto.Common; 19 using NCC.Extend.Entitys.Dto.Common;
  20 +using NCC.Extend.Entitys.Dto.LqKdDeductinfo;
20 using NCC.Extend.Entitys.Dto.LqKdKdjlb; 21 using NCC.Extend.Entitys.Dto.LqKdKdjlb;
21 using NCC.Extend.Entitys.Enum; 22 using NCC.Extend.Entitys.Enum;
  23 +using NCC.Extend.Entitys.lq_hytk_mx;
22 using NCC.Extend.Entitys.lq_jinsanjiao_user; 24 using NCC.Extend.Entitys.lq_jinsanjiao_user;
23 using NCC.Extend.Entitys.lq_kd_deductinfo; 25 using NCC.Extend.Entitys.lq_kd_deductinfo;
24 using NCC.Extend.Entitys.lq_kd_jksyj; 26 using NCC.Extend.Entitys.lq_kd_jksyj;
@@ -26,6 +28,7 @@ using NCC.Extend.Entitys.lq_kd_kdjlb; @@ -26,6 +28,7 @@ using NCC.Extend.Entitys.lq_kd_kdjlb;
26 using NCC.Extend.Entitys.lq_kd_kjbsyj; 28 using NCC.Extend.Entitys.lq_kd_kjbsyj;
27 using NCC.Extend.Entitys.lq_kd_pxmx; 29 using NCC.Extend.Entitys.lq_kd_pxmx;
28 using NCC.Extend.Entitys.lq_khxx; 30 using NCC.Extend.Entitys.lq_khxx;
  31 +using NCC.Extend.Entitys.lq_xh_pxmx;
29 using NCC.Extend.Entitys.lq_xmzl; 32 using NCC.Extend.Entitys.lq_xmzl;
30 using NCC.Extend.Interfaces.LqKdKdjlb; 33 using NCC.Extend.Interfaces.LqKdKdjlb;
31 using NCC.Extend.Utils; 34 using NCC.Extend.Utils;
@@ -118,6 +121,9 @@ namespace NCC.Extend.LqKdKdjlb @@ -118,6 +121,9 @@ namespace NCC.Extend.LqKdKdjlb
118 // 4. 查询科技部老师业绩列表 121 // 4. 查询科技部老师业绩列表
119 var lqKdKjbsyjList = await _db.Queryable<LqKdKjbsyjEntity>().Where(w => w.Glkdbh == entity.Id).ToListAsync(); 122 var lqKdKjbsyjList = await _db.Queryable<LqKdKjbsyjEntity>().Where(w => w.Glkdbh == entity.Id).ToListAsync();
120 123
  124 + // 5. 查询扣款信息列表
  125 + var lqKdDeductList = await _db.Queryable<LqKdDeductinfoEntity>().Where(w => w.BillingId == entity.Id).ToListAsync();
  126 +
121 // 5. 构建品项明细输出,每个品项关联对应的业绩信息 127 // 5. 构建品项明细输出,每个品项关联对应的业绩信息
122 var pxmxOutputList = new List<LqKdPxmxInfoOutput>(); 128 var pxmxOutputList = new List<LqKdPxmxInfoOutput>();
123 foreach (var pxmx in lqKdPxmxList) 129 foreach (var pxmx in lqKdPxmxList)
@@ -137,6 +143,7 @@ namespace NCC.Extend.LqKdKdjlb @@ -137,6 +143,7 @@ namespace NCC.Extend.LqKdKdjlb
137 totalPrice = pxmx.TotalPrice, 143 totalPrice = pxmx.TotalPrice,
138 actualPrice = pxmx.ActualPrice, 144 actualPrice = pxmx.ActualPrice,
139 remark = pxmx.Remark, 145 remark = pxmx.Remark,
  146 + isEffective = pxmx.IsEffective,
140 }; 147 };
141 148
142 // 关联该品项的健康师业绩 149 // 关联该品项的健康师业绩
@@ -147,6 +154,7 @@ namespace NCC.Extend.LqKdKdjlb @@ -147,6 +154,7 @@ namespace NCC.Extend.LqKdKdjlb
147 var kjbsyjForPx = lqKdKjbsyjList.Where(k => k.Kdpxid == pxmx.Id).ToList(); 154 var kjbsyjForPx = lqKdKjbsyjList.Where(k => k.Kdpxid == pxmx.Id).ToList();
148 pxmxOutput.lqKdKjbsyjList = kjbsyjForPx.Adapt<List<LqKdKjbsyjInfoOutput>>(); 155 pxmxOutput.lqKdKjbsyjList = kjbsyjForPx.Adapt<List<LqKdKjbsyjInfoOutput>>();
149 156
  157 +
150 pxmxOutputList.Add(pxmxOutput); 158 pxmxOutputList.Add(pxmxOutput);
151 } 159 }
152 160
@@ -156,6 +164,8 @@ namespace NCC.Extend.LqKdKdjlb @@ -156,6 +164,8 @@ namespace NCC.Extend.LqKdKdjlb
156 // 7. 设置全局业绩列表(用于兼容性,但主要使用品项关联的业绩) 164 // 7. 设置全局业绩列表(用于兼容性,但主要使用品项关联的业绩)
157 output.lqKdJksyjList = lqKdJksyjList.Adapt<List<LqKdJksyjInfoOutput>>(); 165 output.lqKdJksyjList = lqKdJksyjList.Adapt<List<LqKdJksyjInfoOutput>>();
158 output.lqKdKjbsyjList = lqKdKjbsyjList.Adapt<List<LqKdKjbsyjInfoOutput>>(); 166 output.lqKdKjbsyjList = lqKdKjbsyjList.Adapt<List<LqKdKjbsyjInfoOutput>>();
  167 + // 8. 设置扣款信息列表
  168 + output.lqKdDeductList = lqKdDeductList.Adapt<List<LqKdDeductinfoInfoOutput>>();
159 169
160 return output; 170 return output;
161 } 171 }
@@ -182,6 +192,7 @@ namespace NCC.Extend.LqKdKdjlb @@ -182,6 +192,7 @@ namespace NCC.Extend.LqKdKdjlb
182 DateTime? startKdrq = queryKdrq != null ? Ext.GetDateTime(queryKdrq.First()) : null; 192 DateTime? startKdrq = queryKdrq != null ? Ext.GetDateTime(queryKdrq.First()) : null;
183 DateTime? endKdrq = queryKdrq != null ? Ext.GetDateTime(queryKdrq.Last()) : null; 193 DateTime? endKdrq = queryKdrq != null ? Ext.GetDateTime(queryKdrq.Last()) : null;
184 var data = await _db.Queryable<LqKdKdjlbEntity>() 194 var data = await _db.Queryable<LqKdKdjlbEntity>()
  195 + .WhereIF(!string.IsNullOrEmpty(input.keyword), p => p.Kdhyc.Contains(input.keyword) || p.Kdhysjh.Contains(input.keyword))
185 .WhereIF(!string.IsNullOrEmpty(input.id), p => p.Id.Contains(input.id)) 196 .WhereIF(!string.IsNullOrEmpty(input.id), p => p.Id.Contains(input.id))
186 .WhereIF(!string.IsNullOrEmpty(input.djmd), p => p.Djmd.Equals(input.djmd)) 197 .WhereIF(!string.IsNullOrEmpty(input.djmd), p => p.Djmd.Equals(input.djmd))
187 .WhereIF(!string.IsNullOrEmpty(input.jsj), p => p.Jsj.Equals(input.jsj)) 198 .WhereIF(!string.IsNullOrEmpty(input.jsj), p => p.Jsj.Equals(input.jsj))
@@ -208,6 +219,7 @@ namespace NCC.Extend.LqKdKdjlb @@ -208,6 +219,7 @@ namespace NCC.Extend.LqKdKdjlb
208 .WhereIF(!string.IsNullOrEmpty(input.kjblsyj), p => p.Kjblsyj.Contains(input.kjblsyj)) 219 .WhereIF(!string.IsNullOrEmpty(input.kjblsyj), p => p.Kjblsyj.Contains(input.kjblsyj))
209 .WhereIF(!string.IsNullOrEmpty(input.pxxx), p => p.Pxxx.Contains(input.pxxx)) 220 .WhereIF(!string.IsNullOrEmpty(input.pxxx), p => p.Pxxx.Contains(input.pxxx))
210 .WhereIF(!string.IsNullOrEmpty(input.F_FIleUrl), p => p.F_FIleUrl.Contains(input.F_FIleUrl)) 221 .WhereIF(!string.IsNullOrEmpty(input.F_FIleUrl), p => p.F_FIleUrl.Contains(input.F_FIleUrl))
  222 + .WhereIF(!string.IsNullOrEmpty(input.CreateUser), p => p.CreateUser.Equals(input.CreateUser))
211 .Select(it => new LqKdKdjlbListOutput 223 .Select(it => new LqKdKdjlbListOutput
212 { 224 {
213 id = it.Id, 225 id = it.Id,
@@ -236,6 +248,8 @@ namespace NCC.Extend.LqKdKdjlb @@ -236,6 +248,8 @@ namespace NCC.Extend.LqKdKdjlb
236 kjblsyj = it.Kjblsyj, 248 kjblsyj = it.Kjblsyj,
237 pxxx = it.Pxxx, 249 pxxx = it.Pxxx,
238 IsEffective = it.IsEffective, 250 IsEffective = it.IsEffective,
  251 + CreateUser = it.CreateUser,
  252 + CreateUserName = SqlFunc.Subqueryable<UserEntity>().Where(x => x.Id == it.CreateUser).Select(x => x.RealName),
239 }) 253 })
240 .MergeTable() 254 .MergeTable()
241 .OrderBy(sidx + " " + input.sort) 255 .OrderBy(sidx + " " + input.sort)
@@ -265,25 +279,49 @@ namespace NCC.Extend.LqKdKdjlb @@ -265,25 +279,49 @@ namespace NCC.Extend.LqKdKdjlb
265 //开启事务 279 //开启事务
266 _db.BeginTran(); 280 _db.BeginTran();
267 //判断是否有作废关联id 281 //判断是否有作废关联id
268 - if (!string.IsNullOrEmpty(input.cancelRefId)) 282 + //暂时先不需要
  283 + // if (!string.IsNullOrEmpty(input.cancelRefId))
  284 + // {
  285 + // //查询作废关联id
  286 + // var cancelRefEntity = await _db.Queryable<LqKdKdjlbEntity>().FirstAsync(p => p.Id == input.cancelRefId);
  287 + // if (cancelRefEntity == null || cancelRefEntity.IsEffective == StatusEnum.无效.GetHashCode())
  288 + // {
  289 + // throw NCCException.Oh("该开单记录已经作废");
  290 + // }
  291 + // // 检查作废关联记录是否可以作废
  292 + // var (canCancel, errorMessage) = await CheckBillingCanCancelAsync(input.cancelRefId);
  293 + // if (!canCancel)
  294 + // {
  295 + // throw NCCException.Oh(errorMessage);
  296 + // }
  297 +
  298 + // //将作废关联id的IsEffective设置为无效
  299 + // cancelRefEntity.IsEffective = StatusEnum.无效.GetHashCode();
  300 + // await _db.Updateable(cancelRefEntity).ExecuteCommandAsync();
  301 + // //把品项明细表的IsEffective设置为无效
  302 + // await _db.Updateable<LqKdPxmxEntity>().Where(p => p.Glkdbh == input.cancelRefId).UpdateColumns(p => new LqKdPxmxEntity { IsEffective = StatusEnum.无效.GetHashCode() }).ExecuteCommandAsync();
  303 + // //把健康师业绩表的IsEffective设置为无效
  304 + // await _db.Updateable<LqKdJksyjEntity>().Where(p => p.Glkdbh == input.cancelRefId).UpdateColumns(p => new LqKdJksyjEntity { IsEffective = StatusEnum.无效.GetHashCode() }).ExecuteCommandAsync();
  305 + // //把科技部老师业绩表的IsEffective设置为无效
  306 + // await _db.Updateable<LqKdKjbsyjEntity>().Where(p => p.Glkdbh == input.cancelRefId).UpdateColumns(p => new LqKdKjbsyjEntity { IsEffective = StatusEnum.无效.GetHashCode() }).ExecuteCommandAsync();
  307 + // //把扣款信息表的IsEffective设置为无效
  308 + // await _db.Updateable<LqKdDeductinfoEntity>().Where(p => p.BillingId == input.cancelRefId).UpdateColumns(p => new LqKdDeductinfoEntity { IsEffective = StatusEnum.无效.GetHashCode() }).ExecuteCommandAsync();
  309 + // }
  310 +
  311 + //判断是否有补缴开单ID
  312 + if (!string.IsNullOrEmpty(input.supplementBillingId))
269 { 313 {
270 - //查询作废关联id  
271 - var cancelRefEntity = await _db.Queryable<LqKdKdjlbEntity>().FirstAsync(p => p.Id == input.cancelRefId);  
272 - if (cancelRefEntity == null) 314 + //查询补缴开单ID
  315 + var supplementBillingEntity = await _db.Queryable<LqKdKdjlbEntity>().FirstAsync(p => p.Id == input.supplementBillingId);
  316 + if (supplementBillingEntity == null || supplementBillingEntity.IsEffective == StatusEnum.无效.GetHashCode())
273 { 317 {
274 - throw NCCException.Oh("作废关联id不存在"); 318 + throw NCCException.Oh("补缴开单记录不存在或已作废");
275 } 319 }
276 - //将作废关联id的IsEffective设置为0  
277 - cancelRefEntity.IsEffective = StatusEnum.无效.GetHashCode();  
278 - await _db.Updateable(cancelRefEntity).ExecuteCommandAsync();  
279 - //把品项明细表的IsEffective设置为0  
280 - await _db.Updateable<LqKdPxmxEntity>().Where(p => p.Glkdbh == input.cancelRefId).UpdateColumns(p => new LqKdPxmxEntity { IsEffective = StatusEnum.无效.GetHashCode() }).ExecuteCommandAsync();  
281 - //把健康师业绩表的IsEffective设置为0  
282 - await _db.Updateable<LqKdJksyjEntity>().Where(p => p.Glkdbh == input.cancelRefId).UpdateColumns(p => new LqKdJksyjEntity { IsEffective = StatusEnum.无效.GetHashCode() }).ExecuteCommandAsync();  
283 - //把科技部老师业绩表的IsEffective设置为0  
284 - await _db.Updateable<LqKdKjbsyjEntity>().Where(p => p.Glkdbh == input.cancelRefId).UpdateColumns(p => new LqKdKjbsyjEntity { IsEffective = StatusEnum.无效.GetHashCode() }).ExecuteCommandAsync();  
285 - //把扣款信息表的IsEffective设置为0  
286 - await _db.Updateable<LqKdDeductinfoEntity>().Where(p => p.BillingId == input.cancelRefId).UpdateColumns(p => new LqKdDeductinfoEntity { IsEffective = StatusEnum.无效.GetHashCode() }).ExecuteCommandAsync(); 320 + //然后对之前的开单表的补缴金额进行累加
  321 + //需要判断补缴金额是否超过欠款金额,只记录应缴金额
  322 + var supplementAmount = supplementBillingEntity.Qk - supplementBillingEntity.PaidDebt;
  323 + entity.PaidDebt += input.supplementAmount > supplementAmount ? supplementAmount : input.supplementAmount;
  324 + await _db.Updateable(entity).ExecuteCommandAsync();
287 } 325 }
288 326
289 //新增开单记录表记录 327 //新增开单记录表记录
@@ -336,6 +374,7 @@ namespace NCC.Extend.LqKdKdjlb @@ -336,6 +374,7 @@ namespace NCC.Extend.LqKdKdjlb
336 ActualPrice = item.actualPrice, 374 ActualPrice = item.actualPrice,
337 Remark = item.remark, 375 Remark = item.remark,
338 IsEffective = StatusEnum.有效.GetHashCode(), 376 IsEffective = StatusEnum.有效.GetHashCode(),
  377 + ActivityId = input.activityId,
339 }; 378 };
340 allPxmxEntities.Add(lqKdPxmxEntity); 379 allPxmxEntities.Add(lqKdPxmxEntity);
341 380
@@ -358,6 +397,7 @@ namespace NCC.Extend.LqKdKdjlb @@ -358,6 +397,7 @@ namespace NCC.Extend.LqKdKdjlb
358 Jsj_id = ijks_tem.jsj_id, 397 Jsj_id = ijks_tem.jsj_id,
359 Kdpxid = lqKdPxmxEntity.Id, 398 Kdpxid = lqKdPxmxEntity.Id,
360 IsEffective = StatusEnum.有效.GetHashCode(), 399 IsEffective = StatusEnum.有效.GetHashCode(),
  400 + ActivityId = input.activityId,
361 }); 401 });
362 } 402 }
363 } 403 }
@@ -367,19 +407,19 @@ namespace NCC.Extend.LqKdKdjlb @@ -367,19 +407,19 @@ namespace NCC.Extend.LqKdKdjlb
367 { 407 {
368 foreach (var ikjbs_tem in item.lqKdKjbsyjList) 408 foreach (var ikjbs_tem in item.lqKdKjbsyjList)
369 { 409 {
370 - allKjbsyjEntities.Add(  
371 - new LqKdKjbsyjEntity  
372 - {  
373 - Id = YitIdHelper.NextId().ToString(),  
374 - Glkdbh = newEntity.Id,  
375 - Kjbls = ikjbs_tem.kjbls,  
376 - Kjblsxm = ikjbs_tem.kjblsxm,  
377 - Kjblszh = ikjbs_tem.kjblszh,  
378 - Kjblsyj = ikjbs_tem.kjblsyj,  
379 - Yjsj = input.kdrq,  
380 - Kdpxid = lqKdPxmxEntity.Id,  
381 - IsEffective = StatusEnum.有效.GetHashCode(),  
382 - } 410 + allKjbsyjEntities.Add(new LqKdKjbsyjEntity
  411 + {
  412 + Id = YitIdHelper.NextId().ToString(),
  413 + Glkdbh = newEntity.Id,
  414 + Kjbls = ikjbs_tem.kjbls,
  415 + Kjblsxm = ikjbs_tem.kjblsxm,
  416 + Kjblszh = ikjbs_tem.kjblszh,
  417 + Kjblsyj = ikjbs_tem.kjblsyj,
  418 + Yjsj = input.kdrq,
  419 + Kdpxid = lqKdPxmxEntity.Id,
  420 + IsEffective = StatusEnum.有效.GetHashCode(),
  421 + ActivityId = input.activityId,
  422 + }
383 ); 423 );
384 } 424 }
385 } 425 }
@@ -1042,9 +1082,9 @@ namespace NCC.Extend.LqKdKdjlb @@ -1042,9 +1082,9 @@ namespace NCC.Extend.LqKdKdjlb
1042 } 1082 }
1043 #endregion 1083 #endregion
1044 1084
1045 - #region 修改开单记录,不做删除,仅健康师业绩、科技部老师业绩信息 1085 + #region 修改开单记录
1046 /// <summary> 1086 /// <summary>
1047 - /// 修改开单记录,不做删除,仅健康师业绩、科技部老师业绩信息 1087 + /// 修改开单记录
1048 /// </summary> 1088 /// </summary>
1049 /// <remarks> 1089 /// <remarks>
1050 /// 更新开单记录及其关联的品项明细、健康师业绩、科技部老师业绩信息 1090 /// 更新开单记录及其关联的品项明细、健康师业绩、科技部老师业绩信息
@@ -1090,152 +1130,159 @@ namespace NCC.Extend.LqKdKdjlb @@ -1090,152 +1130,159 @@ namespace NCC.Extend.LqKdKdjlb
1090 { 1130 {
1091 var entity = input.Adapt<LqKdKdjlbEntity>(); 1131 var entity = input.Adapt<LqKdKdjlbEntity>();
1092 entity.Id = id; // 确保ID正确设置 1132 entity.Id = id; // 确保ID正确设置
1093 -  
1094 try 1133 try
1095 { 1134 {
  1135 + //检查开单记录是否可以操作
  1136 + var (canCancel, errorMessage) = await CheckBillingCanCancelAsync(id);
  1137 + if (!canCancel)
  1138 + {
  1139 + throw NCCException.Oh(errorMessage);
  1140 + }
1096 //开启事务 1141 //开启事务
1097 _db.BeginTran(); 1142 _db.BeginTran();
1098 -  
1099 // 更新开单记录主表 1143 // 更新开单记录主表
1100 - await _db.Updateable(entity)  
1101 - .IgnoreColumns(ignoreAllNullColumns: true)  
1102 - .IgnoreColumns(x => x.CreateTime) // 不更新创建时间  
1103 - .ExecuteCommandAsync();  
1104 -  
1105 - // 处理品项明细列表 - 更新或插入  
1106 - if (input.lqKdPxmxList != null && input.lqKdPxmxList.Any()) 1144 + await _db.Updateable(entity).IgnoreColumns(ignoreAllNullColumns: true).IgnoreColumns(x => x.CreateTime).ExecuteCommandAsync();
  1145 + //清空原有品项明细
  1146 + await _db.Deleteable<LqKdPxmxEntity>().Where(x => x.Glkdbh == id).ExecuteCommandAsync();
  1147 + //清空原有健康师业绩
  1148 + await _db.Deleteable<LqKdJksyjEntity>().Where(x => x.Glkdbh == id).ExecuteCommandAsync();
  1149 + //清空原有科技部老师业绩
  1150 + await _db.Deleteable<LqKdKjbsyjEntity>().Where(x => x.Glkdbh == id).ExecuteCommandAsync();
  1151 + //清空原有扣款信息
  1152 + await _db.Deleteable<LqKdDeductinfoEntity>().Where(x => x.BillingId == id).ExecuteCommandAsync();
  1153 + //循环品相信息
  1154 + // 收集所有需要插入的实体,然后批量插入
  1155 + var allPxmxEntities = new List<LqKdPxmxEntity>();
  1156 + var allJksyjEntities = new List<LqKdJksyjEntity>();
  1157 + var allKjbsyjEntities = new List<LqKdKjbsyjEntity>();
  1158 + var allDeductEntities = new List<LqKdDeductinfoEntity>();
  1159 + // 处理扣款信息列表
  1160 + foreach (var item in input.lqKdKdjlbDeductList)
1107 { 1161 {
1108 - foreach (var item in input.lqKdPxmxList) 1162 + var lqKdDeductEntity = new LqKdDeductinfoEntity
  1163 + {
  1164 + Id = YitIdHelper.NextId().ToString(),
  1165 + BillingId = id,
  1166 + DeductId = item.DeductId,
  1167 + DeductType = item.DeductType,
  1168 + Amount = item.Amount,
  1169 + ProjectNumber = item.ProjectNumber,
  1170 + UnitPrice = item.UnitPrice,
  1171 + ItemName = item.ItemName,
  1172 + ItemId = item.ItemId,
  1173 + IsEffective = StatusEnum.有效.GetHashCode(), // 设置为有效
  1174 + CreateTime = DateTime.Now, // 设置创建时间
  1175 + };
  1176 + allDeductEntities.Add(lqKdDeductEntity);
  1177 + }
  1178 + // 处理品项明细列表
  1179 + foreach (var item in input.lqKdPxmxList)
  1180 + {
  1181 + // 创建品项明细实体
  1182 + var lqKdPxmxEntity = new LqKdPxmxEntity
1109 { 1183 {
1110 - // 检查品项明细是否已存在  
1111 - var existingPxmx = await _db.Queryable<LqKdPxmxEntity>()  
1112 - .Where(x => x.Glkdbh == id && x.Px == item.px)  
1113 - .FirstAsync(); 1184 + Id = YitIdHelper.NextId().ToString(),
  1185 + Glkdbh = id,
  1186 + Yjsj = input.kdrq,
  1187 + CreateTIme = DateTime.Now,
  1188 + MemberId = entity.Kdhy,
  1189 + IsEnabled = StatusEnum.有效.GetHashCode(),
  1190 + ProjectNumber = item.projectNumber,
  1191 + TotalPrice = (decimal)(item.pxjg * item.projectNumber),
  1192 + Px = item.px,
  1193 + Pxmc = item.pxmc,
  1194 + Pxjg = item.pxjg,
  1195 + SourceType = item.sourceType,
  1196 + ActualPrice = item.actualPrice,
  1197 + Remark = item.remark,
  1198 + IsEffective = StatusEnum.有效.GetHashCode(),
  1199 + ActivityId = input.activityId,
  1200 + };
  1201 + allPxmxEntities.Add(lqKdPxmxEntity);
1114 1202
1115 - if (existingPxmx != null) 1203 + // 收集该品项关联的健康师业绩
  1204 + if (item.lqKdJksyjList != null && item.lqKdJksyjList.Any())
  1205 + {
  1206 + //把jksxm保存到HealthInstructorNames
  1207 + foreach (var ijks_tem in item.lqKdJksyjList)
1116 { 1208 {
1117 - // 更新现有品项明细  
1118 - existingPxmx.ProjectNumber = item.projectNumber == 0 ? 1 : item.projectNumber;  
1119 - existingPxmx.TotalPrice = (decimal)(item.pxjg * (item.projectNumber == 0 ? 1 : item.projectNumber));  
1120 - existingPxmx.Pxmc = item.pxmc;  
1121 - existingPxmx.Pxjg = item.pxjg;  
1122 - existingPxmx.SourceType = item.sourceType;  
1123 - await _db.Updateable(existingPxmx).ExecuteCommandAsync();  
1124 -  
1125 - // 更新该品项关联的健康师业绩  
1126 - if (item.lqKdJksyjList != null && item.lqKdJksyjList.Any())  
1127 - {  
1128 - // 先删除该品项的所有健康师业绩  
1129 - await _db.Deleteable<LqKdJksyjEntity>()  
1130 - .Where(x => x.Kdpxid == existingPxmx.Id)  
1131 - .ExecuteCommandAsync();  
1132 -  
1133 - // 重新插入健康师业绩  
1134 - var jksyjEntities = item.lqKdJksyjList.Select(ijks_tem => new LqKdJksyjEntity  
1135 - {  
1136 - Id = YitIdHelper.NextId().ToString(),  
1137 - Glkdbh = entity.Id,  
1138 - Jks = ijks_tem.jks,  
1139 - Jksxm = ijks_tem.jksxm,  
1140 - Jkszh = ijks_tem.jkszh,  
1141 - Jksyj = ijks_tem.jksyj,  
1142 - Yjsj = DateTime.Now,  
1143 - Jsj_id = ijks_tem.jsj_id,  
1144 - Kdpxid = existingPxmx.Id,  
1145 - }).ToList();  
1146 -  
1147 - if (jksyjEntities.Any())  
1148 - {  
1149 - await _db.Insertable(jksyjEntities).ExecuteCommandAsync();  
1150 - }  
1151 - }  
1152 -  
1153 - // 更新该品项关联的科技部老师业绩  
1154 - if (item.lqKdKjbsyjList != null && item.lqKdKjbsyjList.Any()) 1209 + allJksyjEntities.Add(new LqKdJksyjEntity
1155 { 1210 {
1156 - // 先删除该品项的所有科技部老师业绩  
1157 - await _db.Deleteable<LqKdKjbsyjEntity>()  
1158 - .Where(x => x.Kdpxid == existingPxmx.Id)  
1159 - .ExecuteCommandAsync();  
1160 -  
1161 - // 重新插入科技部老师业绩  
1162 - var kjbsyjEntities = item.lqKdKjbsyjList.Select(ikjbs_tem => new LqKdKjbsyjEntity  
1163 - {  
1164 - Id = YitIdHelper.NextId().ToString(),  
1165 - Glkdbh = entity.Id,  
1166 - Kjbls = ikjbs_tem.kjbls,  
1167 - Kjblsxm = ikjbs_tem.kjblsxm,  
1168 - Kjblszh = ikjbs_tem.kjblszh,  
1169 - Kjblsyj = ikjbs_tem.kjblsyj,  
1170 - Yjsj = DateTime.Now,  
1171 - Kdpxid = existingPxmx.Id,  
1172 - }).ToList();  
1173 -  
1174 - if (kjbsyjEntities.Any())  
1175 - {  
1176 - await _db.Insertable(kjbsyjEntities).ExecuteCommandAsync();  
1177 - }  
1178 - } 1211 + Id = YitIdHelper.NextId().ToString(),
  1212 + Glkdbh = id,
  1213 + Jks = ijks_tem.jks,
  1214 + Jksxm = ijks_tem.jksxm,
  1215 + Jkszh = ijks_tem.jkszh,
  1216 + Jksyj = ijks_tem.jksyj,
  1217 + Yjsj = input.kdrq,
  1218 + Jsj_id = ijks_tem.jsj_id,
  1219 + Kdpxid = lqKdPxmxEntity.Id,
  1220 + IsEffective = StatusEnum.有效.GetHashCode(),
  1221 + ActivityId = input.activityId,
  1222 + });
1179 } 1223 }
1180 - else 1224 + }
  1225 +
  1226 + // 收集该品项关联的科技部老师业绩
  1227 + if (item.lqKdKjbsyjList != null && item.lqKdKjbsyjList.Any())
  1228 + {
  1229 + foreach (var ikjbs_tem in item.lqKdKjbsyjList)
1181 { 1230 {
1182 - // 插入新的品项明细  
1183 - var newPxmxEntity = new LqKdPxmxEntity 1231 + allKjbsyjEntities.Add(new LqKdKjbsyjEntity
1184 { 1232 {
1185 Id = YitIdHelper.NextId().ToString(), 1233 Id = YitIdHelper.NextId().ToString(),
1186 - Glkdbh = entity.Id,  
1187 - CreateTIme = DateTime.Now,  
1188 - MemberId = entity.Kdhy,  
1189 - IsEnabled = 0,  
1190 - ProjectNumber = item.projectNumber == 0 ? 1 : item.projectNumber,  
1191 - TotalPrice = (decimal)(item.pxjg * (item.projectNumber == 0 ? 1 : item.projectNumber)),  
1192 - Px = item.px,  
1193 - Pxmc = item.pxmc,  
1194 - Pxjg = item.pxjg,  
1195 - SourceType = item.sourceType,  
1196 - };  
1197 - await _db.Insertable(newPxmxEntity).ExecuteCommandAsync();  
1198 -  
1199 - // 插入该品项关联的健康师业绩  
1200 - if (item.lqKdJksyjList != null && item.lqKdJksyjList.Any())  
1201 - {  
1202 - var jksyjEntities = item.lqKdJksyjList.Select(ijks_tem => new LqKdJksyjEntity  
1203 - {  
1204 - Id = YitIdHelper.NextId().ToString(),  
1205 - Glkdbh = entity.Id,  
1206 - Jks = ijks_tem.jks,  
1207 - Jksxm = ijks_tem.jksxm,  
1208 - Jkszh = ijks_tem.jkszh,  
1209 - Jksyj = ijks_tem.jksyj,  
1210 - Yjsj = DateTime.Now,  
1211 - Jsj_id = ijks_tem.jsj_id,  
1212 - Kdpxid = newPxmxEntity.Id,  
1213 - }).ToList();  
1214 -  
1215 - await _db.Insertable(jksyjEntities).ExecuteCommandAsync();  
1216 - }  
1217 -  
1218 - // 插入该品项关联的科技部老师业绩  
1219 - if (item.lqKdKjbsyjList != null && item.lqKdKjbsyjList.Any())  
1220 - {  
1221 - var kjbsyjEntities = item.lqKdKjbsyjList.Select(ikjbs_tem => new LqKdKjbsyjEntity  
1222 - {  
1223 - Id = YitIdHelper.NextId().ToString(),  
1224 - Glkdbh = entity.Id,  
1225 - Kjbls = ikjbs_tem.kjbls,  
1226 - Kjblsxm = ikjbs_tem.kjblsxm,  
1227 - Kjblszh = ikjbs_tem.kjblszh,  
1228 - Kjblsyj = ikjbs_tem.kjblsyj,  
1229 - Yjsj = DateTime.Now,  
1230 - Kdpxid = newPxmxEntity.Id,  
1231 - }).ToList();  
1232 -  
1233 - await _db.Insertable(kjbsyjEntities).ExecuteCommandAsync(); 1234 + Glkdbh = id,
  1235 + Kjbls = ikjbs_tem.kjbls,
  1236 + Kjblsxm = ikjbs_tem.kjblsxm,
  1237 + Kjblszh = ikjbs_tem.kjblszh,
  1238 + Kjblsyj = ikjbs_tem.kjblsyj,
  1239 + Yjsj = input.kdrq,
  1240 + Kdpxid = lqKdPxmxEntity.Id,
  1241 + IsEffective = StatusEnum.有效.GetHashCode(),
  1242 + ActivityId = input.activityId,
1234 } 1243 }
  1244 + );
1235 } 1245 }
1236 } 1246 }
1237 } 1247 }
1238 1248
  1249 +
  1250 +
  1251 + //通过会员id查询会员信息
  1252 + var memberInfo = await _db.Queryable<LqKhxxEntity>().Where(u => u.Id == entity.Kdhy).FirstAsync();
  1253 + //通过开单记录表查询这个会员开单金额
  1254 + var kdAmount = await _db.Queryable<LqKdKdjlbEntity>().Where(u => u.Kdhy == entity.Kdhy).SumAsync(u => u.Sfyj);
  1255 + //如果开单金额小于500,为散客,如果大于500,为会员
  1256 + if (kdAmount < 500)
  1257 + {
  1258 + memberInfo.Khlx = MemberTypeEnum.散客.GetHashCode().ToString();
  1259 + }
  1260 + else
  1261 + {
  1262 + memberInfo.Khlx = MemberTypeEnum.会员.GetHashCode().ToString();
  1263 + }
  1264 + await _db.Updateable(memberInfo).ExecuteCommandAsync();
  1265 + // 批量插入扣款信息
  1266 + if (allDeductEntities.Any())
  1267 + {
  1268 + await _db.Insertable(allDeductEntities).ExecuteCommandAsync();
  1269 + }
  1270 + // 批量插入品项明细
  1271 + if (allPxmxEntities.Any())
  1272 + {
  1273 + await _db.Insertable(allPxmxEntities).ExecuteCommandAsync();
  1274 + }
  1275 + // 批量插入健康师业绩
  1276 + if (allJksyjEntities.Any())
  1277 + {
  1278 + await _db.Insertable(allJksyjEntities).ExecuteCommandAsync();
  1279 + }
  1280 + // 批量插入科技部老师业绩
  1281 + if (allKjbsyjEntities.Any())
  1282 + {
  1283 + await _db.Insertable(allKjbsyjEntities).ExecuteCommandAsync();
  1284 + }
  1285 +
1239 //关闭事务 1286 //关闭事务
1240 _db.CommitTran(); 1287 _db.CommitTran();
1241 } 1288 }
@@ -1252,57 +1299,90 @@ namespace NCC.Extend.LqKdKdjlb @@ -1252,57 +1299,90 @@ namespace NCC.Extend.LqKdKdjlb
1252 /// <summary> 1299 /// <summary>
1253 /// 作废开单记录 1300 /// 作废开单记录
1254 /// </summary> 1301 /// </summary>
1255 - /// <param name="id">开单记录主键ID</param> 1302 + /// <param name="input">作废开单记录输入</param>
1256 /// <returns>无返回值</returns> 1303 /// <returns>无返回值</returns>
  1304 + /// <remarks>
  1305 + /// 作废指定的开单记录,包括相关的品项明细、业绩记录等
  1306 + ///
  1307 + /// 示例请求:
  1308 + /// ```json
  1309 + /// {
  1310 + /// "id": "123456789",
  1311 + /// "remarks": "客户要求作废此订单"
  1312 + /// }
  1313 + /// ```
  1314 + ///
  1315 + /// 参数说明:
  1316 + /// - id: 开单记录主键ID(必填)
  1317 + /// - remarks: 作废备注说明
  1318 + /// </remarks>
1257 /// <response code="200">作废成功</response> 1319 /// <response code="200">作废成功</response>
1258 /// <response code="400">参数错误,开单记录ID不能为空</response> 1320 /// <response code="400">参数错误,开单记录ID不能为空</response>
1259 /// <response code="404">开单记录不存在</response> 1321 /// <response code="404">开单记录不存在</response>
1260 /// <response code="500">服务器内部错误</response> 1322 /// <response code="500">服务器内部错误</response>
1261 - [HttpPut("Cancel/{id}")]  
1262 - public async Task Cancel(string id) 1323 + [HttpPut("Cancel")]
  1324 + public async Task Cancel(CancelBillingInput input)
1263 { 1325 {
1264 - if (string.IsNullOrEmpty(id)) 1326 + if (string.IsNullOrEmpty(input.Id))
1265 { 1327 {
1266 throw NCCException.Oh("开单记录ID不能为空"); 1328 throw NCCException.Oh("开单记录ID不能为空");
1267 } 1329 }
1268 -  
1269 try 1330 try
1270 { 1331 {
1271 //开启事务 1332 //开启事务
1272 _db.BeginTran(); 1333 _db.BeginTran();
  1334 + // 检查开单记录是否可以作废
  1335 + var (canCancel, errorMessage) = await CheckBillingCanCancelAsync(input.Id);
  1336 + if (!canCancel)
  1337 + {
  1338 + throw NCCException.Oh(errorMessage);
  1339 + }
1273 1340
1274 // 查询开单记录 1341 // 查询开单记录
1275 - var entity = await _db.Queryable<LqKdKdjlbEntity>().FirstAsync(p => p.Id == id); 1342 + var entity = await _db.Queryable<LqKdKdjlbEntity>().FirstAsync(p => p.Id == input.Id);
1276 if (entity == null) 1343 if (entity == null)
1277 { 1344 {
1278 throw NCCException.Oh("开单记录不存在"); 1345 throw NCCException.Oh("开单记录不存在");
1279 } 1346 }
1280 1347
1281 - // 检查是否已经作废  
1282 - if (entity.IsEffective == 0)  
1283 - {  
1284 - throw NCCException.Oh("该开单记录已经作废");  
1285 - }  
1286 -  
1287 - // 标记开单记录为无效  
1288 - entity.IsEffective = 0; 1348 + // 标记开单记录为无效,并添加作废备注
  1349 + entity.IsEffective = StatusEnum.无效.GetHashCode();
  1350 + entity.CancelRefRemarks = input.Remarks;
  1351 + entity.UpdateTime = DateTime.Now;
1289 await _db.Updateable(entity).ExecuteCommandAsync(); 1352 await _db.Updateable(entity).ExecuteCommandAsync();
  1353 +
1290 // 标记对应开单明细表为无效 1354 // 标记对应开单明细表为无效
1291 - await _db.Updateable<LqKdPxmxEntity>().SetColumns(it => new LqKdPxmxEntity { IsEffective = 0 }).Where(it => it.Glkdbh == id).ExecuteCommandAsync(); 1355 + await _db.Updateable<LqKdPxmxEntity>()
  1356 + .SetColumns(it => new LqKdPxmxEntity { IsEffective = StatusEnum.无效.GetHashCode() })
  1357 + .Where(it => it.Glkdbh == input.Id)
  1358 + .ExecuteCommandAsync();
  1359 +
1292 // 标记健康师业绩为无效 1360 // 标记健康师业绩为无效
1293 - await _db.Updateable<LqKdJksyjEntity>().SetColumns(it => new LqKdJksyjEntity { IsEffective = 0 }).Where(it => it.Glkdbh == id).ExecuteCommandAsync(); 1361 + await _db.Updateable<LqKdJksyjEntity>()
  1362 + .SetColumns(it => new LqKdJksyjEntity { IsEffective = StatusEnum.无效.GetHashCode() })
  1363 + .Where(it => it.Glkdbh == input.Id)
  1364 + .ExecuteCommandAsync();
  1365 +
1294 // 标记科技部老师业绩为无效 1366 // 标记科技部老师业绩为无效
1295 - await _db.Updateable<LqKdKjbsyjEntity>().SetColumns(it => new LqKdKjbsyjEntity { IsEffective = 0 }).Where(it => it.Glkdbh == id).ExecuteCommandAsync(); 1367 + await _db.Updateable<LqKdKjbsyjEntity>()
  1368 + .SetColumns(it => new LqKdKjbsyjEntity { IsEffective = StatusEnum.无效.GetHashCode() })
  1369 + .Where(it => it.Glkdbh == input.Id)
  1370 + .ExecuteCommandAsync();
  1371 +
1296 // 标记开单_储扣详细表为无效 1372 // 标记开单_储扣详细表为无效
1297 - await _db.Updateable<LqKdDeductinfoEntity>().SetColumns(it => new LqKdDeductinfoEntity { IsEffective = 0 }).Where(it => it.BillingId == id).ExecuteCommandAsync(); 1373 + await _db.Updateable<LqKdDeductinfoEntity>()
  1374 + .SetColumns(it => new LqKdDeductinfoEntity { IsEffective = StatusEnum.无效.GetHashCode() })
  1375 + .Where(it => it.BillingId == input.Id)
  1376 + .ExecuteCommandAsync();
  1377 +
1298 //关闭事务 1378 //关闭事务
1299 _db.CommitTran(); 1379 _db.CommitTran();
1300 } 1380 }
1301 - catch (Exception) 1381 + catch (Exception ex)
1302 { 1382 {
1303 //回滚事务 1383 //回滚事务
1304 _db.RollbackTran(); 1384 _db.RollbackTran();
1305 - throw NCCException.Oh(ErrorCode.COM1001); 1385 + throw NCCException.Oh($"作废开单记录失败: {ex.Message}");
1306 } 1386 }
1307 } 1387 }
1308 #endregion 1388 #endregion
@@ -1482,5 +1562,156 @@ namespace NCC.Extend.LqKdKdjlb @@ -1482,5 +1562,156 @@ namespace NCC.Extend.LqKdKdjlb
1482 } 1562 }
1483 } 1563 }
1484 #endregion 1564 #endregion
  1565 +
  1566 + #region 根据门店获取该门店的欠款记录
  1567 + /// <summary>
  1568 + /// 根据门店获取该门店的欠款记录
  1569 + /// </summary>
  1570 + /// <param name="input">查询参数</param>
  1571 + /// <returns>分页的欠款记录</returns>
  1572 + /// <remarks>
  1573 + /// 获取指定门店的欠款记录,考虑已缴欠款情况,支持分页
  1574 + ///
  1575 + /// 示例请求:
  1576 + /// ```json
  1577 + /// {
  1578 + /// "storeId": "门店ID",
  1579 + /// "currentPage": 1,
  1580 + /// "pageSize": 10,
  1581 + /// "sidx": "Kdrq",
  1582 + /// "sort": "desc"
  1583 + /// }
  1584 + /// ```
  1585 + ///
  1586 + /// 参数说明:
  1587 + /// - storeId: 门店ID,必填
  1588 + /// - currentPage: 当前页码
  1589 + /// - pageSize: 每页大小
  1590 + /// - sidx: 排序字段,默认按开单日期
  1591 + /// - sort: 排序方式,默认降序
  1592 + ///
  1593 + /// 返回说明:
  1594 + /// - 只返回仍有欠款的记录(总欠款 > 已缴欠款)
  1595 + /// - 包含开单编号、客户信息、欠款金额、已缴金额等
  1596 + /// </remarks>
  1597 + /// <response code="200">成功返回分页的欠款记录列表</response>
  1598 + /// <response code="400">门店ID不能为空</response>
  1599 + /// <response code="500">服务器错误</response>
  1600 + [HttpGet("GetDebtRecordByStoreId")]
  1601 + public async Task<dynamic> GetDebtRecordByStoreId([FromQuery] DebtRecordQueryInput input)
  1602 + {
  1603 + try
  1604 + {
  1605 + if (string.IsNullOrEmpty(input.StoreId))
  1606 + {
  1607 + throw NCCException.Oh("门店ID不能为空");
  1608 + }
  1609 + var sidx = string.IsNullOrEmpty(input.sidx) ? "Kdrq" : input.sidx;
  1610 + var sort = string.IsNullOrEmpty(input.sort) ? "desc" : input.sort;
  1611 + // 获取该门店的欠款记录,考虑已缴欠款情况
  1612 + // 只返回仍有欠款的记录:总欠款 > 已缴欠款
  1613 + var debtRecords = await _db.Queryable<LqKdKdjlbEntity>()
  1614 + .Where(p => p.Djmd == input.StoreId && p.Qk > p.PaidDebt && p.IsEffective == StatusEnum.有效.GetHashCode())
  1615 + .Select(it => new LqKdKdjlbListOutput
  1616 + {
  1617 + id = it.Id,
  1618 + djmd = it.Djmd,
  1619 + jsj = it.Jsj,
  1620 + kdrq = it.Kdrq,
  1621 + gjlx = it.Gjlx,
  1622 + hgjg = it.Hgjg,
  1623 + zdyj = it.Zdyj,
  1624 + sfyj = it.Sfyj,
  1625 + qk = it.Qk,
  1626 + ckfs = it.Ckfs,
  1627 + PaidDebt = it.PaidDebt,
  1628 + fkfs = it.Fkfs,
  1629 + fkyy = it.Fkyy,
  1630 + fkpd = it.Fkpd,
  1631 + khly = it.Khly,
  1632 + tjr = it.Tjr,
  1633 + deductAmount = it.DeductAmount,
  1634 + sfskdd = it.Sfskdd,
  1635 + jj = it.Jj,
  1636 + bz = it.Bz,
  1637 + kdhy = it.Kdhy,
  1638 + kdhyc = it.Kdhyc,
  1639 + kdhysjh = it.Kdhysjh,
  1640 + jksyj = it.Jksyj,
  1641 + kjblsyj = it.Kjblsyj,
  1642 + pxxx = it.Pxxx,
  1643 + IsEffective = it.IsEffective,
  1644 + CreateUser = it.CreateUser,
  1645 + CreateUserName = SqlFunc.Subqueryable<UserEntity>().Where(x => x.Id == it.CreateUser).Select(x => x.RealName),
  1646 + })
  1647 + .MergeTable()
  1648 + .OrderBy(sidx + " " + sort)
  1649 + .ToPagedListAsync(input.currentPage, input.pageSize);
  1650 +
  1651 + return PageResult<LqKdKdjlbListOutput>.SqlSugarPageResult(debtRecords);
  1652 + }
  1653 + catch (Exception ex)
  1654 + {
  1655 + throw NCCException.Oh($"获取门店欠款记录失败: {ex.Message}");
  1656 + }
  1657 + }
  1658 + #endregion
  1659 +
  1660 + #region 私有方法
  1661 + /// <summary>
  1662 + /// 检查开单记录是否可以操作
  1663 + /// </summary>
  1664 + /// <param name="billingId">开单记录ID</param>
  1665 + /// <returns>是否可以作废</returns>
  1666 + private async Task<(bool canCancel, string errorMessage)> CheckBillingCanCancelAsync(string billingId)
  1667 + {
  1668 + try
  1669 + {
  1670 + // 查询开单记录
  1671 + var entity = await _db.Queryable<LqKdKdjlbEntity>().FirstAsync(p => p.Id == billingId);
  1672 + if (entity == null)
  1673 + {
  1674 + return (false, "开单记录不存在");
  1675 + }
  1676 + // 检查是否已经作废
  1677 + if (entity.IsEffective == StatusEnum.无效.GetHashCode())
  1678 + {
  1679 + return (false, "该开单记录已经作废");
  1680 + }
  1681 + // 判断是否有对应的补缴记录
  1682 + var qkbjList = await _db.Queryable<LqKdKdjlbEntity>().Where(p => p.SupplementBillingId == billingId).ToListAsync();
  1683 + if (qkbjList.Any())
  1684 + {
  1685 + return (false, "该开单记录有对应的补缴记录,不能进行操作");
  1686 + }
  1687 + // 查询开单记录下的品项明细ID列表
  1688 + var pxmxIdList = await _db.Queryable<LqKdPxmxEntity>().Where(p => p.Glkdbh == billingId).Select(p => p.Id).Distinct().ToListAsync();
  1689 + // 判断是否有对应的消耗记录
  1690 + var xhPxmxList = await _db.Queryable<LqXhPxmxEntity>().Where(p => pxmxIdList.Contains(p.BillingItemId)).ToListAsync();
  1691 + if (xhPxmxList.Any())
  1692 + {
  1693 + return (false, "该开单记录有对应的消耗记录,不能进行操作");
  1694 + }
  1695 + // 判断是否有退卡记录
  1696 + var hytkMxList = await _db.Queryable<LqHytkMxEntity>().Where(p => pxmxIdList.Contains(p.BillingItemId)).ToListAsync();
  1697 + if (hytkMxList.Any())
  1698 + {
  1699 + return (false, "该开单记录有对应的退卡记录,不能进行操作");
  1700 + }
  1701 + // 判断是否已经有储扣记录
  1702 + var deductInfoList = await _db.Queryable<LqKdDeductinfoEntity>().Where(p => pxmxIdList.Contains(p.DeductId)).ToListAsync();
  1703 + if (deductInfoList.Any())
  1704 + {
  1705 + return (false, "该开单记录有对应的储扣记录,不能进行操作");
  1706 + }
  1707 +
  1708 + return (true, string.Empty);
  1709 + }
  1710 + catch (Exception ex)
  1711 + {
  1712 + return (false, $"检查开单记录状态失败: {ex.Message}");
  1713 + }
  1714 + }
  1715 + #endregion
1485 } 1716 }
1486 } 1717 }
netcore/src/Modularity/Extend/NCC.Extend/LqKhxxService.cs
@@ -344,7 +344,6 @@ namespace NCC.Extend.LqKhxx @@ -344,7 +344,6 @@ namespace NCC.Extend.LqKhxx
344 { 344 {
345 throw NCCException.Oh("客户ID不能为空"); 345 throw NCCException.Oh("客户ID不能为空");
346 } 346 }
347 -  
348 // 查询客户是否存在 347 // 查询客户是否存在
349 var customerExists = await _db.Queryable<LqKhxxEntity>().Where(c => c.Id == customerId).AnyAsync(); 348 var customerExists = await _db.Queryable<LqKhxxEntity>().Where(c => c.Id == customerId).AnyAsync();
350 349
@@ -352,13 +351,10 @@ namespace NCC.Extend.LqKhxx @@ -352,13 +351,10 @@ namespace NCC.Extend.LqKhxx
352 { 351 {
353 throw NCCException.Oh("客户不存在"); 352 throw NCCException.Oh("客户不存在");
354 } 353 }
355 -  
356 // 查询开单记录数量 354 // 查询开单记录数量
357 - var orderCount = await _db.Queryable<LqKdKdjlbEntity>().Where(o => o.Kdhy == customerId).CountAsync();  
358 - 355 + var orderCount = await _db.Queryable<LqKdKdjlbEntity>().Where(o => o.Kdhy == customerId && o.IsEffective == StatusEnum.有效.GetHashCode() && o.Sfyj > 0).CountAsync();
359 var hasOrderRecord = orderCount > 0; 356 var hasOrderRecord = orderCount > 0;
360 var orderType = hasOrderRecord ? "repeat_order" : "first_order"; 357 var orderType = hasOrderRecord ? "repeat_order" : "first_order";
361 -  
362 return new LqKhxxOrderTypeOutput 358 return new LqKhxxOrderTypeOutput
363 { 359 {
364 CustomerId = customerId, 360 CustomerId = customerId,
@@ -546,6 +542,7 @@ namespace NCC.Extend.LqKhxx @@ -546,6 +542,7 @@ namespace NCC.Extend.LqKhxx
546 // 先查询基础品项数据 542 // 先查询基础品项数据
547 var baseItems = await _db.Queryable<LqKdPxmxEntity>() 543 var baseItems = await _db.Queryable<LqKdPxmxEntity>()
548 .Where(x => x.MemberId == memberId) 544 .Where(x => x.MemberId == memberId)
  545 + .Where(x => x.IsEffective == StatusEnum.有效.GetHashCode())
549 .Select(x => new 546 .Select(x => new
550 { 547 {
551 x.Id, 548 x.Id,
@@ -560,6 +557,7 @@ namespace NCC.Extend.LqKhxx @@ -560,6 +557,7 @@ namespace NCC.Extend.LqKhxx
560 // 查询消费数据 557 // 查询消费数据
561 var consumedData = await _db.Queryable<LqXhPxmxEntity>() 558 var consumedData = await _db.Queryable<LqXhPxmxEntity>()
562 .Where(x => baseItems.Select(b => b.Id).Contains(x.BillingItemId)) 559 .Where(x => baseItems.Select(b => b.Id).Contains(x.BillingItemId))
  560 + .Where(x => x.IsEffective == StatusEnum.有效.GetHashCode())
563 .GroupBy(x => x.BillingItemId) 561 .GroupBy(x => x.BillingItemId)
564 .Select(x => new 562 .Select(x => new
565 { 563 {
@@ -571,6 +569,7 @@ namespace NCC.Extend.LqKhxx @@ -571,6 +569,7 @@ namespace NCC.Extend.LqKhxx
571 // 查询退卡数据 569 // 查询退卡数据
572 var refundedData = await _db.Queryable<LqHytkMxEntity>() 570 var refundedData = await _db.Queryable<LqHytkMxEntity>()
573 .Where(x => baseItems.Select(b => b.Id).Contains(x.BillingItemId)) 571 .Where(x => baseItems.Select(b => b.Id).Contains(x.BillingItemId))
  572 + .Where(x => x.IsEffective == StatusEnum.有效.GetHashCode())
574 .GroupBy(x => x.BillingItemId) 573 .GroupBy(x => x.BillingItemId)
575 .Select(x => new 574 .Select(x => new
576 { 575 {
@@ -582,11 +581,12 @@ namespace NCC.Extend.LqKhxx @@ -582,11 +581,12 @@ namespace NCC.Extend.LqKhxx
582 //查询储扣数据 581 //查询储扣数据
583 var deductData = await _db.Queryable<LqKdDeductinfoEntity>() 582 var deductData = await _db.Queryable<LqKdDeductinfoEntity>()
584 .Where(x => baseItems.Select(b => b.Id).Contains(x.DeductId)) 583 .Where(x => baseItems.Select(b => b.Id).Contains(x.DeductId))
  584 + .Where(x => x.IsEffective == StatusEnum.有效.GetHashCode())
585 .GroupBy(x => x.DeductId) 585 .GroupBy(x => x.DeductId)
586 .Select(x => new 586 .Select(x => new
587 { 587 {
588 BillingItemId = x.DeductId, 588 BillingItemId = x.DeductId,
589 - TotalDeduct = SqlFunc.AggregateSum(x.Amount) 589 + TotalDeduct = SqlFunc.AggregateSum(x.ProjectNumber)
590 }) 590 })
591 .ToListAsync(); 591 .ToListAsync();
592 592
@@ -609,6 +609,8 @@ namespace NCC.Extend.LqKhxx @@ -609,6 +609,8 @@ namespace NCC.Extend.LqKhxx
609 { 609 {
610 item.RemainingCount = item.TotalPurchased - item.ConsumedCount - item.RefundedCount - item.DeductCount; 610 item.RemainingCount = item.TotalPurchased - item.ConsumedCount - item.RefundedCount - item.DeductCount;
611 } 611 }
  612 + //过滤剩余数量为0的品项,先暂时为不等于 0 ,因为现在有问题,会出现负数,后面再修改
  613 + remainingItems = remainingItems.Where(item => item.RemainingCount != 0).ToList();
612 return new MemberRemainingItemsOutput 614 return new MemberRemainingItemsOutput
613 { 615 {
614 MemberId = memberId, 616 MemberId = memberId,
netcore/src/Modularity/Extend/NCC.Extend/LqPackageInfoService.cs 0 → 100644
  1 +using System;
  2 +using System.Collections.Generic;
  3 +using System.Linq;
  4 +using System.Threading.Tasks;
  5 +using Mapster;
  6 +using Microsoft.AspNetCore.Mvc;
  7 +using NCC.Common.Core.Manager;
  8 +using NCC.Common.Filter;
  9 +using NCC.Dependency;
  10 +using NCC.DynamicApiController;
  11 +using NCC.Extend.Entitys.Dto.LqPackageInfo;
  12 +using NCC.Extend.Entitys.Enum;
  13 +using NCC.Extend.Entitys.lq_package_info;
  14 +using NCC.Extend.Entitys.lq_package_item_detail;
  15 +using NCC.Extend.Interfaces.LqPackageInfo;
  16 +using NCC.FriendlyException;
  17 +using SqlSugar;
  18 +using Yitter.IdGenerator;
  19 +
  20 +namespace NCC.Extend.LqPackageInfo
  21 +{
  22 + /// <summary>
  23 + /// 营销活动服务
  24 + /// </summary>
  25 + [ApiDescriptionSettings(Tag = "绿纤营销活动服务", Name = "LqPackageInfo", Order = 200)]
  26 + [Route("api/Extend/[controller]")]
  27 + public class LqPackageInfoService : ILqPackageInfoService, IDynamicApiController, ITransient
  28 + {
  29 + private readonly ISqlSugarRepository<LqPackageInfoEntity> _packageInfoRepository;
  30 + private readonly SqlSugarScope _db;
  31 + private readonly IUserManager _userManager;
  32 +
  33 + /// <summary>
  34 + /// 构造函数
  35 + /// </summary>
  36 + /// <param name="packageInfoRepository">营销活动仓储</param>
  37 + /// <param name="userManager">用户管理器</param>
  38 + public LqPackageInfoService(ISqlSugarRepository<LqPackageInfoEntity> packageInfoRepository, IUserManager userManager)
  39 + {
  40 + _packageInfoRepository = packageInfoRepository;
  41 + _db = packageInfoRepository.Context;
  42 + _userManager = userManager;
  43 + }
  44 +
  45 + #region 添加营销活动
  46 + /// <summary>
  47 + /// 添加营销活动
  48 + /// </summary>
  49 + /// <param name="input">营销活动创建输入</param>
  50 + /// <returns>营销活动ID</returns>
  51 + /// <remarks>
  52 + /// 创建新的营销活动,包含活动基本信息和品项明细
  53 + ///
  54 + /// 示例请求:
  55 + /// ```json
  56 + /// {
  57 + /// "activityName": "春季护肤优惠活动",
  58 + /// "activityDesc": "春季护肤特惠活动",
  59 + /// "startTime": "2025-03-01T00:00:00",
  60 + /// "endTime": "2025-03-31T23:59:59",
  61 + /// "minItemQuantity": 2,
  62 + /// "activityRules": "活动规则说明",
  63 + /// "activityImages": "[\"image1.jpg\"]",
  64 + /// "sortOrder": 1,
  65 + /// "activityItems": [
  66 + /// {
  67 + /// "itemId": "ITEM001",
  68 + /// "itemName": "面部清洁",
  69 + /// "itemCategory": "基础护理",
  70 + /// "itemRemark": "推荐品项"
  71 + /// }
  72 + /// ]
  73 + /// }
  74 + /// ```
  75 + ///
  76 + /// 参数说明:
  77 + /// - activityName: 营销活动名称
  78 + /// - activityDesc: 营销活动描述
  79 + /// - startTime: 活动开始时间
  80 + /// - endTime: 活动结束时间
  81 + /// - minItemQuantity: 至少购买品项数量
  82 + /// - activityRules: 活动规则说明
  83 + /// - activityImages: 活动图片(JSON格式)
  84 + /// - sortOrder: 排序
  85 + /// - activityItems: 营销活动品项明细列表
  86 + /// </remarks>
  87 + /// <response code="200">成功创建营销活动,返回营销活动ID</response>
  88 + /// <response code="400">请求参数错误</response>
  89 + /// <response code="500">服务器内部错误</response>
  90 + [HttpPost("CreatePackageInfoAsync")]
  91 + public async Task<string> CreatePackageInfoAsync(LqPackageInfoCrInput input)
  92 + {
  93 + try
  94 + {
  95 + // 验证活动时间
  96 + if (input.StartTime >= input.EndTime)
  97 + {
  98 + throw NCCException.Oh("活动开始时间必须小于结束时间");
  99 + }
  100 +
  101 + // 验证品项明细
  102 + if (input.ActivityItems == null || !input.ActivityItems.Any())
  103 + {
  104 + throw NCCException.Oh("营销活动必须包含至少一个品项");
  105 + }
  106 +
  107 + // 验证至少购买品项数量
  108 + if (input.ActivityItems.Count < input.MinItemQuantity)
  109 + {
  110 + throw NCCException.Oh($"品项数量不能少于至少购买品项数量({input.MinItemQuantity})");
  111 + }
  112 +
  113 + // 开始事务
  114 + _db.BeginTran();
  115 +
  116 + try
  117 + {
  118 + // 创建营销活动实体
  119 + var packageInfo = input.Adapt<LqPackageInfoEntity>();
  120 + packageInfo.Id = YitIdHelper.NextId().ToString();
  121 + packageInfo.CreateTime = DateTime.Now;
  122 + packageInfo.UpdateTime = DateTime.Now;
  123 + packageInfo.CreateUser = _userManager.UserId;
  124 + packageInfo.UpdateUser = _userManager.UserId;
  125 + packageInfo.IsEffective = StatusEnum.有效.GetHashCode();
  126 + // 保存营销活动
  127 + await _db.Insertable(packageInfo).ExecuteCommandAsync();
  128 + // 创建营销活动品项明细
  129 + var packageItemDetails = input.ActivityItems.Select(item =>
  130 + {
  131 + var packageItemDetail = item.Adapt<LqPackageItemDetailEntity>();
  132 + packageItemDetail.Id = YitIdHelper.NextId().ToString();
  133 + packageItemDetail.ActivityId = packageInfo.Id;
  134 + packageItemDetail.CreateTime = DateTime.Now;
  135 + packageItemDetail.UpdateTime = DateTime.Now;
  136 + packageItemDetail.IsEffective = StatusEnum.有效.GetHashCode();
  137 + return packageItemDetail;
  138 + }).ToList();
  139 + // 批量保存营销活动品项明细
  140 + if (packageItemDetails.Any())
  141 + {
  142 + await _db.Insertable(packageItemDetails).ExecuteCommandAsync();
  143 + }
  144 + // 提交事务
  145 + _db.CommitTran();
  146 +
  147 + return packageInfo.Id;
  148 + }
  149 + catch
  150 + {
  151 + // 回滚事务
  152 + _db.RollbackTran();
  153 + throw;
  154 + }
  155 + }
  156 + catch (Exception ex)
  157 + {
  158 + throw NCCException.Oh($"添加营销活动失败: {ex.Message}");
  159 + }
  160 + }
  161 + #endregion
  162 +
  163 + #region 获取营销活动列表
  164 + /// <summary>
  165 + /// 获取营销活动列表
  166 + /// </summary>
  167 + /// <param name="input">营销活动列表查询输入</param>
  168 + /// <returns>营销活动列表</returns>
  169 + /// <remarks>
  170 + /// 获取营销活动列表,支持按活动名称、时间范围等条件筛选
  171 + ///
  172 + /// 查询参数说明:
  173 + /// - activityName: 活动名称(模糊查询)
  174 + /// - activityDesc: 活动描述(模糊查询)
  175 + /// - startTimeStart: 活动开始时间范围开始
  176 + /// - startTimeEnd: 活动开始时间范围结束
  177 + /// - endTimeStart: 活动结束时间范围开始
  178 + /// - endTimeEnd: 活动结束时间范围结束
  179 + /// - minItemQuantity: 至少购买品项数量
  180 + /// - createTimeStart: 创建时间范围开始
  181 + /// - createTimeEnd: 创建时间范围结束
  182 + /// </remarks>
  183 + /// <response code="200">成功获取营销活动列表</response>
  184 + /// <response code="400">请求参数错误</response>
  185 + /// <response code="500">服务器内部错误</response>
  186 + [HttpGet("GetPackageInfoListAsync")]
  187 + public async Task<dynamic> GetPackageInfoListAsync([FromQuery] LqPackageInfoListQueryInput input)
  188 + {
  189 + var sidx = input.sidx == null ? "CreateTime" : input.sidx;
  190 + var data = await _db.Queryable<LqPackageInfoEntity>()
  191 + .WhereIF(!string.IsNullOrEmpty(input.ActivityName), w => w.ActivityName.Contains(input.ActivityName))
  192 + .WhereIF(!string.IsNullOrEmpty(input.ActivityDesc), w => w.ActivityDesc.Contains(input.ActivityDesc))
  193 + .WhereIF(input.StartTimeStart.HasValue, w => w.StartTime >= input.StartTimeStart.Value)
  194 + .WhereIF(input.StartTimeEnd.HasValue, w => w.StartTime <= input.StartTimeEnd.Value)
  195 + .WhereIF(input.EndTimeStart.HasValue, w => w.EndTime >= input.EndTimeStart.Value)
  196 + .WhereIF(input.EndTimeEnd.HasValue, w => w.EndTime <= input.EndTimeEnd.Value)
  197 + .WhereIF(input.MinItemQuantity.HasValue, w => w.MinItemQuantity == input.MinItemQuantity.Value)
  198 + .WhereIF(input.CreateTimeStart.HasValue, w => w.CreateTime >= input.CreateTimeStart.Value)
  199 + .WhereIF(input.CreateTimeEnd.HasValue, w => w.CreateTime <= input.CreateTimeEnd.Value)
  200 + .Select(it => new LqPackageInfoListOutput
  201 + {
  202 + Id = it.Id,
  203 + ActivityName = it.ActivityName,
  204 + ActivityDesc = it.ActivityDesc,
  205 + StartTime = it.StartTime,
  206 + EndTime = it.EndTime,
  207 + MinItemQuantity = it.MinItemQuantity,
  208 + ActivityRules = it.ActivityRules,
  209 + SortOrder = it.SortOrder,
  210 + CreateTime = it.CreateTime
  211 + }).MergeTable().OrderBy(sidx + " " + input.sort).ToPagedListAsync(input.currentPage, input.pageSize);
  212 + return PageResult<LqPackageInfoListOutput>.SqlSugarPageResult(data);
  213 + }
  214 + #endregion
  215 +
  216 + #region 获取营销活动详情
  217 + /// <summary>
  218 + /// 获取营销活动详情
  219 + /// </summary>
  220 + /// <param name="id">营销活动ID</param>
  221 + /// <returns>营销活动详情</returns>
  222 + [HttpGet("GetPackageInfoDetailAsync")]
  223 + public async Task<dynamic> GetPackageInfoDetailAsync(string id)
  224 + {
  225 + var data = await _db.Queryable<LqPackageInfoEntity>().Where(w => w.Id == id).FirstAsync();
  226 + var output = data.Adapt<LqPackageInfoListOutput>();
  227 + return output;
  228 + }
  229 + #endregion
  230 +
  231 + #region 更新营销活动
  232 + /// <summary>
  233 + /// 更新营销活动
  234 + /// </summary>
  235 + /// <param name="input">营销活动更新输入</param>
  236 + /// <returns>营销活动ID</returns>
  237 + /// <remarks>
  238 + /// 更新营销活动信息,包括活动基本信息和品项明细
  239 + ///
  240 + /// 示例请求:
  241 + /// ```json
  242 + /// {
  243 + /// "id": "123456789",
  244 + /// "activityName": "春季护肤优惠活动",
  245 + /// "activityDesc": "春季护肤特惠活动",
  246 + /// "startTime": "2025-03-01T00:00:00",
  247 + /// "endTime": "2025-03-31T23:59:59",
  248 + /// "minItemQuantity": 2,
  249 + /// "activityRules": "活动规则说明",
  250 + /// "activityImages": "[\"image1.jpg\"]",
  251 + /// "sortOrder": 1,
  252 + /// "activityItems": [
  253 + /// {
  254 + /// "itemId": "ITEM001",
  255 + /// "itemName": "面部清洁",
  256 + /// "itemCategory": "基础护理",
  257 + /// "itemRemark": "推荐品项"
  258 + /// }
  259 + /// ]
  260 + /// }
  261 + /// ```
  262 + ///
  263 + /// 参数说明:
  264 + /// - id: 营销活动ID(必填)
  265 + /// - activityName: 营销活动名称
  266 + /// - activityDesc: 营销活动描述
  267 + /// - startTime: 活动开始时间
  268 + /// - endTime: 活动结束时间
  269 + /// - minItemQuantity: 至少购买品项数量
  270 + /// - activityRules: 活动规则说明
  271 + /// - activityImages: 活动图片(JSON格式)
  272 + /// - sortOrder: 排序
  273 + /// - activityItems: 营销活动品项明细列表
  274 + /// </remarks>
  275 + /// <response code="200">成功更新营销活动,返回营销活动ID</response>
  276 + /// <response code="400">请求参数错误</response>
  277 + /// <response code="404">营销活动不存在</response>
  278 + /// <response code="500">服务器内部错误</response>
  279 + [HttpPut("UpdatePackageInfoAsync")]
  280 + public async Task<string> UpdatePackageInfoAsync(LqPackageInfoUpInput input)
  281 + {
  282 + try
  283 + {
  284 + // 验证活动时间
  285 + if (input.StartTime >= input.EndTime)
  286 + {
  287 + throw NCCException.Oh("活动开始时间必须小于结束时间");
  288 + }
  289 +
  290 + // 验证品项明细
  291 + if (input.ActivityItems == null || !input.ActivityItems.Any())
  292 + {
  293 + throw NCCException.Oh("营销活动必须包含至少一个品项");
  294 + }
  295 +
  296 + // 验证至少购买品项数量
  297 + if (input.ActivityItems.Count < input.MinItemQuantity)
  298 + {
  299 + throw NCCException.Oh($"品项数量不能少于至少购买品项数量({input.MinItemQuantity})");
  300 + }
  301 +
  302 + // 检查营销活动是否存在
  303 + var existingActivity = await _db.Queryable<LqPackageInfoEntity>()
  304 + .Where(w => w.Id == input.Id)
  305 + .FirstAsync();
  306 +
  307 + if (existingActivity == null)
  308 + {
  309 + throw NCCException.Oh("营销活动不存在");
  310 + }
  311 +
  312 + // 开始事务
  313 + _db.BeginTran();
  314 +
  315 + try
  316 + {
  317 + // 更新营销活动基本信息
  318 + var updateResult = await _db.Updateable<LqPackageInfoEntity>()
  319 + .SetColumns(it => new LqPackageInfoEntity
  320 + {
  321 + ActivityName = input.ActivityName,
  322 + ActivityDesc = input.ActivityDesc,
  323 + StartTime = input.StartTime,
  324 + EndTime = input.EndTime,
  325 + MinItemQuantity = input.MinItemQuantity,
  326 + ActivityRules = input.ActivityRules,
  327 + ActivityImages = input.ActivityImages,
  328 + SortOrder = input.SortOrder,
  329 + UpdateTime = DateTime.Now,
  330 + UpdateUser = _userManager.UserId
  331 + })
  332 + .Where(w => w.Id == input.Id)
  333 + .ExecuteCommandAsync();
  334 +
  335 + if (updateResult <= 0)
  336 + {
  337 + throw NCCException.Oh("更新营销活动失败");
  338 + }
  339 +
  340 + // 删除原有的品项明细
  341 + await _db.Deleteable<LqPackageItemDetailEntity>()
  342 + .Where(w => w.ActivityId == input.Id)
  343 + .ExecuteCommandAsync();
  344 +
  345 + // 创建新的品项明细
  346 + var packageItemDetails = input.ActivityItems.Select(item =>
  347 + {
  348 + var packageItemDetail = item.Adapt<LqPackageItemDetailEntity>();
  349 + packageItemDetail.Id = YitIdHelper.NextId().ToString();
  350 + packageItemDetail.ActivityId = input.Id;
  351 + packageItemDetail.CreateTime = DateTime.Now;
  352 + packageItemDetail.UpdateTime = DateTime.Now;
  353 + packageItemDetail.IsEffective = 1;
  354 + return packageItemDetail;
  355 + }).ToList();
  356 +
  357 + // 批量保存新的品项明细
  358 + if (packageItemDetails.Any())
  359 + {
  360 + await _db.Insertable(packageItemDetails).ExecuteCommandAsync();
  361 + }
  362 +
  363 + // 提交事务
  364 + _db.CommitTran();
  365 +
  366 + return input.Id;
  367 + }
  368 + catch
  369 + {
  370 + // 回滚事务
  371 + _db.RollbackTran();
  372 + throw;
  373 + }
  374 + }
  375 + catch (Exception ex)
  376 + {
  377 + throw NCCException.Oh($"更新营销活动失败: {ex.Message}");
  378 + }
  379 + }
  380 + #endregion
  381 +
  382 + #region 标记删除营销活动
  383 + /// <summary>
  384 + /// 标记删除营销活动
  385 + /// </summary>
  386 + /// <param name="id">营销活动ID</param>
  387 + /// <returns>营销活动ID</returns>
  388 + [HttpDelete("MarkDeletePackageInfoAsync")]
  389 + public async Task<string> MarkDeletePackageInfoAsync(string id)
  390 + {
  391 + var entity = await _db.Queryable<LqPackageInfoEntity>().Where(w => w.Id == id).FirstAsync();
  392 + if (entity == null)
  393 + {
  394 + throw NCCException.Oh("营销活动不存在");
  395 + }
  396 + entity.IsEffective = StatusEnum.无效.GetHashCode();
  397 + await _db.Updateable(entity).ExecuteCommandAsync();
  398 + await _db.Updateable<LqPackageItemDetailEntity>().SetColumns(it => new LqPackageItemDetailEntity { IsEffective = StatusEnum.无效.GetHashCode() }).Where(w => w.ActivityId == id).ExecuteCommandAsync();
  399 + return id;
  400 + }
  401 + #endregion
  402 +
  403 + #region 获取当前时间有效的活动
  404 + /// <summary>
  405 + /// 获取当前时间有效的活动
  406 + /// </summary>
  407 + /// <returns>当前时间有效的活动</returns>
  408 + [HttpGet("GetCurrentTimeEffectiveActivityAsync")]
  409 + public async Task<dynamic> GetCurrentTimeEffectiveActivityAsync()
  410 + {
  411 + var data = await _db.Queryable<LqPackageInfoEntity>().Where(w => w.StartTime <= DateTime.Now && w.EndTime >= DateTime.Now && w.IsEffective == StatusEnum.有效.GetHashCode()).ToListAsync();
  412 + var output = data.Adapt<List<LqPackageInfoListOutput>>();
  413 + return output;
  414 + }
  415 + #endregion
  416 + }
  417 +}
netcore/src/Modularity/Extend/NCC.Extend/LqTkjlbService.cs
@@ -19,6 +19,7 @@ using NCC.Extend.Entitys.Dto.LqTkjlb; @@ -19,6 +19,7 @@ using NCC.Extend.Entitys.Dto.LqTkjlb;
19 using NCC.Extend.Entitys.Enum; 19 using NCC.Extend.Entitys.Enum;
20 using NCC.Extend.Entitys.lq_event; 20 using NCC.Extend.Entitys.lq_event;
21 using NCC.Extend.Entitys.lq_eventuser; 21 using NCC.Extend.Entitys.lq_eventuser;
  22 +using NCC.Extend.Entitys.lq_kd_kdjlb;
22 using NCC.Extend.Entitys.lq_khxx; 23 using NCC.Extend.Entitys.lq_khxx;
23 using NCC.Extend.Entitys.lq_mdxx; 24 using NCC.Extend.Entitys.lq_mdxx;
24 using NCC.Extend.Entitys.lq_tkjlb; 25 using NCC.Extend.Entitys.lq_tkjlb;
@@ -80,7 +81,7 @@ namespace NCC.Extend.LqTkjlb @@ -80,7 +81,7 @@ namespace NCC.Extend.LqTkjlb
80 teamName = p.TeamName, 81 teamName = p.TeamName,
81 eventId = p.EventId, 82 eventId = p.EventId,
82 eventName = SqlFunc.Subqueryable<LqEventEntity>().Where(e => e.Id == p.EventId).Select(e => e.EventName), 83 eventName = SqlFunc.Subqueryable<LqEventEntity>().Where(e => e.Id == p.EventId).Select(e => e.EventName),
83 - storeName = SqlFunc.Subqueryable<LqMdxxEntity>().Where(u => u.Id == p.StoreId).Select(u => u.Dm), 84 + storeName = SqlFunc.Subqueryable<LqMdxxEntity>().Where(u => u.Id == p.StoreId).Select(u => u.Dm)
84 }) 85 })
85 .FirstAsync(); 86 .FirstAsync();
86 87
@@ -185,8 +186,9 @@ namespace NCC.Extend.LqTkjlb @@ -185,8 +186,9 @@ namespace NCC.Extend.LqTkjlb
185 MemberInfo.Khmc = entity.CustomerName; 186 MemberInfo.Khmc = entity.CustomerName;
186 MemberInfo.Sjh = input.customerPhone; // 设置手机号 187 MemberInfo.Sjh = input.customerPhone; // 设置手机号
187 MemberInfo.Khlx = MemberTypeEnum.线索.GetHashCode().ToString(); 188 MemberInfo.Khlx = MemberTypeEnum.线索.GetHashCode().ToString();
188 - MemberInfo.Dah = "GK" + DateTime.Now.ToString("yyyyMMddHHmmss"); 189 + MemberInfo.Dah = "GK" + DateTime.Now.ToString("yyyyMMddHHmmssfff");
189 MemberInfo.Jdqd = "19.9卡"; 190 MemberInfo.Jdqd = "19.9卡";
  191 +
190 //找到input.expansionUserId的用户信息 192 //找到input.expansionUserId的用户信息
191 var userInfo = await _db.Queryable<UserEntity>().Where(u => u.Id == input.expansionUserId).FirstAsync(); 193 var userInfo = await _db.Queryable<UserEntity>().Where(u => u.Id == input.expansionUserId).FirstAsync();
192 //判断 岗位是否为健康师,如果是健康师,则设置拓客人员是健康师 194 //判断 岗位是否为健康师,如果是健康师,则设置拓客人员是健康师
@@ -523,5 +525,7 @@ namespace NCC.Extend.LqTkjlb @@ -523,5 +525,7 @@ namespace NCC.Extend.LqTkjlb
523 return result.OrderByDescending(t => t.totalCount).ToList(); 525 return result.OrderByDescending(t => t.totalCount).ToList();
524 } 526 }
525 #endregion 527 #endregion
  528 +
  529 +
526 } 530 }
527 } 531 }
netcore/src/Modularity/Extend/NCC.Extend/LqXhHyhkService.cs
@@ -20,6 +20,7 @@ using NCC.Extend.Entitys.Dto.LqXhHyhk; @@ -20,6 +20,7 @@ using NCC.Extend.Entitys.Dto.LqXhHyhk;
20 using NCC.Extend.Entitys.Dto.LqXhJksyj; 20 using NCC.Extend.Entitys.Dto.LqXhJksyj;
21 using NCC.Extend.Entitys.Dto.LqXhKjbsyj; 21 using NCC.Extend.Entitys.Dto.LqXhKjbsyj;
22 using NCC.Extend.Entitys.Dto.LqXhPxmx; 22 using NCC.Extend.Entitys.Dto.LqXhPxmx;
  23 +using NCC.Extend.Entitys.Enum;
23 using NCC.Extend.Entitys.lq_kd_kdjlb; 24 using NCC.Extend.Entitys.lq_kd_kdjlb;
24 using NCC.Extend.Entitys.lq_kd_pxmx; 25 using NCC.Extend.Entitys.lq_kd_pxmx;
25 using NCC.Extend.Entitys.lq_khxx; 26 using NCC.Extend.Entitys.lq_khxx;
@@ -175,6 +176,7 @@ namespace NCC.Extend.LqXhHyhk @@ -175,6 +176,7 @@ namespace NCC.Extend.LqXhHyhk
175 DateTime? startHksj = queryHksj != null ? Ext.GetDateTime(queryHksj.First()) : null; 176 DateTime? startHksj = queryHksj != null ? Ext.GetDateTime(queryHksj.First()) : null;
176 DateTime? endHksj = queryHksj != null ? Ext.GetDateTime(queryHksj.Last()) : null; 177 DateTime? endHksj = queryHksj != null ? Ext.GetDateTime(queryHksj.Last()) : null;
177 var data = await _db.Queryable<LqXhHyhkEntity>() 178 var data = await _db.Queryable<LqXhHyhkEntity>()
  179 + .WhereIF(!string.IsNullOrEmpty(input.keyword), p => p.Hymc.Contains(input.keyword) || p.Hyzh.Contains(input.keyword) || p.MemberPhone.Contains(input.keyword))
178 .WhereIF(!string.IsNullOrEmpty(input.id), p => p.Id.Contains(input.id)) 180 .WhereIF(!string.IsNullOrEmpty(input.id), p => p.Id.Contains(input.id))
179 .WhereIF(!string.IsNullOrEmpty(input.md), p => p.Md.Equals(input.md)) 181 .WhereIF(!string.IsNullOrEmpty(input.md), p => p.Md.Equals(input.md))
180 .WhereIF(!string.IsNullOrEmpty(input.mdbh), p => p.Mdbh.Contains(input.mdbh)) 182 .WhereIF(!string.IsNullOrEmpty(input.mdbh), p => p.Mdbh.Contains(input.mdbh))
@@ -183,9 +185,6 @@ namespace NCC.Extend.LqXhHyhk @@ -183,9 +185,6 @@ namespace NCC.Extend.LqXhHyhk
183 .WhereIF(!string.IsNullOrEmpty(input.hyzh), p => p.Hyzh.Contains(input.hyzh)) 185 .WhereIF(!string.IsNullOrEmpty(input.hyzh), p => p.Hyzh.Contains(input.hyzh))
184 .WhereIF(!string.IsNullOrEmpty(input.hymc), p => p.Hymc.Contains(input.hymc)) 186 .WhereIF(!string.IsNullOrEmpty(input.hymc), p => p.Hymc.Contains(input.hymc))
185 .WhereIF(!string.IsNullOrEmpty(input.gklx), p => p.Gklx.Equals(input.gklx)) 187 .WhereIF(!string.IsNullOrEmpty(input.gklx), p => p.Gklx.Equals(input.gklx))
186 - // 注意:xfje 和 sgfy 现在是 decimal 类型,不支持字符串模糊查询  
187 - // .WhereIF(!string.IsNullOrEmpty(input.xfje), p => SqlFunc.ToString(p.Xfje).Contains(input.xfje))  
188 - // .WhereIF(!string.IsNullOrEmpty(input.sgfy), p => SqlFunc.ToString(p.Sgfy).Contains(input.sgfy))  
189 .WhereIF(!string.IsNullOrEmpty(input.sfykjb), p => p.Sfykjb.Equals(input.sfykjb)) 188 .WhereIF(!string.IsNullOrEmpty(input.sfykjb), p => p.Sfykjb.Equals(input.sfykjb))
190 .WhereIF(queryHksj != null, p => p.Hksj >= new DateTime(startHksj.ToDate().Year, startHksj.ToDate().Month, startHksj.ToDate().Day, 0, 0, 0)) 189 .WhereIF(queryHksj != null, p => p.Hksj >= new DateTime(startHksj.ToDate().Year, startHksj.ToDate().Month, startHksj.ToDate().Day, 0, 0, 0))
191 .WhereIF(queryHksj != null, p => p.Hksj <= new DateTime(endHksj.ToDate().Year, endHksj.ToDate().Month, endHksj.ToDate().Day, 23, 59, 59)) 190 .WhereIF(queryHksj != null, p => p.Hksj <= new DateTime(endHksj.ToDate().Year, endHksj.ToDate().Month, endHksj.ToDate().Day, 23, 59, 59))
@@ -205,6 +204,7 @@ namespace NCC.Extend.LqXhHyhk @@ -205,6 +204,7 @@ namespace NCC.Extend.LqXhHyhk
205 sfykjb = it.Sfykjb, 204 sfykjb = it.Sfykjb,
206 hksj = it.Hksj, 205 hksj = it.Hksj,
207 czry = it.Czry, 206 czry = it.Czry,
  207 + memberPhone = it.MemberPhone,
208 }) 208 })
209 .MergeTable() 209 .MergeTable()
210 .OrderBy(sidx + " " + input.sort) 210 .OrderBy(sidx + " " + input.sort)
@@ -262,6 +262,7 @@ namespace NCC.Extend.LqXhHyhk @@ -262,6 +262,7 @@ namespace NCC.Extend.LqXhHyhk
262 var entity = input.Adapt<LqXhHyhkEntity>(); 262 var entity = input.Adapt<LqXhHyhkEntity>();
263 entity.Id = YitIdHelper.NextId().ToString(); 263 entity.Id = YitIdHelper.NextId().ToString();
264 entity.Czry = _userManager.UserId; 264 entity.Czry = _userManager.UserId;
  265 + entity.MemberPhone = _db.Queryable<LqKhxxEntity>().Where(w => w.Id == entity.Hy).First().Sjh;
265 entity.CreateTime = DateTime.Now; 266 entity.CreateTime = DateTime.Now;
266 try 267 try
267 { 268 {
@@ -521,6 +522,12 @@ namespace NCC.Extend.LqXhHyhk @@ -521,6 +522,12 @@ namespace NCC.Extend.LqXhHyhk
521 { 522 {
522 //开启事务 523 //开启事务
523 _db.BeginTran(); 524 _db.BeginTran();
  525 + //查询记录
  526 + var LqXhHyhkInfo = await _db.Queryable<LqXhHyhkEntity>().Where(p => p.Id == id && p.IsEffective == StatusEnum.有效.GetHashCode()).FirstAsync();
  527 + if (LqXhHyhkInfo == null)
  528 + {
  529 + throw NCCException.Oh(ErrorCode.COM1005, "耗卡记录不存在或已作废");
  530 + }
524 entity.UpdateTime = DateTime.Now; 531 entity.UpdateTime = DateTime.Now;
525 //更新会员耗卡记录 532 //更新会员耗卡记录
526 await _db.Updateable(entity).IgnoreColumns(ignoreAllNullColumns: true).ExecuteCommandAsync(); 533 await _db.Updateable(entity).IgnoreColumns(ignoreAllNullColumns: true).ExecuteCommandAsync();
@@ -528,57 +535,31 @@ namespace NCC.Extend.LqXhHyhk @@ -528,57 +535,31 @@ namespace NCC.Extend.LqXhHyhk
528 //清空原有数据 535 //清空原有数据
529 await _db.Deleteable<LqXhJksyjEntity>().Where(u => u.Glkdbh == id).ExecuteCommandAsync(); 536 await _db.Deleteable<LqXhJksyjEntity>().Where(u => u.Glkdbh == id).ExecuteCommandAsync();
530 await _db.Deleteable<LqXhKjbsyjEntity>().Where(u => u.Glkdbh == id).ExecuteCommandAsync(); 537 await _db.Deleteable<LqXhKjbsyjEntity>().Where(u => u.Glkdbh == id).ExecuteCommandAsync();
531 -  
532 - // 注意:品项明细表不做删除操作,只更新或新增  
533 - // await _db.Deleteable<LqXhPxmxEntity>().Where(u => u.ConsumeInfoId == id).ExecuteCommandAsync();  
534 - 538 + await _db.Deleteable<LqXhPxmxEntity>().Where(u => u.ConsumeInfoId == id).ExecuteCommandAsync();
535 // 收集所有需要插入的实体,然后批量插入 539 // 收集所有需要插入的实体,然后批量插入
536 var allPxmxEntities = new List<LqXhPxmxEntity>(); 540 var allPxmxEntities = new List<LqXhPxmxEntity>();
537 var allJksyjEntities = new List<LqXhJksyjEntity>(); 541 var allJksyjEntities = new List<LqXhJksyjEntity>();
538 var allKjbsyjEntities = new List<LqXhKjbsyjEntity>(); 542 var allKjbsyjEntities = new List<LqXhKjbsyjEntity>();
539 -  
540 // 处理品项明细列表 543 // 处理品项明细列表
541 if (input.lqXhPxmxList != null && input.lqXhPxmxList.Any()) 544 if (input.lqXhPxmxList != null && input.lqXhPxmxList.Any())
542 { 545 {
543 foreach (var item in input.lqXhPxmxList) 546 foreach (var item in input.lqXhPxmxList)
544 { 547 {
545 - // 检查品项明细是否已存在  
546 - var existingPxmx = await _db.Queryable<LqXhPxmxEntity>()  
547 - .Where(p => p.Id == item.id)  
548 - .FirstAsync();  
549 -  
550 - LqXhPxmxEntity lqXhPxmxEntity;  
551 - if (existingPxmx != null)  
552 - {  
553 - // 更新现有记录  
554 - lqXhPxmxEntity = existingPxmx;  
555 - // 注意:LqXhPxmxEntity 没有 UpdateTime 字段  
556 - lqXhPxmxEntity.MemberId = entity.Hy;  
557 - lqXhPxmxEntity.ProjectNumber = item.projectNumber ?? 1;  
558 - lqXhPxmxEntity.TotalPrice = (decimal)(item.pxjg * (item.projectNumber ?? 1));  
559 - lqXhPxmxEntity.Px = item.px;  
560 - lqXhPxmxEntity.Pxmc = item.pxmc;  
561 - lqXhPxmxEntity.Pxjg = item.pxjg;  
562 - lqXhPxmxEntity.SourceType = item.sourceType;  
563 - }  
564 - else 548 + // 创建品项明细实体
  549 + var lqXhPxmxEntity = new LqXhPxmxEntity
565 { 550 {
566 - // 创建新记录  
567 - lqXhPxmxEntity = new LqXhPxmxEntity  
568 - {  
569 - Id = YitIdHelper.NextId().ToString(),  
570 - ConsumeInfoId = entity.Id,  
571 - BillingItemId = item.billingItemId,  
572 - CreateTIme = DateTime.Now,  
573 - MemberId = entity.Hy,  
574 - ProjectNumber = item.projectNumber ?? 1,  
575 - TotalPrice = (decimal)(item.pxjg * (item.projectNumber ?? 1)),  
576 - Px = item.px,  
577 - Pxmc = item.pxmc,  
578 - Pxjg = item.pxjg,  
579 - SourceType = item.sourceType,  
580 - };  
581 - } 551 + Id = YitIdHelper.NextId().ToString(),
  552 + ConsumeInfoId = input.id,
  553 + BillingItemId = item.billingItemId,
  554 + CreateTIme = DateTime.Now,
  555 + MemberId = entity.Hy,
  556 + ProjectNumber = item.projectNumber ?? 1,
  557 + TotalPrice = (decimal)(item.pxjg * (item.projectNumber ?? 1)),
  558 + Px = item.px,
  559 + Pxmc = item.pxmc,
  560 + Pxjg = item.pxjg,
  561 + SourceType = item.sourceType,
  562 + };
582 allPxmxEntities.Add(lqXhPxmxEntity); 563 allPxmxEntities.Add(lqXhPxmxEntity);
583 564
584 // 收集该品项关联的健康师业绩 565 // 收集该品项关联的健康师业绩
@@ -590,7 +571,7 @@ namespace NCC.Extend.LqXhHyhk @@ -590,7 +571,7 @@ namespace NCC.Extend.LqXhHyhk
590 new LqXhJksyjEntity 571 new LqXhJksyjEntity
591 { 572 {
592 Id = YitIdHelper.NextId().ToString(), 573 Id = YitIdHelper.NextId().ToString(),
593 - Glkdbh = entity.Id, 574 + Glkdbh = input.id,
594 Jks = ijks_tem.jks, 575 Jks = ijks_tem.jks,
595 Jksxm = ijks_tem.jksxm, 576 Jksxm = ijks_tem.jksxm,
596 Jkszh = ijks_tem.jkszh, 577 Jkszh = ijks_tem.jkszh,
@@ -614,7 +595,7 @@ namespace NCC.Extend.LqXhHyhk @@ -614,7 +595,7 @@ namespace NCC.Extend.LqXhHyhk
614 new LqXhKjbsyjEntity 595 new LqXhKjbsyjEntity
615 { 596 {
616 Id = YitIdHelper.NextId().ToString(), 597 Id = YitIdHelper.NextId().ToString(),
617 - Glkdbh = entity.Id, 598 + Glkdbh = input.id,
618 Kjbls = ikjbs_tem.kjbls, 599 Kjbls = ikjbs_tem.kjbls,
619 Kjblsxm = ikjbs_tem.kjblsxm, 600 Kjblsxm = ikjbs_tem.kjblsxm,
620 Kjblszh = ikjbs_tem.kjblszh, 601 Kjblszh = ikjbs_tem.kjblszh,
@@ -629,22 +610,10 @@ namespace NCC.Extend.LqXhHyhk @@ -629,22 +610,10 @@ namespace NCC.Extend.LqXhHyhk
629 } 610 }
630 } 611 }
631 } 612 }
632 -  
633 // 批量插入品项明细 613 // 批量插入品项明细
634 if (allPxmxEntities.Any()) 614 if (allPxmxEntities.Any())
635 { 615 {
636 - // 分别处理插入和更新  
637 - var existingEntities = allPxmxEntities.Where(e => !string.IsNullOrEmpty(e.Id)).ToList();  
638 - var newEntities = allPxmxEntities.Where(e => string.IsNullOrEmpty(e.Id)).ToList();  
639 -  
640 - if (existingEntities.Any())  
641 - {  
642 - await _db.Updateable(existingEntities).ExecuteCommandAsync();  
643 - }  
644 - if (newEntities.Any())  
645 - {  
646 - await _db.Insertable(newEntities).ExecuteCommandAsync();  
647 - } 616 + await _db.Insertable(allPxmxEntities).ExecuteCommandAsync();
648 } 617 }
649 // 批量插入健康师业绩 618 // 批量插入健康师业绩
650 if (allJksyjEntities.Any()) 619 if (allJksyjEntities.Any())
@@ -656,8 +625,7 @@ namespace NCC.Extend.LqXhHyhk @@ -656,8 +625,7 @@ namespace NCC.Extend.LqXhHyhk
656 { 625 {
657 await _db.Insertable(allKjbsyjEntities).ExecuteCommandAsync(); 626 await _db.Insertable(allKjbsyjEntities).ExecuteCommandAsync();
658 } 627 }
659 -  
660 - //关闭事务 628 + // 提交事务
661 _db.CommitTran(); 629 _db.CommitTran();
662 } 630 }
663 catch (Exception) 631 catch (Exception)
@@ -707,5 +675,198 @@ namespace NCC.Extend.LqXhHyhk @@ -707,5 +675,198 @@ namespace NCC.Extend.LqXhHyhk
707 } 675 }
708 } 676 }
709 #endregion 677 #endregion
  678 +
  679 + #region 查询健康师消耗业绩列表
  680 + /// <summary>
  681 + /// 查询健康师业绩列表
  682 + /// </summary>
  683 + /// <param name="input">查询参数</param>
  684 + /// <returns>分页的健康师业绩列表</returns>
  685 + /// <remarks>
  686 + /// 查询健康师业绩记录,支持分页和时间筛选
  687 + ///
  688 + /// 示例请求:
  689 + /// ```json
  690 + /// {
  691 + /// "glkdbh": "123456789",
  692 + /// "jksId": "健康师ID",
  693 + /// "startTime": "2025-01-01T00:00:00",
  694 + /// "endTime": "2025-01-31T23:59:59",
  695 + /// "currentPage": 1,
  696 + /// "pageSize": 10,
  697 + /// "sidx": "yjsj",
  698 + /// "sort": "desc"
  699 + /// }
  700 + /// ```
  701 + ///
  702 + /// 参数说明:
  703 + /// - glkdbh: 开单记录ID(可选)
  704 + /// - jksId: 健康师ID(可选)
  705 + /// - startTime: 查询开始时间(可选)
  706 + /// - endTime: 查询结束时间(可选)
  707 + /// - currentPage: 当前页码
  708 + /// - pageSize: 每页大小
  709 + /// </remarks>
  710 + /// <response code="200">成功获取健康师业绩列表</response>
  711 + /// <response code="400">请求参数错误</response>
  712 + /// <response code="500">服务器内部错误</response>
  713 + [HttpGet("GetJksyjList")]
  714 + public async Task<dynamic> GetJksyjList([FromQuery] LqXhJksyjQueryInput input)
  715 + {
  716 + try
  717 + {
  718 + var sidx = string.IsNullOrEmpty(input.sidx) ? "yjsj" : input.sidx;
  719 + var sort = string.IsNullOrEmpty(input.sort) ? "desc" : input.sort;
  720 + var data = await _db.Queryable<LqXhJksyjEntity>()
  721 + .WhereIF(!string.IsNullOrEmpty(input.Glkdbh), w => w.Glkdbh == input.Glkdbh)
  722 + .WhereIF(!string.IsNullOrEmpty(input.JksId), w => w.Jks == input.JksId)
  723 + .WhereIF(input.StartTime.HasValue, w => w.Yjsj >= input.StartTime.Value)
  724 + .WhereIF(input.EndTime.HasValue, w => w.Yjsj <= input.EndTime.Value)
  725 + .Where(w => w.IsEffective == StatusEnum.有效.GetHashCode())
  726 + .Select(it => new LqXhJksyjInfoOutput
  727 + {
  728 + id = it.Id,
  729 + glkdbh = it.Glkdbh,
  730 + jks = it.Jks,
  731 + jksxm = it.Jksxm,
  732 + jkszh = it.Jkszh,
  733 + jksyj = it.Jksyj.ToString(),
  734 + yjsj = it.Yjsj,
  735 + jsjId = it.JsjId,
  736 + kdpxid = it.Kdpxid,
  737 + laborCost = it.LaborCost,
  738 + kdpxNumber = it.KdpxNumber,
  739 + storeName = SqlFunc.Subqueryable<LqXhHyhkEntity>().Where(w => w.Id == it.Glkdbh).Select(w => w.Mdmc),
  740 + memberId = SqlFunc.Subqueryable<LqXhHyhkEntity>().Where(w => w.Id == it.Glkdbh).Select(w => w.Hy),
  741 + memberName = SqlFunc.Subqueryable<LqXhHyhkEntity>().Where(w => w.Id == it.Glkdbh).Select(w => w.Hymc),
  742 + })
  743 + .MergeTable()
  744 + .OrderBy(sidx + " " + sort)
  745 + .ToPagedListAsync(input.currentPage, input.pageSize);
  746 +
  747 + return PageResult<LqXhJksyjInfoOutput>.SqlSugarPageResult(data);
  748 + }
  749 + catch (Exception ex)
  750 + {
  751 + throw NCCException.Oh($"获取健康师业绩列表失败: {ex.Message}");
  752 + }
  753 + }
  754 + #endregion
  755 +
  756 + #region 耗卡记录作废
  757 + /// <summary>
  758 + /// 耗卡记录作废
  759 + /// </summary>
  760 + /// <param name="id">耗卡记录ID</param>
  761 + /// <returns></returns>
  762 + [HttpPut("CancelCardUsageRecord/{id}")]
  763 + public async Task<dynamic> CancelCardUsageRecord(string id)
  764 + {
  765 + try
  766 + {
  767 + //开启事务
  768 + _db.BeginTran();
  769 + //查询消耗记录表信息
  770 + var LqhyhkInfo = await _db.Queryable<LqXhHyhkEntity>().Where(p => p.Id == id && p.IsEffective == StatusEnum.有效.GetHashCode()).FirstAsync();
  771 + if (LqhyhkInfo == null)
  772 + {
  773 + throw NCCException.Oh(ErrorCode.COM1005, "耗卡记录不存在或已作废");
  774 + }
  775 + //更新耗卡记录状态
  776 + LqhyhkInfo.IsEffective = StatusEnum.无效.GetHashCode();
  777 + await _db.Updateable(LqhyhkInfo).ExecuteCommandAsync();
  778 + //更新品项明细表状态
  779 + await _db.Updateable<LqXhPxmxEntity>().SetColumns(it => new LqXhPxmxEntity { IsEffective = StatusEnum.无效.GetHashCode() }).Where(w => w.ConsumeInfoId == id).ExecuteCommandAsync();
  780 + //更新健康师业绩表状态
  781 + await _db.Updateable<LqXhJksyjEntity>().SetColumns(it => new LqXhJksyjEntity { IsEffective = StatusEnum.无效.GetHashCode() }).Where(w => w.Glkdbh == id).ExecuteCommandAsync();
  782 + //更新科技部老师业绩表状态
  783 + await _db.Updateable<LqXhKjbsyjEntity>().SetColumns(it => new LqXhKjbsyjEntity { IsEffective = StatusEnum.无效.GetHashCode() }).Where(w => w.Glkdbh == id).ExecuteCommandAsync();
  784 + //关闭事务
  785 + _db.CommitTran();
  786 + return LqhyhkInfo;
  787 + }
  788 + catch (Exception)
  789 + {
  790 + //回滚事务
  791 + _db.RollbackTran();
  792 + throw NCCException.Oh(ErrorCode.COM1001);
  793 + }
  794 + }
  795 + #endregion
  796 +
  797 + #region 获取某个会员的耗卡记录
  798 + /// <summary>
  799 + /// 获取某个会员的耗卡记录(分页)
  800 + /// </summary>
  801 + /// <param name="input">查询参数</param>
  802 + /// <returns></returns>
  803 + [HttpGet("GetMemberCardUsageRecord")]
  804 + public async Task<dynamic> GetMemberCardUsageRecord([FromQuery] LqXhHyhkMemberCardUsageQueryInput input)
  805 + {
  806 + try
  807 + {
  808 + // 参数验证
  809 + if (string.IsNullOrEmpty(input.MemberId))
  810 + {
  811 + throw NCCException.Oh("会员ID不能为空");
  812 + }
  813 + // 分页查询会员耗卡记录
  814 + var data = await _db.Queryable<LqXhHyhkEntity>()
  815 + .Where(p => p.Hy == input.MemberId && p.IsEffective == StatusEnum.有效.GetHashCode())
  816 + .WhereIF(!string.IsNullOrEmpty(input.StoreId), p => p.Md == input.StoreId)
  817 + .WhereIF(input.StartTime.HasValue, p => p.Hksj >= input.StartTime.Value)
  818 + .WhereIF(input.EndTime.HasValue, p => p.Hksj <= input.EndTime.Value)
  819 + .Select(it => new LqXhHyhkMemberCardUsageOutput
  820 + {
  821 + Id = it.Id,
  822 + MemberId = it.Hy,
  823 + MemberName = it.Hymc,
  824 + StoreId = it.Md,
  825 + StoreName = it.Mdmc,
  826 + UsageDate = it.Hksj,
  827 + TotalAmount = it.Xfje,
  828 + Remarks = it.SignatureFile,
  829 + CreateTime = it.CreateTime
  830 + })
  831 + .MergeTable()
  832 + .OrderBy((input.sidx == null ? "UsageDate" : input.sidx) + " " + (input.sort ?? "desc"))
  833 + .ToPagedListAsync(input.currentPage, input.pageSize);
  834 +
  835 + // 获取当前页耗卡记录ID,直接查询对应的品项明细
  836 + if (data.list.Any())
  837 + {
  838 + var recordIds = data.list.Select(r => r.Id).ToList();
  839 + // 批量查询当前页记录的所有品项明细
  840 + var itemDetails = await _db.Queryable<LqXhPxmxEntity>().Where(w => recordIds.Contains(w.ConsumeInfoId) && w.IsEffective == StatusEnum.有效.GetHashCode()).ToListAsync();
  841 + // 按耗卡记录ID分组明细
  842 + var detailsGrouped = itemDetails.GroupBy(d => d.ConsumeInfoId).ToDictionary(g => g.Key, g => g.ToList());
  843 + // 为每个记录添加品项明细
  844 + foreach (var record in data.list)
  845 + {
  846 + if (detailsGrouped.ContainsKey(record.Id))
  847 + {
  848 + record.ItemDetails = detailsGrouped[record.Id].Select(detail => new LqXhHyhkMemberCardUsageItemDetail
  849 + {
  850 + Id = detail.Id,
  851 + ItemId = detail.Px,
  852 + ItemName = detail.Pxmc,
  853 + UnitPrice = detail.Pxjg,
  854 + ProjectNumber = detail.ProjectNumber,
  855 + TotalPrice = detail.TotalPrice,
  856 + SourceType = detail.SourceType,
  857 + CreateTime = detail.CreateTIme
  858 + }).ToList();
  859 + }
  860 + }
  861 + }
  862 + return PageResult<LqXhHyhkMemberCardUsageOutput>.SqlSugarPageResult(data);
  863 + }
  864 + catch (Exception ex)
  865 + {
  866 + throw NCCException.Oh($"获取会员耗卡记录失败: {ex.Message}");
  867 + }
  868 + }
  869 + #endregion
  870 +
710 } 871 }
711 } 872 }
netcore/src/Modularity/Extend/NCC.Extend/LqXhmxbService.cs deleted
1 -using System;  
2 -using System.Collections.Generic;  
3 -using System.Linq;  
4 -using System.Threading.Tasks;  
5 -using Mapster;  
6 -using Microsoft.AspNetCore.Mvc;  
7 -using NCC.ClayObject;  
8 -using NCC.Common.Configuration;  
9 -using NCC.Common.Core.Manager;  
10 -using NCC.Common.Enum;  
11 -using NCC.Common.Extension;  
12 -using NCC.Common.Filter;  
13 -using NCC.Common.Helper;  
14 -using NCC.Common.Model.NPOI;  
15 -using NCC.DataEncryption;  
16 -using NCC.Dependency;  
17 -using NCC.DynamicApiController;  
18 -using NCC.Extend.Entitys.Dto.LqXhmxb;  
19 -using NCC.Extend.Entitys.lq_xhmxb;  
20 -using NCC.Extend.Interfaces.LqXhmxb;  
21 -using NCC.FriendlyException;  
22 -using NCC.JsonSerialization;  
23 -using SqlSugar;  
24 -using Yitter.IdGenerator;  
25 -  
26 -namespace NCC.Extend.LqXhmxb  
27 -{  
28 - /// <summary>  
29 - /// 消耗明细表服务  
30 - /// </summary>  
31 - [ApiDescriptionSettings(Tag = "Extend", Name = "LqXhmxb", Order = 200)]  
32 - [Route("api/Extend/[controller]")]  
33 - public class LqXhmxbService : ILqXhmxbService, IDynamicApiController, ITransient  
34 - {  
35 - private readonly ISqlSugarRepository<LqXhmxbEntity> _lqXhmxbRepository;  
36 - private readonly SqlSugarScope _db;  
37 - private readonly IUserManager _userManager;  
38 -  
39 - /// <summary>  
40 - /// 初始化一个<see cref="LqXhmxbService"/>类型的新实例  
41 - /// </summary>  
42 - public LqXhmxbService(ISqlSugarRepository<LqXhmxbEntity> lqXhmxbRepository, IUserManager userManager)  
43 - {  
44 - _lqXhmxbRepository = lqXhmxbRepository;  
45 - _db = _lqXhmxbRepository.Context;  
46 - _userManager = userManager;  
47 - }  
48 -  
49 - /// <summary>  
50 - /// 获取消耗明细表  
51 - /// </summary>  
52 - /// <param name="id">参数</param>  
53 - /// <returns></returns>  
54 - [HttpGet("{id}")]  
55 - public async Task<dynamic> GetInfo(string id)  
56 - {  
57 - var entity = await _db.Queryable<LqXhmxbEntity>().FirstAsync(p => p.Id == id);  
58 - var output = entity.Adapt<LqXhmxbInfoOutput>();  
59 - return output;  
60 - }  
61 -  
62 - /// <summary>  
63 - /// 获取消耗明细表列表  
64 - /// </summary>  
65 - /// <param name="input">请求参数</param>  
66 - /// <returns></returns>  
67 - [HttpGet("")]  
68 - public async Task<dynamic> GetList([FromQuery] LqXhmxbListQueryInput input)  
69 - {  
70 - var sidx = input.sidx == null ? "id" : input.sidx;  
71 - var data = await _db.Queryable<LqXhmxbEntity>()  
72 - .WhereIF(!string.IsNullOrEmpty(input.id), p => p.Id.Contains(input.id))  
73 - .WhereIF(!string.IsNullOrEmpty(input.mdbh), p => p.Mdbh.Contains(input.mdbh))  
74 - .WhereIF(!string.IsNullOrEmpty(input.mdmc), p => p.Mdmc.Contains(input.mdmc))  
75 - .WhereIF(!string.IsNullOrEmpty(input.bmbh), p => p.Bmbh.Contains(input.bmbh))  
76 - .WhereIF(!string.IsNullOrEmpty(input.bmmc), p => p.Bmmc.Contains(input.bmmc))  
77 - .WhereIF(!string.IsNullOrEmpty(input.ygbh), p => p.Ygbh.Contains(input.ygbh))  
78 - .WhereIF(!string.IsNullOrEmpty(input.ygmc), p => p.Ygmc.Contains(input.ygmc))  
79 - .WhereIF(!string.IsNullOrEmpty(input.xms), p => p.Xms.Contains(input.xms))  
80 - .WhereIF(!string.IsNullOrEmpty(input.xh), p => p.Xh.Contains(input.xh))  
81 - .WhereIF(!string.IsNullOrEmpty(input.sg), p => p.Sg.Contains(input.sg))  
82 - .WhereIF(!string.IsNullOrEmpty(input.qtsg1), p => p.Qtsg1.Contains(input.qtsg1))  
83 - .WhereIF(!string.IsNullOrEmpty(input.qtsg2), p => p.Qtsg2.Contains(input.qtsg2))  
84 - .WhereIF(!string.IsNullOrEmpty(input.qtsg3), p => p.Qtsg3.Contains(input.qtsg3))  
85 - .WhereIF(!string.IsNullOrEmpty(input.sghj), p => p.Sghj.Contains(input.sghj))  
86 - .Select(it => new LqXhmxbListOutput  
87 - {  
88 - id = it.Id,  
89 - mdbh = it.Mdbh,  
90 - mdmc = it.Mdmc,  
91 - bmbh = it.Bmbh,  
92 - bmmc = it.Bmmc,  
93 - ygbh = it.Ygbh,  
94 - ygmc = it.Ygmc,  
95 - xms = it.Xms,  
96 - xh = it.Xh,  
97 - sg = it.Sg,  
98 - qtsg1 = it.Qtsg1,  
99 - qtsg2 = it.Qtsg2,  
100 - qtsg3 = it.Qtsg3,  
101 - sghj = it.Sghj,  
102 - })  
103 - .MergeTable()  
104 - .OrderBy(sidx + " " + input.sort)  
105 - .ToPagedListAsync(input.currentPage, input.pageSize);  
106 - return PageResult<LqXhmxbListOutput>.SqlSugarPageResult(data);  
107 - }  
108 -  
109 - /// <summary>  
110 - /// 新建消耗明细表  
111 - /// </summary>  
112 - /// <param name="input">参数</param>  
113 - /// <returns></returns>  
114 - [HttpPost("")]  
115 - public async Task Create([FromBody] LqXhmxbCrInput input)  
116 - {  
117 - var userInfo = await _userManager.GetUserInfo();  
118 - var entity = input.Adapt<LqXhmxbEntity>();  
119 - entity.Id = YitIdHelper.NextId().ToString();  
120 - var isOk = await _db.Insertable(entity).IgnoreColumns(ignoreNullColumn: true).ExecuteCommandAsync();  
121 - if (!(isOk > 0))  
122 - throw NCCException.Oh(ErrorCode.COM1000);  
123 - }  
124 -  
125 - /// <summary>  
126 - /// 获取消耗明细表无分页列表  
127 - /// </summary>  
128 - /// <param name="input">请求参数</param>  
129 - /// <returns></returns>  
130 - [NonAction]  
131 - public async Task<dynamic> GetNoPagingList([FromQuery] LqXhmxbListQueryInput input)  
132 - {  
133 - var sidx = input.sidx == null ? "id" : input.sidx;  
134 - var data = await _db.Queryable<LqXhmxbEntity>()  
135 - .WhereIF(!string.IsNullOrEmpty(input.id), p => p.Id.Contains(input.id))  
136 - .WhereIF(!string.IsNullOrEmpty(input.mdbh), p => p.Mdbh.Contains(input.mdbh))  
137 - .WhereIF(!string.IsNullOrEmpty(input.mdmc), p => p.Mdmc.Contains(input.mdmc))  
138 - .WhereIF(!string.IsNullOrEmpty(input.bmbh), p => p.Bmbh.Contains(input.bmbh))  
139 - .WhereIF(!string.IsNullOrEmpty(input.bmmc), p => p.Bmmc.Contains(input.bmmc))  
140 - .WhereIF(!string.IsNullOrEmpty(input.ygbh), p => p.Ygbh.Contains(input.ygbh))  
141 - .WhereIF(!string.IsNullOrEmpty(input.ygmc), p => p.Ygmc.Contains(input.ygmc))  
142 - .WhereIF(!string.IsNullOrEmpty(input.xms), p => p.Xms.Contains(input.xms))  
143 - .WhereIF(!string.IsNullOrEmpty(input.xh), p => p.Xh.Contains(input.xh))  
144 - .WhereIF(!string.IsNullOrEmpty(input.sg), p => p.Sg.Contains(input.sg))  
145 - .WhereIF(!string.IsNullOrEmpty(input.qtsg1), p => p.Qtsg1.Contains(input.qtsg1))  
146 - .WhereIF(!string.IsNullOrEmpty(input.qtsg2), p => p.Qtsg2.Contains(input.qtsg2))  
147 - .WhereIF(!string.IsNullOrEmpty(input.qtsg3), p => p.Qtsg3.Contains(input.qtsg3))  
148 - .WhereIF(!string.IsNullOrEmpty(input.sghj), p => p.Sghj.Contains(input.sghj))  
149 - .Select(it => new LqXhmxbListOutput  
150 - {  
151 - id = it.Id,  
152 - mdbh = it.Mdbh,  
153 - mdmc = it.Mdmc,  
154 - bmbh = it.Bmbh,  
155 - bmmc = it.Bmmc,  
156 - ygbh = it.Ygbh,  
157 - ygmc = it.Ygmc,  
158 - xms = it.Xms,  
159 - xh = it.Xh,  
160 - sg = it.Sg,  
161 - qtsg1 = it.Qtsg1,  
162 - qtsg2 = it.Qtsg2,  
163 - qtsg3 = it.Qtsg3,  
164 - sghj = it.Sghj,  
165 - })  
166 - .MergeTable()  
167 - .OrderBy(sidx + " " + input.sort)  
168 - .ToListAsync();  
169 - return data;  
170 - }  
171 -  
172 - /// <summary>  
173 - /// 导出消耗明细表  
174 - /// </summary>  
175 - /// <param name="input">请求参数</param>  
176 - /// <returns></returns>  
177 - [HttpGet("Actions/Export")]  
178 - public async Task<dynamic> Export([FromQuery] LqXhmxbListQueryInput input)  
179 - {  
180 - var userInfo = await _userManager.GetUserInfo();  
181 - var exportData = new List<LqXhmxbListOutput>();  
182 - if (input.dataType == 0)  
183 - {  
184 - var data = Clay.Object(await this.GetList(input));  
185 - exportData = data.Solidify<PageResult<LqXhmxbListOutput>>().list;  
186 - }  
187 - else  
188 - {  
189 - exportData = await this.GetNoPagingList(input);  
190 - }  
191 - List<ParamsModel> paramList =  
192 - "[{\"value\":\"消耗编号\",\"field\":\"id\"},{\"value\":\"门店编号\",\"field\":\"mdbh\"},{\"value\":\"门店名称\",\"field\":\"mdmc\"},{\"value\":\"部门编号\",\"field\":\"bmbh\"},{\"value\":\"部门名称\",\"field\":\"bmmc\"},{\"value\":\"员工编号\",\"field\":\"ygbh\"},{\"value\":\"员工名称\",\"field\":\"ygmc\"},{\"value\":\"项目数\",\"field\":\"xms\"},{\"value\":\"消耗\",\"field\":\"xh\"},{\"value\":\"手工\",\"field\":\"sg\"},{\"value\":\"其它手工1\",\"field\":\"qtsg1\"},{\"value\":\"其它手工2\",\"field\":\"qtsg2\"},{\"value\":\"其它手工3\",\"field\":\"qtsg3\"},{\"value\":\"手工合计\",\"field\":\"sghj\"},]".ToList<ParamsModel>();  
193 - ExcelConfig excelconfig = new ExcelConfig();  
194 - excelconfig.FileName = "消耗明细表.xls";  
195 - excelconfig.HeadFont = "微软雅黑";  
196 - excelconfig.HeadPoint = 10;  
197 - excelconfig.IsAllSizeColumn = true;  
198 - excelconfig.ColumnModel = new List<ExcelColumnModel>();  
199 - List<string> selectKeyList = input.selectKey.Split(',').ToList();  
200 - foreach (var item in selectKeyList)  
201 - {  
202 - var isExist = paramList.Find(p => p.field == item);  
203 - if (isExist != null)  
204 - {  
205 - excelconfig.ColumnModel.Add(new ExcelColumnModel() { Column = isExist.field, ExcelColumn = isExist.value });  
206 - }  
207 - }  
208 - var addPath = FileVariable.TemporaryFilePath + excelconfig.FileName;  
209 - ExcelExportHelper<LqXhmxbListOutput>.Export(exportData, excelconfig, addPath);  
210 - var fileName = _userManager.UserId + "|" + addPath + "|xls";  
211 - var output = new { name = excelconfig.FileName, url = "/api/File/Download?encryption=" + DESCEncryption.Encrypt(fileName, "NCC") };  
212 - return output;  
213 - }  
214 -  
215 - /// <summary>  
216 - /// 批量删除消耗明细表  
217 - /// </summary>  
218 - /// <param name="ids">主键数组</param>  
219 - /// <returns></returns>  
220 - [HttpPost("batchRemove")]  
221 - public async Task BatchRemove([FromBody] List<string> ids)  
222 - {  
223 - var entitys = await _db.Queryable<LqXhmxbEntity>().In(it => it.Id, ids).ToListAsync();  
224 - if (entitys.Count > 0)  
225 - {  
226 - try  
227 - {  
228 - //开启事务  
229 - _db.BeginTran();  
230 - //批量删除消耗明细表  
231 - await _db.Deleteable<LqXhmxbEntity>().In(d => d.Id, ids).ExecuteCommandAsync();  
232 - //关闭事务  
233 - _db.CommitTran();  
234 - }  
235 - catch (Exception)  
236 - {  
237 - //回滚事务  
238 - _db.RollbackTran();  
239 - throw NCCException.Oh(ErrorCode.COM1002);  
240 - }  
241 - }  
242 - }  
243 -  
244 - /// <summary>  
245 - /// 更新消耗明细表  
246 - /// </summary>  
247 - /// <param name="id">主键</param>  
248 - /// <param name="input">参数</param>  
249 - /// <returns></returns>  
250 - [HttpPut("{id}")]  
251 - public async Task Update(string id, [FromBody] LqXhmxbUpInput input)  
252 - {  
253 - var entity = input.Adapt<LqXhmxbEntity>();  
254 - var isOk = await _db.Updateable(entity).IgnoreColumns(ignoreAllNullColumns: true).ExecuteCommandAsync();  
255 - if (!(isOk > 0))  
256 - throw NCCException.Oh(ErrorCode.COM1001);  
257 - }  
258 -  
259 - /// <summary>  
260 - /// 删除消耗明细表  
261 - /// </summary>  
262 - /// <returns></returns>  
263 - [HttpDelete("{id}")]  
264 - public async Task Delete(string id)  
265 - {  
266 - var entity = await _db.Queryable<LqXhmxbEntity>().FirstAsync(p => p.Id == id);  
267 - _ = entity ?? throw NCCException.Oh(ErrorCode.COM1005);  
268 - var isOk = await _db.Deleteable<LqXhmxbEntity>().Where(d => d.Id == id).ExecuteCommandAsync();  
269 - if (!(isOk > 0))  
270 - throw NCCException.Oh(ErrorCode.COM1002);  
271 - }  
272 - }  
273 -}  
netcore/src/Modularity/Extend/NCC.Extend/LqYxhdfaService.cs deleted
1 -using System;  
2 -using System.Collections.Generic;  
3 -using System.Linq;  
4 -using System.Threading.Tasks;  
5 -using Mapster;  
6 -using Microsoft.AspNetCore.Mvc;  
7 -using NCC.ClayObject;  
8 -using NCC.Common.Configuration;  
9 -using NCC.Common.Core.Manager;  
10 -using NCC.Common.Enum;  
11 -using NCC.Common.Extension;  
12 -using NCC.Common.Filter;  
13 -using NCC.Common.Helper;  
14 -using NCC.Common.Model.NPOI;  
15 -using NCC.DataEncryption;  
16 -using NCC.Dependency;  
17 -using NCC.DynamicApiController;  
18 -using NCC.Extend.Entitys.Dto.LqYxhdfa;  
19 -using NCC.Extend.Entitys.lq_yxhdfa;  
20 -using NCC.Extend.Interfaces.LqYxhdfa;  
21 -using NCC.FriendlyException;  
22 -using NCC.JsonSerialization;  
23 -using SqlSugar;  
24 -using Yitter.IdGenerator;  
25 -  
26 -namespace NCC.Extend.LqYxhdfa  
27 -{  
28 - /// <summary>  
29 - /// 营销活动方案服务  
30 - /// </summary>  
31 - [ApiDescriptionSettings(Tag = "Extend", Name = "LqYxhdfa", Order = 200)]  
32 - [Route("api/Extend/[controller]")]  
33 - public class LqYxhdfaService : ILqYxhdfaService, IDynamicApiController, ITransient  
34 - {  
35 - private readonly ISqlSugarRepository<LqYxhdfaEntity> _lqYxhdfaRepository;  
36 - private readonly SqlSugarScope _db;  
37 - private readonly IUserManager _userManager;  
38 -  
39 - /// <summary>  
40 - /// 初始化一个<see cref="LqYxhdfaService"/>类型的新实例  
41 - /// </summary>  
42 - public LqYxhdfaService(ISqlSugarRepository<LqYxhdfaEntity> lqYxhdfaRepository, IUserManager userManager)  
43 - {  
44 - _lqYxhdfaRepository = lqYxhdfaRepository;  
45 - _db = _lqYxhdfaRepository.Context;  
46 - _userManager = userManager;  
47 - }  
48 -  
49 - /// <summary>  
50 - /// 获取营销活动方案  
51 - /// </summary>  
52 - /// <param name="id">参数</param>  
53 - /// <returns></returns>  
54 - [HttpGet("{id}")]  
55 - public async Task<dynamic> GetInfo(string id)  
56 - {  
57 - var entity = await _db.Queryable<LqYxhdfaEntity>().FirstAsync(p => p.Id == id);  
58 - var output = entity.Adapt<LqYxhdfaInfoOutput>();  
59 - return output;  
60 - }  
61 -  
62 - /// <summary>  
63 - /// 获取营销活动方案列表  
64 - /// </summary>  
65 - /// <param name="input">请求参数</param>  
66 - /// <returns></returns>  
67 - [HttpGet("")]  
68 - public async Task<dynamic> GetList([FromQuery] LqYxhdfaListQueryInput input)  
69 - {  
70 - var sidx = input.sidx == null ? "id" : input.sidx;  
71 - var data = await _db.Queryable<LqYxhdfaEntity>()  
72 - .WhereIF(!string.IsNullOrEmpty(input.id), p => p.Id.Contains(input.id))  
73 - .WhereIF(!string.IsNullOrEmpty(input.yxhdbh), p => p.Yxhdbh.Contains(input.yxhdbh))  
74 - .WhereIF(!string.IsNullOrEmpty(input.hdmc), p => p.Hdmc.Contains(input.hdmc))  
75 - .WhereIF(!string.IsNullOrEmpty(input.zsj), p => p.Zsj.Contains(input.zsj))  
76 - .WhereIF(!string.IsNullOrEmpty(input.jej), p => p.Jej.Contains(input.jej))  
77 - .Select(it => new LqYxhdfaListOutput  
78 - {  
79 - id = it.Id,  
80 - yxhdbh = it.Yxhdbh,  
81 - hdmc = it.Hdmc,  
82 - zsj = it.Zsj,  
83 - jej = it.Jej,  
84 - })  
85 - .MergeTable()  
86 - .OrderBy(sidx + " " + input.sort)  
87 - .ToPagedListAsync(input.currentPage, input.pageSize);  
88 - return PageResult<LqYxhdfaListOutput>.SqlSugarPageResult(data);  
89 - }  
90 -  
91 - /// <summary>  
92 - /// 新建营销活动方案  
93 - /// </summary>  
94 - /// <param name="input">参数</param>  
95 - /// <returns></returns>  
96 - [HttpPost("")]  
97 - public async Task Create([FromBody] LqYxhdfaCrInput input)  
98 - {  
99 - var userInfo = await _userManager.GetUserInfo();  
100 - var entity = input.Adapt<LqYxhdfaEntity>();  
101 - entity.Id = YitIdHelper.NextId().ToString();  
102 - var isOk = await _db.Insertable(entity).IgnoreColumns(ignoreNullColumn: true).ExecuteCommandAsync();  
103 - if (!(isOk > 0))  
104 - throw NCCException.Oh(ErrorCode.COM1000);  
105 - }  
106 -  
107 - /// <summary>  
108 - /// 获取营销活动方案无分页列表  
109 - /// </summary>  
110 - /// <param name="input">请求参数</param>  
111 - /// <returns></returns>  
112 - [NonAction]  
113 - public async Task<dynamic> GetNoPagingList([FromQuery] LqYxhdfaListQueryInput input)  
114 - {  
115 - var sidx = input.sidx == null ? "id" : input.sidx;  
116 - var data = await _db.Queryable<LqYxhdfaEntity>()  
117 - .WhereIF(!string.IsNullOrEmpty(input.id), p => p.Id.Contains(input.id))  
118 - .WhereIF(!string.IsNullOrEmpty(input.yxhdbh), p => p.Yxhdbh.Contains(input.yxhdbh))  
119 - .WhereIF(!string.IsNullOrEmpty(input.hdmc), p => p.Hdmc.Contains(input.hdmc))  
120 - .WhereIF(!string.IsNullOrEmpty(input.zsj), p => p.Zsj.Contains(input.zsj))  
121 - .WhereIF(!string.IsNullOrEmpty(input.jej), p => p.Jej.Contains(input.jej))  
122 - .Select(it => new LqYxhdfaListOutput  
123 - {  
124 - id = it.Id,  
125 - yxhdbh = it.Yxhdbh,  
126 - hdmc = it.Hdmc,  
127 - zsj = it.Zsj,  
128 - jej = it.Jej,  
129 - })  
130 - .MergeTable()  
131 - .OrderBy(sidx + " " + input.sort)  
132 - .ToListAsync();  
133 - return data;  
134 - }  
135 -  
136 - /// <summary>  
137 - /// 导出营销活动方案  
138 - /// </summary>  
139 - /// <param name="input">请求参数</param>  
140 - /// <returns></returns>  
141 - [HttpGet("Actions/Export")]  
142 - public async Task<dynamic> Export([FromQuery] LqYxhdfaListQueryInput input)  
143 - {  
144 - var userInfo = await _userManager.GetUserInfo();  
145 - var exportData = new List<LqYxhdfaListOutput>();  
146 - if (input.dataType == 0)  
147 - {  
148 - var data = Clay.Object(await this.GetList(input));  
149 - exportData = data.Solidify<PageResult<LqYxhdfaListOutput>>().list;  
150 - }  
151 - else  
152 - {  
153 - exportData = await this.GetNoPagingList(input);  
154 - }  
155 - List<ParamsModel> paramList =  
156 - "[{\"value\":\"方案编号\",\"field\":\"id\"},{\"value\":\"营销活动编号\",\"field\":\"yxhdbh\"},{\"value\":\"活动名称\",\"field\":\"hdmc\"},{\"value\":\"张数奖\",\"field\":\"zsj\"},{\"value\":\"金额奖\",\"field\":\"jej\"},]".ToList<ParamsModel>();  
157 - ExcelConfig excelconfig = new ExcelConfig();  
158 - excelconfig.FileName = "营销活动方案.xls";  
159 - excelconfig.HeadFont = "微软雅黑";  
160 - excelconfig.HeadPoint = 10;  
161 - excelconfig.IsAllSizeColumn = true;  
162 - excelconfig.ColumnModel = new List<ExcelColumnModel>();  
163 - List<string> selectKeyList = input.selectKey.Split(',').ToList();  
164 - foreach (var item in selectKeyList)  
165 - {  
166 - var isExist = paramList.Find(p => p.field == item);  
167 - if (isExist != null)  
168 - {  
169 - excelconfig.ColumnModel.Add(new ExcelColumnModel() { Column = isExist.field, ExcelColumn = isExist.value });  
170 - }  
171 - }  
172 - var addPath = FileVariable.TemporaryFilePath + excelconfig.FileName;  
173 - ExcelExportHelper<LqYxhdfaListOutput>.Export(exportData, excelconfig, addPath);  
174 - var fileName = _userManager.UserId + "|" + addPath + "|xls";  
175 - var output = new { name = excelconfig.FileName, url = "/api/File/Download?encryption=" + DESCEncryption.Encrypt(fileName, "NCC") };  
176 - return output;  
177 - }  
178 -  
179 - /// <summary>  
180 - /// 批量删除营销活动方案  
181 - /// </summary>  
182 - /// <param name="ids">主键数组</param>  
183 - /// <returns></returns>  
184 - [HttpPost("batchRemove")]  
185 - public async Task BatchRemove([FromBody] List<string> ids)  
186 - {  
187 - var entitys = await _db.Queryable<LqYxhdfaEntity>().In(it => it.Id, ids).ToListAsync();  
188 - if (entitys.Count > 0)  
189 - {  
190 - try  
191 - {  
192 - //开启事务  
193 - _db.BeginTran();  
194 - //批量删除营销活动方案  
195 - await _db.Deleteable<LqYxhdfaEntity>().In(d => d.Id, ids).ExecuteCommandAsync();  
196 - //关闭事务  
197 - _db.CommitTran();  
198 - }  
199 - catch (Exception)  
200 - {  
201 - //回滚事务  
202 - _db.RollbackTran();  
203 - throw NCCException.Oh(ErrorCode.COM1002);  
204 - }  
205 - }  
206 - }  
207 -  
208 - /// <summary>  
209 - /// 更新营销活动方案  
210 - /// </summary>  
211 - /// <param name="id">主键</param>  
212 - /// <param name="input">参数</param>  
213 - /// <returns></returns>  
214 - [HttpPut("{id}")]  
215 - public async Task Update(string id, [FromBody] LqYxhdfaUpInput input)  
216 - {  
217 - var entity = input.Adapt<LqYxhdfaEntity>();  
218 - var isOk = await _db.Updateable(entity).IgnoreColumns(ignoreAllNullColumns: true).ExecuteCommandAsync();  
219 - if (!(isOk > 0))  
220 - throw NCCException.Oh(ErrorCode.COM1001);  
221 - }  
222 -  
223 - /// <summary>  
224 - /// 删除营销活动方案  
225 - /// </summary>  
226 - /// <returns></returns>  
227 - [HttpDelete("{id}")]  
228 - public async Task Delete(string id)  
229 - {  
230 - var entity = await _db.Queryable<LqYxhdfaEntity>().FirstAsync(p => p.Id == id);  
231 - _ = entity ?? throw NCCException.Oh(ErrorCode.COM1005);  
232 - var isOk = await _db.Deleteable<LqYxhdfaEntity>().Where(d => d.Id == id).ExecuteCommandAsync();  
233 - if (!(isOk > 0))  
234 - throw NCCException.Oh(ErrorCode.COM1002);  
235 - }  
236 - }  
237 -}  
netcore/src/Modularity/Extend/NCC.Extend/Utils/LqKdKdjlbStringGenerator.cs
@@ -46,8 +46,9 @@ namespace NCC.Extend.Utils @@ -46,8 +46,9 @@ namespace NCC.Extend.Utils
46 var customerName = GetCustomerName(entity.kdhy); 46 var customerName = GetCustomerName(entity.kdhy);
47 sb.AppendLine($"⏩顾客姓名:{customerName}"); 47 sb.AppendLine($"⏩顾客姓名:{customerName}");
48 // 健康师:王维 48 // 健康师:王维
49 - var healthTeachers = HealthInstructorNames.TrimEnd(',');  
50 - sb.AppendLine($"⏩健康师:{healthTeachers}"); 49 + //这里需要把HealthInstructorNames去重,HealthInstructorNames格式为张三、李四、张三、
  50 + var healthTeachers = HealthInstructorNames.Split(',', StringSplitOptions.RemoveEmptyEntries).Distinct().ToArray();
  51 + sb.AppendLine($"⏩健康师:{string.Join("、", healthTeachers)}");
51 52
52 // 活动方案:532工程 53 // 活动方案:532工程
53 sb.AppendLine($"⏩活动方案:{entity.pxxx ?? "无"}"); 54 sb.AppendLine($"⏩活动方案:{entity.pxxx ?? "无"}");