Browse Source

参会名单导入异步调用修复

huwhois 4 years ago
parent
commit
a3d67f46c6

+ 2 - 173
src/main/java/io/renren/modules/admin/controller/AttendersController.java

@ -29,7 +29,6 @@ import org.apache.poi.ss.usermodel.Workbook;
29 29
import org.apache.shiro.authz.annotation.RequiresPermissions;
30 30
import org.springframework.beans.factory.annotation.Value;
31 31
import org.springframework.beans.factory.annotation.Autowired;
32
import org.springframework.scheduling.annotation.Async;
33 32
import org.springframework.web.bind.annotation.GetMapping;
34 33
import org.springframework.web.bind.annotation.PathVariable;
35 34
import org.springframework.web.bind.annotation.PostMapping;
@ -121,74 +120,11 @@ public class AttendersController extends AbstractController {
121 120
            return R.error("会议id不可为空");
122 121
        }
123 122
124
        addAttenders(attendersform);
123
        attendersService.saveAttendes(attendersform);
125 124
126 125
        return R.ok();
127 126
    }
128 127
129
    public boolean addAttenders(AttendersviewEntity attendersform) {
130
        try {
131
            String symbol = MyUtils.md5(attendersform.getTruename() + attendersform.getPhone());
132
133
            MemberEntity member = memberService.getBySymbol(symbol);
134
135
            // 存会员表(个人信息, 开票信息)
136
            if (member == null) {
137
                member = new MemberEntity();
138
                member.setTruename(attendersform.getTruename());
139
                member.setPhone(attendersform.getPhone());
140
            }
141
            member.setOrganization(attendersform.getOrganization());
142
            member.setPosition(attendersform.getPosition());
143
            member.setEmail(attendersform.getEmail());
144
            member.setSex(attendersform.getSex());
145
            member.setRemark(attendersform.getRemark());
146
            member.setTaxType(attendersform.getTaxType());
147
            member.setTaxTitle(attendersform.getTaxTitle());
148
            member.setTaxNumber(attendersform.getTaxNumber());
149
            member.setCompanyAddress(attendersform.getCompanyAddress());
150
            member.setCompanyPhone(attendersform.getCompanyPhone());
151
            member.setBankAccount(attendersform.getBankAccount());
152
            member.setMailingAddress(attendersform.getMailingAddress());
153
            member.setPostcode(attendersform.getPostcode());
154
155
            if (member.getId() == null || member.getId() == 0L) {
156
                memberService.saveMember(member);
157
            } else {
158
                memberService.updateMember(member);
159
            }
160
161
            // 存参会信息
162
            AttendersEntity attenders = attendersService.getByMMId(member.getId(), attendersform.getMeetingId());
163
            if (attenders == null) {
164
                attenders = new AttendersEntity();
165
                attenders.setMemberId(member.getId());
166
                attenders.setMeetingId(attendersform.getMeetingId());
167
            }
168
169
            attenders.setMemberType(attendersform.getMemberType());
170
            attenders.setFeeType(attendersform.getFeeType());
171
            attenders.setPaperType(attendersform.getPaperType());
172
            attenders.setIsReport(attendersform.getIsReport());
173
            attenders.setReportTitle(attendersform.getReportTitle());
174
            attenders.setHotelType(attendersform.getHotelType());
175
            attenders.setRoomType(attendersform.getRoomType());
176
            attenders.setIsShare(attendersform.getIsShare());
177
            attenders.setCheckInDate(attendersform.getCheckInDate());
178
            attenders.setCheckOutDate(attendersform.getCheckOutDate());
179
            attenders.setPayType(attendersform.getPayType());
180
            attenders.setIsPay(attendersform.getIsPay());
181
            attenders.setMoney(attendersform.getMoney());
182
            attenders.setCreateTime(new Date());
183
184
            attendersService.save(attenders);
185
        } catch (Exception e) {
186
            return false;
187
        }
188
189
        return true;
190
    }
191
192 128
    /**
193 129
     * 修改
194 130
     */
@ -534,7 +470,7 @@ public class AttendersController extends AbstractController {
534 470
                    }
535 471
                }
536 472
            }
537
            doImport(successList, failList);
473
            attendersService.doImport(successList, failList, getUserId());
538 474
            statistics.put("total", totalNum);
539 475
            statistics.put("succes", totalNum - failNum);
540 476
            statistics.put("fail", failNum);
@ -543,113 +479,6 @@ public class AttendersController extends AbstractController {
543 479
        return R.ok("上传成功!").put("statistics", statistics);
544 480
    }
545 481
546
    @Async
547
    public void doImport(List<AttendersviewEntity> successList, List<AttendersviewEntity> failList) {
548
        for (AttendersviewEntity attendersInfo : successList) {
549
            try {
550
                addAttenders(attendersInfo);
551
            } catch (Exception e) {
552
                e.printStackTrace();
553
                attendersInfo.setRemark(attendersInfo.getRemark() + " 导入错误原因:未知");
554
                failList.add(attendersInfo);
555
            }
556
        }
557
558
        ExcelData data = new ExcelData();
559
        data.setName("error");
560
        // 添加表头
561
        List<String> titles = new ArrayList<String>();
562
        titles.add("id");
563
        titles.add("姓名");
564
        titles.add("性别");
565
        titles.add("单位名称");
566
        titles.add("职务");
567
        titles.add("电话");
568
        titles.add("联系邮箱");
569
        titles.add("开票类型");
570
        titles.add("发票抬头");
571
        titles.add("税号");
572
        titles.add("单位地址");
573
        titles.add("单位电话");
574
        titles.add("开户行及账号");
575
        titles.add("邮寄地址");
576
        titles.add("邮编");
577
        titles.add("备注");
578
        titles.add("用户类型");
579
        titles.add("费用类型");
580
        titles.add("论文");
581
        titles.add("是否有报告");
582
        titles.add("报告题目");
583
        titles.add("酒店");
584
        titles.add("房型");
585
        titles.add("入住时间");
586
        titles.add("离店时间");
587
        titles.add("付款方式");
588
        titles.add("是否缴费");
589
        titles.add("金额");
590
        data.setTitles(titles);
591
592
        // 新增列
593
        List<List<Object>> rows = new ArrayList<List<Object>>();
594
        List<Object> row = null;
595
596
        // SimpleDateFormat lastdate=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
597
        int i = 1;
598
        for (AttendersviewEntity attender : failList) {
599
            row = new ArrayList<Object>();
600
            row.add(i);
601
            row.add(attender.getTruename());
602
            row.add(attender.getSex());
603
            row.add(attender.getOrganization());
604
            row.add(attender.getPosition());
605
            row.add(attender.getPhone());
606
            row.add(attender.getEmail());
607
            row.add(attender.getTaxType());
608
            row.add(attender.getTaxTitle());
609
            row.add(attender.getTaxNumber());
610
            row.add(attender.getCompanyAddress());
611
            row.add(attender.getCompanyPhone());
612
            row.add(attender.getBankAccount());
613
            row.add(attender.getMailingAddress());
614
            row.add(attender.getPostcode());
615
            row.add(attender.getRemark());
616
            row.add(attender.getMemberType());
617
            row.add(attender.getFeeType());
618
            row.add(attender.getPaperType());
619
            row.add(attender.getIsReport());
620
            row.add(attender.getReportTitle());
621
            row.add(attender.getHotelType());
622
            row.add(attender.getRoomType());
623
            row.add(attender.getCheckInDate());
624
            row.add(attender.getCheckOutDate());
625
            row.add(attender.getPayType());
626
            row.add(attender.getIsPay());
627
            row.add(attender.getMoney());
628
629
            rows.add(row);
630
            row = null;
631
            i++;
632
        }
633
634
        data.setRows(rows);
635
636
        try {
637
            Long userId = getUserId();
638
            String fileName = "attenders_" + userId + ".xlsx";
639
            String filePath = "/uploads/fails/" + fileName;
640
            String savePath = dataPath + filePath;
641
642
            OutputStream os = new FileOutputStream(savePath);
643
            ExcelUtils.exportExcel(data, os);
644
645
            os.close();
646
        } catch (FileNotFoundException e) {
647
            e.printStackTrace();
648
        } catch (Exception e) {
649
            e.printStackTrace();
650
        }
651
    }
652
653 482
    /**
654 483
     * 导出最近上传出租哦文件
655 484
     * @param response

+ 10 - 0
src/main/java/io/renren/modules/admin/service/AttendersService.java

@ -1,10 +1,15 @@
1 1
package io.renren.modules.admin.service;
2 2
3
import java.util.List;
3 4
import java.util.Map;
4 5
5 6
import com.baomidou.mybatisplus.extension.service.IService;
7
8
import org.springframework.scheduling.annotation.Async;
9
6 10
import io.renren.common.utils.PageUtils;
7 11
import io.renren.modules.admin.entity.AttendersEntity;
12
import io.renren.modules.admin.entity.AttendersviewEntity;
8 13
9 14
/**
10 15
 * VIEW
@ -20,5 +25,10 @@ public interface AttendersService extends IService<AttendersEntity> {
20 25
	AttendersEntity getByMMId(Long id, Long meetingId);
21 26
22 27
	int removeReport(Long id);
28
    
29
	boolean saveAttendes(AttendersviewEntity attendersform);
30
31
	@Async
32
	public void doImport(List<AttendersviewEntity> successList, List<AttendersviewEntity> failList, Long userId);
23 33
}
24 34

+ 198 - 9
src/main/java/io/renren/modules/admin/service/impl/AttendersServiceImpl.java

@ -1,35 +1,54 @@
1 1
package io.renren.modules.admin.service.impl;
2 2
3
import java.util.Map;
4
import java.io.FileNotFoundException;
5
import java.io.FileOutputStream;
6
import java.io.OutputStream;
7
import java.util.ArrayList;
8
import java.util.Date;
9
import java.util.List;
3 10
11
import org.springframework.beans.factory.annotation.Value;
12
import org.springframework.beans.factory.annotation.Autowired;
13
import org.springframework.scheduling.annotation.Async;
4 14
import org.springframework.stereotype.Service;
5
6
import java.util.Map;
7 15
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
8 16
import com.baomidou.mybatisplus.core.metadata.IPage;
9 17
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
18
19
import io.renren.common.utils.ExcelData;
20
import io.renren.common.utils.ExcelUtils;
21
import io.renren.common.utils.MyUtils;
10 22
import io.renren.common.utils.PageUtils;
11 23
import io.renren.common.utils.Query;
12
13 24
import io.renren.modules.admin.dao.AttendersDao;
14 25
import io.renren.modules.admin.entity.AttendersEntity;
26
import io.renren.modules.admin.entity.AttendersviewEntity;
27
import io.renren.modules.admin.entity.MemberEntity;
15 28
import io.renren.modules.admin.service.AttendersService;
29
import io.renren.modules.admin.service.MemberService;
30
16 31
17 32
@Service("attendersService")
18 33
public class AttendersServiceImpl extends ServiceImpl<AttendersDao, AttendersEntity> implements AttendersService {
19 34
35
    @Autowired
36
    private MemberService memberService;
37
38
    @Value("${fyhs-meeting.file.datapath}")
39
    private String dataPath; // 读取配置文件中的指定目录
40
20 41
    @Override
21 42
    public PageUtils queryPage(Map<String, Object> params) {
22
        IPage<AttendersEntity> page = this.page(
23
                new Query<AttendersEntity>().getPage(params),
24
                new QueryWrapper<AttendersEntity>()
25
        );
43
        IPage<AttendersEntity> page = this.page(new Query<AttendersEntity>().getPage(params),
44
                new QueryWrapper<AttendersEntity>());
26 45
27 46
        return new PageUtils(page);
28 47
    }
29 48
30 49
    @Override
31 50
    public AttendersEntity getByMMId(Long memberId, Long meetingId) {
32
        return this.getOne(new QueryWrapper<AttendersEntity>().eq("member_id", memberId).eq("meeting_id",meetingId));
51
        return this.getOne(new QueryWrapper<AttendersEntity>().eq("member_id", memberId).eq("meeting_id", meetingId));
33 52
    }
34 53
35 54
    @Override
@ -37,4 +56,174 @@ public class AttendersServiceImpl extends ServiceImpl<AttendersDao, AttendersEnt
37 56
        return baseMapper.removeReport(id);
38 57
    }
39 58
40
}
59
    @Override
60
    public boolean saveAttendes(AttendersviewEntity attendersform) {
61
        try {
62
            String symbol = MyUtils.md5(attendersform.getTruename() + attendersform.getPhone());
63
64
            MemberEntity member = memberService.getBySymbol(symbol);
65
66
            // 存会员表(个人信息, 开票信息)
67
            if (member == null) {
68
                member = new MemberEntity();
69
                member.setTruename(attendersform.getTruename());
70
                member.setPhone(attendersform.getPhone());
71
            }
72
            member.setOrganization(attendersform.getOrganization());
73
            member.setPosition(attendersform.getPosition());
74
            member.setEmail(attendersform.getEmail());
75
            member.setSex(attendersform.getSex());
76
            member.setRemark(attendersform.getRemark());
77
            member.setTaxType(attendersform.getTaxType());
78
            member.setTaxTitle(attendersform.getTaxTitle());
79
            member.setTaxNumber(attendersform.getTaxNumber());
80
            member.setCompanyAddress(attendersform.getCompanyAddress());
81
            member.setCompanyPhone(attendersform.getCompanyPhone());
82
            member.setBankAccount(attendersform.getBankAccount());
83
            member.setMailingAddress(attendersform.getMailingAddress());
84
            member.setPostcode(attendersform.getPostcode());
85
86
            if (member.getId() == null || member.getId() == 0L) {
87
                memberService.saveMember(member);
88
            } else {
89
                memberService.updateMember(member);
90
            }
91
92
            // 存参会信息
93
            AttendersEntity attenders = this.getByMMId(member.getId(), attendersform.getMeetingId());
94
            if (attenders == null) {
95
                attenders = new AttendersEntity();
96
                attenders.setMemberId(member.getId());
97
                attenders.setMeetingId(attendersform.getMeetingId());
98
            }
99
100
            attenders.setMemberType(attendersform.getMemberType());
101
            attenders.setFeeType(attendersform.getFeeType());
102
            attenders.setPaperType(attendersform.getPaperType());
103
            attenders.setIsReport(attendersform.getIsReport());
104
            attenders.setReportTitle(attendersform.getReportTitle());
105
            attenders.setHotelType(attendersform.getHotelType());
106
            attenders.setRoomType(attendersform.getRoomType());
107
            attenders.setIsShare(attendersform.getIsShare());
108
            attenders.setCheckInDate(attendersform.getCheckInDate());
109
            attenders.setCheckOutDate(attendersform.getCheckOutDate());
110
            attenders.setPayType(attendersform.getPayType());
111
            attenders.setIsPay(attendersform.getIsPay());
112
            attenders.setMoney(attendersform.getMoney());
113
            attenders.setCreateTime(new Date());
114
115
            this.save(attenders);
116
        } catch (Exception e) {
117
            return false;
118
        }
119
120
        return true;
121
    }
122
123
    @Override
124
    @Async
125
    public void doImport(List<AttendersviewEntity> successList, List<AttendersviewEntity> failList, Long userId) {
126
        for (AttendersviewEntity attendersInfo : successList) {
127
            try {
128
                saveAttendes(attendersInfo);
129
            } catch (Exception e) {
130
                e.printStackTrace();
131
                attendersInfo.setRemark(attendersInfo.getRemark() + " 导入错误原因:未知");
132
                failList.add(attendersInfo);
133
            }
134
        }
135
136
        ExcelData data = new ExcelData();
137
        data.setName("error");
138
        // 添加表头
139
        List<String> titles = new ArrayList<String>();
140
        titles.add("id");
141
        titles.add("姓名");
142
        titles.add("性别");
143
        titles.add("单位名称");
144
        titles.add("职务");
145
        titles.add("电话");
146
        titles.add("联系邮箱");
147
        titles.add("开票类型");
148
        titles.add("发票抬头");
149
        titles.add("税号");
150
        titles.add("单位地址");
151
        titles.add("单位电话");
152
        titles.add("开户行及账号");
153
        titles.add("邮寄地址");
154
        titles.add("邮编");
155
        titles.add("备注");
156
        titles.add("用户类型");
157
        titles.add("费用类型");
158
        titles.add("论文");
159
        titles.add("是否有报告");
160
        titles.add("报告题目");
161
        titles.add("酒店");
162
        titles.add("房型");
163
        titles.add("入住时间");
164
        titles.add("离店时间");
165
        titles.add("付款方式");
166
        titles.add("是否缴费");
167
        titles.add("金额");
168
        data.setTitles(titles);
169
170
        // 新增列
171
        List<List<Object>> rows = new ArrayList<List<Object>>();
172
        List<Object> row = null;
173
174
        // SimpleDateFormat lastdate=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
175
        int i = 1;
176
        for (AttendersviewEntity attender : failList) {
177
            row = new ArrayList<Object>();
178
            row.add(i);
179
            row.add(attender.getTruename());
180
            row.add(attender.getSex());
181
            row.add(attender.getOrganization());
182
            row.add(attender.getPosition());
183
            row.add(attender.getPhone());
184
            row.add(attender.getEmail());
185
            row.add(attender.getTaxType());
186
            row.add(attender.getTaxTitle());
187
            row.add(attender.getTaxNumber());
188
            row.add(attender.getCompanyAddress());
189
            row.add(attender.getCompanyPhone());
190
            row.add(attender.getBankAccount());
191
            row.add(attender.getMailingAddress());
192
            row.add(attender.getPostcode());
193
            row.add(attender.getRemark());
194
            row.add(attender.getMemberType());
195
            row.add(attender.getFeeType());
196
            row.add(attender.getPaperType());
197
            row.add(attender.getIsReport());
198
            row.add(attender.getReportTitle());
199
            row.add(attender.getHotelType());
200
            row.add(attender.getRoomType());
201
            row.add(attender.getCheckInDate());
202
            row.add(attender.getCheckOutDate());
203
            row.add(attender.getPayType());
204
            row.add(attender.getIsPay());
205
            row.add(attender.getMoney());
206
207
            rows.add(row);
208
            row = null;
209
            i++;
210
        }
211
212
        data.setRows(rows);
213
214
        try {
215
            String fileName = "attenders_" + userId + ".xlsx";
216
            String filePath = "/uploads/fails/" + fileName;
217
            String savePath = dataPath + filePath;
218
219
            OutputStream os = new FileOutputStream(savePath);
220
            ExcelUtils.exportExcel(data, os);
221
222
            os.close();
223
        } catch (FileNotFoundException e) {
224
            e.printStackTrace();
225
        } catch (Exception e) {
226
            e.printStackTrace();
227
        }
228
    }
229
}