用户绑定仪器导出模块开发

master
elliott 2 years ago
parent 6fcc69efc1
commit 0c6bb366e2

@ -1,5 +1,6 @@
package com.flossom.common.core.domain.entity;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
@ -82,10 +83,19 @@ public class WxUserInstrument extends BaseEntity
// 查询的绑定状态
private List<String> bindStatusQuery;
private String mapperBindStatus;
// 查询时间
private String startTime;
private String endTime;
// 导出处理查询字段
/**
*
*/
private List<String> exportFields = new ArrayList<>();
private List<Long> userInstrumentIdList = new ArrayList<>();
// 是否全部绑定详情 all
private String queryString;
public List<Long> getUserIdArray() {
return userIdArray;
@ -282,6 +292,29 @@ public class WxUserInstrument extends BaseEntity
this.bindStatusQuery = bindStatusQuery;
}
public List<String> getExportFields() {
return exportFields;
}
public void setExportFields(List<String> exportFields) {
this.exportFields = exportFields;
}
public List<Long> getUserInstrumentIdList() {
return userInstrumentIdList;
}
public void setUserInstrumentIdList(List<Long> userInstrumentIdList) {
this.userInstrumentIdList = userInstrumentIdList;
}
public String getQueryString() {
return queryString;
}
public void setQueryString(String queryString) {
this.queryString = queryString;
}
@Override
public String toString() {

@ -0,0 +1,144 @@
package com.flossom.common.core.domain.req;
import com.flossom.common.core.annotation.Excel;
import com.flossom.common.core.web.domain.BaseEntity;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
public class WxUserInstrumentExportVm extends BaseEntity {
@Excel(name = "序号")
private Long id;
@Excel(name = "昵称")
private String nickname;
@Excel(name = "手机")
private String mobile;
@Excel(name = "保修年限")
private Long guarantee;
@Excel(name = "用户编号")
private Long userId;
@Excel(name = "仪器名称")
private String instrumentName;
@Excel(name = "保修到期时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm")
private Date guaranteeEndtime;
@Excel(name = "绑定状态")
private String bindingStatus;
@Excel(name = "详情序号")
private Long userInstrumentLogId;
@Excel(name = "仪器序列号")
private String userInstrumentLogSerial;
@Excel(name = "类型")
private String userInstrumentLogBingStatus;
@Excel(name = "操作时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
private Date userInstrumentLogCreateTime;
public String getBindingStatus() {
return bindingStatus;
}
public void setBindingStatus(String bindingStatus) {
this.bindingStatus = bindingStatus;
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getNickname() {
return nickname;
}
public void setNickname(String nickname) {
this.nickname = nickname;
}
public String getMobile() {
return mobile;
}
public void setMobile(String mobile) {
this.mobile = mobile;
}
public Long getGuarantee() {
return guarantee;
}
public void setGuarantee(Long guarantee) {
this.guarantee = guarantee;
}
public Long getUserId() {
return userId;
}
public void setUserId(Long userId) {
this.userId = userId;
}
public String getInstrumentName() {
return instrumentName;
}
public void setInstrumentName(String instrumentName) {
this.instrumentName = instrumentName;
}
public Date getGuaranteeEndtime() {
return guaranteeEndtime;
}
public void setGuaranteeEndtime(Date guaranteeEndtime) {
this.guaranteeEndtime = guaranteeEndtime;
}
public Long getUserInstrumentLogId() {
return userInstrumentLogId;
}
public void setUserInstrumentLogId(Long userInstrumentLogId) {
this.userInstrumentLogId = userInstrumentLogId;
}
public String getUserInstrumentLogSerial() {
return userInstrumentLogSerial;
}
public void setUserInstrumentLogSerial(String userInstrumentLogSerial) {
this.userInstrumentLogSerial = userInstrumentLogSerial;
}
public String getUserInstrumentLogBingStatus() {
return userInstrumentLogBingStatus;
}
public void setUserInstrumentLogBingStatus(String userInstrumentLogBingStatus) {
this.userInstrumentLogBingStatus = userInstrumentLogBingStatus;
}
public Date getUserInstrumentLogCreateTime() {
return userInstrumentLogCreateTime;
}
public void setUserInstrumentLogCreateTime(Date userInstrumentLogCreateTime) {
this.userInstrumentLogCreateTime = userInstrumentLogCreateTime;
}
}

@ -9,7 +9,11 @@ import javax.servlet.http.HttpServletResponse;
import com.flossom.common.core.domain.entity.WxInstrument;
import com.flossom.common.core.domain.entity.WxUserInstrument;
import com.flossom.common.core.domain.entity.WxUserMember;
import com.flossom.common.core.domain.req.WxUserInstrumentExportVm;
import com.flossom.common.core.domain.req.WxUserMemberExportVm;
import com.flossom.common.core.domain.ret.WxUserMemberRet;
import com.flossom.common.core.domain.vo.WxUserMemberVo;
import com.flossom.common.core.exception.ServiceException;
import com.flossom.common.core.utils.poi.ExcelUtil;
import com.flossom.common.core.web.controller.BaseController;
import com.flossom.common.core.web.domain.AjaxResult;
@ -147,5 +151,15 @@ public class WxUserInstrumentController extends BaseController
return toAjax(wxUserInstrumentService.changeGuarantee(wxUserInstrument));
}
/**
*
*/
@Log(title = "批量导出", businessType = BusinessType.EXPORT)
@PostMapping("/batchExport")
public void batchExport(HttpServletResponse response, WxUserInstrument wxUserInstrument) {
List<WxUserInstrumentExportVm> userInstrumentExportData = wxUserInstrumentService.findUserInstrumentExportData(wxUserInstrument);
ExcelUtil<WxUserInstrumentExportVm> util = new ExcelUtil<WxUserInstrumentExportVm>(WxUserInstrumentExportVm.class);
util.exportExcel(response, userInstrumentExportData, "用户仪器绑定数据", wxUserInstrument.getExportFields());
}
}

@ -1,6 +1,7 @@
package com.flossom.system.service;
import com.flossom.common.core.domain.entity.WxUserInstrument;
import com.flossom.common.core.domain.req.WxUserInstrumentExportVm;
import java.util.List;
import java.util.Map;
@ -76,4 +77,12 @@ public interface IWxUserInstrumentService
* @return
*/
public int changeGuarantee(WxUserInstrument wxUserInstrument);
/**
*
*
* @param exportVm
* @return
*/
public List<WxUserInstrumentExportVm> findUserInstrumentExportData(WxUserInstrument exportVm);
}

@ -10,10 +10,12 @@ import com.flossom.common.core.domain.entity.WxInstrumentSerial;
import com.flossom.common.core.domain.entity.WxUserInstrument;
import com.flossom.common.core.domain.entity.WxUserInstrumentLog;
import com.flossom.common.core.domain.entity.WxUserMember;
import com.flossom.common.core.domain.req.WxUserInstrumentExportVm;
import com.flossom.common.core.mapper.*;
import com.flossom.common.core.utils.DateUtils;
import com.flossom.common.core.utils.StringUtils;
import org.apache.commons.compress.utils.Lists;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.flossom.system.service.IWxUserInstrumentService;
@ -231,6 +233,103 @@ public class WxUserInstrumentServiceImpl implements IWxUserInstrumentService
return 1;
}
@Override
public List<WxUserInstrumentExportVm> findUserInstrumentExportData(WxUserInstrument exportVm) {
// 初始化导出字段
this.addDetailExportFields(exportVm);
List<WxUserInstrument> wxUserInstruments = Lists.newArrayList();
// 判断是不是全量导出
if(CollectionUtils.isEmpty(exportVm.getUserInstrumentIdList())) {
// 全量导出
wxUserInstruments = this.selectWxUserInstrumentList(exportVm);
} else {
List<Long> userInstrumentIdList = exportVm.getUserInstrumentIdList();
for (Long id : userInstrumentIdList) {
// 针对ID获取
WxUserInstrument userInstrument = wxUserInstrumentMapper.selectWxUserInstrumentById(id);
wxUserInstruments.add(userInstrument);
}
}
// 处理导出数据
List<WxUserInstrumentExportVm> wxUserInstrumentExportVms = this.handleExportData(wxUserInstruments, exportVm.getQueryString());
return wxUserInstrumentExportVms;
}
// 处理导出需要的数据
private List<WxUserInstrumentExportVm> handleExportData(List<WxUserInstrument> wxUserInstruments, String flag){
List<WxUserInstrumentExportVm> resultList = Lists.newArrayList();
for (WxUserInstrument wxUserInstrument: wxUserInstruments) {
WxUserInstrumentLog userInstrumentLog = new WxUserInstrumentLog();
userInstrumentLog.setUserInstrumentId(wxUserInstrument.getId());
List<WxUserInstrumentLog> wxUserInstrumentLogList = wxUserInstrumentLogMapper.selectWxUserInstrumentLogList(userInstrumentLog);
if ("all".equals(flag)) {
// 补充日志详情数据
if (!CollectionUtils.isEmpty(wxUserInstrumentLogList)){
for (WxUserInstrumentLog userInstrumentLogRecord : wxUserInstrumentLogList) {
// 组装响应数据
WxUserInstrumentExportVm exportVm = new WxUserInstrumentExportVm();
// 先复制数据
BeanUtils.copyProperties(wxUserInstrument,exportVm);
if (wxUserInstrument.getBindingStatus() == 0) {
exportVm.setBindingStatus("已绑定");
} else {
exportVm.setBindingStatus("已解绑");
}
// 补充用户信息
WxUserMember userMember = wxUserMemberMapper.selectWxUserMemberById(wxUserInstrument.getUserId());
if (Objects.nonNull(userMember)) {
exportVm.setNickname(userMember.getNickname());
exportVm.setMobile(userMember.getMobile());
}
exportVm.setUserInstrumentLogSerial(userInstrumentLogRecord.getSerial());
exportVm.setUserInstrumentLogBingStatus(userInstrumentLogRecord.getBindingStatus() == 0 ? "已绑定" : "已解绑");
exportVm.setUserInstrumentLogId(userInstrumentLogRecord.getId());
exportVm.setUserInstrumentLogCreateTime(userInstrumentLogRecord.getCreateTime());
resultList.add(exportVm);
}
}
} else {
// 组装响应数据
WxUserInstrumentExportVm exportVm = new WxUserInstrumentExportVm();
// 先复制数据
BeanUtils.copyProperties(wxUserInstrument,exportVm);
if (wxUserInstrument.getBindingStatus() == 0) {
exportVm.setBindingStatus("已绑定");
} else {
exportVm.setBindingStatus("已解绑");
}
// 补充用户信息
WxUserMember userMember = wxUserMemberMapper.selectWxUserMemberById(wxUserInstrument.getUserId());
if (Objects.nonNull(userMember)) {
exportVm.setNickname(userMember.getNickname());
exportVm.setMobile(userMember.getMobile());
}
// 补充日志详情数据
if (!CollectionUtils.isEmpty(wxUserInstrumentLogList)){
WxUserInstrumentLog userInstrumentLogRecord = wxUserInstrumentLogList.get(0);
exportVm.setUserInstrumentLogSerial(userInstrumentLogRecord.getSerial());
exportVm.setUserInstrumentLogBingStatus(userInstrumentLogRecord.getBindingStatus() == 0 ? "已绑定" : "已解绑");
exportVm.setUserInstrumentLogId(userInstrumentLogRecord.getId());
exportVm.setUserInstrumentLogCreateTime(userInstrumentLogRecord.getCreateTime());
}
resultList.add(exportVm);
}
}
return resultList;
}
// 默认加上详情的字段
private void addDetailExportFields(WxUserInstrument exportVm){
List<String> exportFields = exportVm.getExportFields();
exportFields.add("userInstrumentLogId");
exportFields.add("userInstrumentLogSerial");
exportFields.add("userInstrumentLogBingStatus");
exportFields.add("userInstrumentLogCreateTime");
}
public int saveLog(WxUserInstrument userInstrumentRecord, int status){
WxUserInstrumentLog log = new WxUserInstrumentLog();
log.setUserInstrumentId(userInstrumentRecord.getId());

@ -311,44 +311,40 @@
</el-form-item>
</el-form>
<el-form :inline="true" ref="form" :model="exportFieldList" label-width="150px">
<el-form-item label="会员昵称" prop="nickname">
<el-switch v-model="exportFieldList.nickname" :active-value="'nickname'" :inactive-value="null"/>
<el-form-item label="序号 " prop="nickname">
<el-switch v-model="exportFieldList.id" :active-value="'id'" :inactive-value="null"/>
</el-form-item>
<el-form-item label="用户编号 " prop="id">
<el-switch v-model="exportFieldList.id" active-value="id" :inactive-value="null"/>
<el-form-item label="会员昵称 " prop="id">
<el-switch v-model="exportFieldList.nickname" active-value="nickname" :inactive-value="null"/>
</el-form-item>
<el-form-item label="手机号 " prop="mobile">
<el-switch v-model="exportFieldList.mobile" active-value="mobile" :inactive-value="null"/>
</el-form-item>
<el-form-item label="生日 " prop="birthday">
<el-switch v-model="exportFieldList.birthday" active-value="birthday" :inactive-value="null"/>
<el-form-item label="保修年限 " prop="guarantee">
<el-switch v-model="exportFieldList.guarantee" active-value="guarantee" :inactive-value="null"/>
</el-form-item>
<el-form-item label="地区 " prop="province" @click.native="exportArea()">
<el-switch v-model="exportFieldList.province" active-value="province" :inactive-value="null"/>
<el-form-item label="用户编号 " prop="userId">
<el-switch v-model="exportFieldList.userId" active-value="userId" :inactive-value="null"/>
</el-form-item>
<el-form-item label="用户注册时间 " prop="createTime">
<el-switch v-model="exportFieldList.createTime" active-value="createTime" :inactive-value="null"/>
<el-form-item label="仪器名称 " prop="instrumentName">
<el-switch v-model="exportFieldList.instrumentName" active-value="instrumentName" :inactive-value="null"/>
</el-form-item>
<el-form-item label="仪器数量 " prop="devicesNum">
<el-switch v-model="exportFieldList.devicesNum" active-value="devicesNum" :inactive-value="null"/>
<el-form-item label="保修到期时间 " prop="guaranteeEndtime">
<el-switch v-model="exportFieldList.guaranteeEndtime" active-value="guaranteeEndtime" :inactive-value="null"/>
</el-form-item>
<el-form-item label="仪器名称 " prop="devicesName">
<el-switch v-model="exportFieldList.devicesName" active-value="devicesName" :inactive-value="null"/>
<el-form-item label="绑定状态 " prop="bindingStatus">
<el-switch v-model="exportFieldList.bindingStatus" active-value="bindingStatus" :inactive-value="null"/>
</el-form-item>
<el-form-item label="小程序标签 " prop="miniProgramTags">
<el-switch v-model="exportFieldList.miniProgramTags" active-value="miniProgramTags" :inactive-value="null"/>
</el-form-item>
<el-form-item label="企微标签 " prop="wecomTags">
<el-switch v-model="exportFieldList.wecomTags" active-value="wecomTags" :inactive-value="null"/>
</el-form-item>
<el-form-item label="积分 " prop="credit">
<el-switch v-model="exportFieldList.credit" active-value="credit" :inactive-value="null"/>
</el-form-item>
<el-form-item label="即将过期积分 " prop="expireCredit">
<el-switch v-model="exportFieldList.expireCredit" active-value="expireCredit" :inactive-value="null"/>
</el-form-item>
<el-form-item label="unionid " prop="unionid">
<el-switch v-model="exportFieldList.unionid" active-value="unionid" :inactive-value="null"/>
<el-form-item label="详情数据范围 " prop="queryString">
<el-select
v-model="exportFieldsForm.queryString"
placeholder="请选择类型"
:style="{ width: '100%' }"
clearable
>
<el-option label="最新记录详情" value="single" />
<el-option label="全部记录详情" value="all" />
</el-select>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
@ -415,23 +411,17 @@ export default {
exportFieldList: {
id: null,
nickname: null,
credit: null,
expireCredit: null,
unionid: null,
mobile: null,
province: null,
city: null,
area: null,
birthday: null,
devicesNum: null,
devicesName: null,
createTime: null,
wecomTags: null,
miniProgramTags: null,
guarantee: null,
userId: null,
instrumentName: null,
guaranteeEndtime: null,
bindingStatus: null,
},
exportFieldsForm: {
userIdList: null,
userInstrumentIdList: null,
exportFields: null,
queryString: "all",
},
//
queryParams: {
@ -723,19 +713,12 @@ export default {
this.exportFieldList = {
id: null,
nickname: null,
credit: null,
expireCredit: null,
unionid: null,
mobile: null,
province: null,
city: null,
area: null,
birthday: null,
devicesNum: null,
devicesName: null,
createTime: null,
wecomTags: null,
miniProgramTags: null,
guarantee: null,
userId: null,
instrumentName: null,
guaranteeEndtime: null,
bindingStatus: null,
}
},
//
@ -747,11 +730,11 @@ export default {
this.$modal.msgError("请选择导出字段");
return;
}
this.exportFieldsForm.userIdList = this.ids;
this.exportFieldsForm.userInstrumentIdList = this.ids;
this.exportFieldsForm.exportFields = exportFields;
this.download('/system/member/batchExport', {
this.download('/system/userInstrument/batchExport', {
...this.exportFieldsForm
}, `微信会员_${new Date().getTime()}.xlsx`);
}, `仪器绑定_${new Date().getTime()}.xlsx`);
this.cancelExportFieldsDialog();
}
if (this.batchOperateValue == 2) {
@ -760,9 +743,11 @@ export default {
this.$modal.msgError("请选择导出字段");
return;
}
this.download('/system/member/allExport', {
this.queryParams.userInstrumentIdList = null;
this.queryParams.exportFields = exportFields;
this.download('/system/userInstrument/batchExport', {
...Object.assign({}, this.queryParams, {exportFields: exportFields})
}, `微信会员_${new Date().getTime()}.xlsx`)
}, `仪器绑定_${new Date().getTime()}.xlsx`)
this.cancelExportFieldsDialog();
}
},
@ -770,35 +755,21 @@ export default {
if (this.allFields) {
this.exportFieldList.nickname = "nickname";
this.exportFieldList.id = "id";
this.exportFieldList.credit = "credit";
this.exportFieldList.expireCredit = "expireCredit";
this.exportFieldList.unionid = "unionid";
this.exportFieldList.mobile = "mobile";
this.exportFieldList.province = "province";
this.exportFieldList.city = "city";
this.exportFieldList.area = "area";
this.exportFieldList.birthday = "birthday";
this.exportFieldList.devicesNum = "devicesNum";
this.exportFieldList.devicesName = "devicesName";
this.exportFieldList.createTime = "createTime";
this.exportFieldList.wecomTags = "wecomTags";
this.exportFieldList.miniProgramTags = "miniProgramTags";
this.exportFieldList.guarantee = "guarantee";
this.exportFieldList.userId = "userId";
this.exportFieldList.instrumentName = "instrumentName";
this.exportFieldList.guaranteeEndtime = "guaranteeEndtime";
this.exportFieldList.bindingStatus = "bindingStatus";
} else {
this.exportFieldList.nickname = null;
this.exportFieldList.id = null;
this.exportFieldList.credit = null;
this.exportFieldList.expireCredit = null;
this.exportFieldList.unionid = null;
this.exportFieldList.mobile = null;
this.exportFieldList.province = null;
this.exportFieldList.city = null;
this.exportFieldList.area = null;
this.exportFieldList.birthday = null;
this.exportFieldList.devicesNum = null;
this.exportFieldList.devicesName = null;
this.exportFieldList.createTime = null;
this.exportFieldList.wecomTags = null;
this.exportFieldList.miniProgramTags = null;
this.exportFieldList.guarantee = null;
this.exportFieldList.userId = null;
this.exportFieldList.instrumentName = null;
this.exportFieldList.guaranteeEndtime = null;
this.exportFieldList.bindingStatus = null;
}
},
}

Loading…
Cancel
Save