update 会员项目导入导出

This commit is contained in:
lijiarao
2021-08-31 18:48:09 +08:00
parent 6394cfa758
commit 63fae80b38
7 changed files with 306 additions and 44 deletions
@@ -10,6 +10,7 @@ import com.jero.common.api.vo.Result;
import com.jero.common.system.query.QueryGenerator;
import com.jero.common.system.vo.LoginUser;
import com.jero.common.util.oConvertUtils;
import org.jeecgframework.poi.excel.ExcelImportCheckUtil;
import org.jeecgframework.poi.excel.ExcelImportUtil;
import org.jeecgframework.poi.excel.def.NormalExcelConstants;
import org.jeecgframework.poi.excel.entity.ExportParams;
@@ -187,7 +188,7 @@ public class JeroController<T, S extends IService<T>> {
* @param request
* @return
*/
protected List<T> getExcelData(HttpServletRequest request, Class<T> clazz) {
protected List<Object> getExcelData(HttpServletRequest request, Class<?> clazz) {
MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
Map<String, MultipartFile> fileMap = multipartRequest.getFileMap();
for (Map.Entry<String, MultipartFile> entity : fileMap.entrySet()) {
@@ -207,6 +208,11 @@ public class JeroController<T, S extends IService<T>> {
params.setTitleRows(1);
params.setHeadRows(1);
try {
//导入Excel格式校验,看匹配的字段文本概率
Boolean t = ExcelImportCheckUtil.check(file.getInputStream(), clazz, params);
if(!t){
throw new JeroBootException("导入Excel校验失败 ");
}
return ExcelImportUtil.importExcel(file.getInputStream(), clazz, params);
} catch (Exception e) {
throw new JeroBootException("文件导入失败:" + e.getMessage());
@@ -1,11 +1,13 @@
package com.jero.member.controller;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.jero.common.api.vo.Result;
import com.jero.common.exception.JeroBootException;
import com.jero.common.system.query.QueryGenerator;
import com.jero.common.util.ValidUtil;
import com.jero.member.entity.PayMemberProjectSubitem;
@@ -13,9 +15,10 @@ import com.jero.member.service.IPayMemberProjectSubitemService;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.jero.member.vo.PayMemberProjectSubitemExcel;
import lombok.extern.slf4j.Slf4j;
import com.jero.common.system.base.controller.JeroController;
import org.springframework.validation.annotation.Validated;
import org.springframework.beans.BeanUtils;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.servlet.ModelAndView;
import io.swagger.annotations.Api;
@@ -133,7 +136,7 @@ public class PayMemberProjectSubitemController extends JeroController<PayMemberP
}
/**
* 导出excel
* 导出excel模板
*/
@RequestMapping(value = "/exportTemplate")
public ModelAndView exportTemplate() {
@@ -145,7 +148,38 @@ public class PayMemberProjectSubitemController extends JeroController<PayMemberP
*/
@RequestMapping(value = "/importExcel", method = RequestMethod.POST)
public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
return super.importExcel(request, response, PayMemberProjectSubitem.class);
List<Object> excelData = super.getExcelData(request, PayMemberProjectSubitemExcel.class);
if (excelData.isEmpty()){
throw new JeroBootException("导入数据为空,请填写数据之后重新导入!");
}
int errorRowNum = 2;
List<String> errorMessage = new ArrayList<>();
List<PayMemberProjectSubitem> memberProjectSubitemList = new ArrayList<>();
for (Object obj :excelData) {
//复制属性
PayMemberProjectSubitemExcel projectSubitemExcel = (PayMemberProjectSubitemExcel)obj;
PayMemberProjectSubitem projectSubitem = new PayMemberProjectSubitem();
BeanUtils.copyProperties(projectSubitemExcel,projectSubitem);
errorRowNum += 1;
try {
ValidUtil.validate(projectSubitem);
//memberProjectSubitemService.validMemberProjectSubitem(projectSubitem);
memberProjectSubitemList.add(projectSubitem);
}catch (JeroBootException e){
errorMessage.add(""+errorRowNum+"行:"+e.getMessage());
}
}
if (!errorMessage.isEmpty()) {
throw new JeroBootException("excel导入失败,错误信息为</br>"+errorMessage);
}
if (memberProjectSubitemList.isEmpty()) {
throw new JeroBootException("检测到的导入数据为空,请上传正确格式的文件");
}
for (PayMemberProjectSubitem projectSubitem : memberProjectSubitemList) {
add(projectSubitem);
}
return Result.OK("文件导入成功!数据行数:" + memberProjectSubitemList.size());
}
}
@@ -75,19 +75,19 @@ public class PayMemberProjectSubitem implements Serializable {
/**
* 会员项目id
*/
@Excel(name = "会员项目名称", width = 15,dictTable = "pay_member_project",dicText = "project_name",dicCode = "id")
@Excel(name = "会员项目名称", width = 15, dictTable = "pay_member_project", dicText = "project_name", dicCode = "id")
@ApiModelProperty(value = "会员项目id")
@NotBlank(message = "会员项目不能为空")
@Size(max = 50,message = "会员项目最大为50字符")
@Size(max = 50, message = "会员项目最大为50字符")
private String projectId;
/**
* 企业id
*/
@Excel(name = "企业名称", width = 15,dictTable = "pay_company_management_temporary",dicText = "company_name",dicCode = "id")
@Excel(name = "企业名称", width = 15, dictTable = "pay_company_management_temporary", dicText = "company_name", dicCode = "id",orderNum = "1")
@ApiModelProperty(value = "企业id")
@NotBlank(message = "企业不能为空")
@Size(max = 50,message = "企业最大为50字符")
@Size(max = 50, message = "企业最大为50字符")
private String companyId;
/**
@@ -99,10 +99,10 @@ public class PayMemberProjectSubitem implements Serializable {
/**
* 企业联系人id
*/
@Excel(name = "企业联系人名称", width = 15,dictTable = "pay_contacts_management_temporary",dicText = "name",dicCode = "id")
@Excel(name = "企业联系人名称", width = 15, dictTable = "pay_contacts_management_temporary", dicText = "name", dicCode = "id",orderNum = "2")
@ApiModelProperty(value = "企业联系人id")
@NotBlank(message = "企业联系人不能为空")
@Size(max = 50,message = "企业联系人最大为50字符")
@Size(max = 50, message = "企业联系人最大为50字符")
private String companyContactId;
/**
@@ -114,7 +114,7 @@ public class PayMemberProjectSubitem implements Serializable {
/**
* 邮寄联系人id
*/
@Excel(name = "邮寄联系人姓名", width = 15,dictTable = "pay_contacts_management_temporary",dicText = "name",dicCode = "id")
@Excel(name = "邮寄联系人姓名", width = 15, dictTable = "pay_contacts_management_temporary", dicText = "name", dicCode = "id",orderNum = "3")
@ApiModelProperty(value = "邮寄联系人id")
@NotBlank(message = "邮寄联系人不能为空")
private String postContactId;
@@ -128,24 +128,24 @@ public class PayMemberProjectSubitem implements Serializable {
/**
* 应收金额
*/
@Excel(name = "应收金额", width = 15)
@Excel(name = "应收金额", width = 15,orderNum = "4")
@ApiModelProperty(value = "应收金额")
@NotNull(message = "应收金额不能为空")
@Max(value = 999999999,message = "应收金额格式错误")
@Max(value = 999999999, message = "应收金额格式错误")
private Integer amountReceivable;
/**
* 实收金额
*/
@Excel(name = "实收金额", width = 15)
//@Excel(name = "实收金额", width = 15,orderNum = "5")
@ApiModelProperty(value = "实收金额")
@Max(value = 999999999,message = "应收金额格式错误")
@Max(value = 999999999, message = "应收金额格式错误")
private Integer paidAmount;
/**
* 来款方式
*/
@Excel(name = "来款方式", width = 15)
@Excel(name = "来款方式", width = 15, dicCode = "payment_type",orderNum = "7")
@ApiModelProperty(value = "来款方式(2:合同,3:收费通知)")
@Dict(dicCode = "payment_type")
@Min(2)
@@ -155,33 +155,31 @@ public class PayMemberProjectSubitem implements Serializable {
/**
* 收费通知号
*/
@Excel(name = "收费通知号", width = 15)
@Excel(name = "收费通知号", width = 15,orderNum = "8")
@ApiModelProperty(value = "收费通知号")
@NotBlank(message = "收费通知号不能为空",groups = ChargeNotice.class)
@Size(max = 50,message = "收费通知号最大为50字符",groups = ChargeNotice.class)
@NotBlank(message = "收费通知号不能为空", groups = ChargeNotice.class)
@Size(max = 50, message = "收费通知号最大为50字符", groups = ChargeNotice.class)
private String chargeNoticeNo;
/**
* 收费通知文件id
*/
@ApiModelProperty(value = "收费通知文件id")
@NotBlank(message = "收费通知文件id不能为空",groups = ChargeNotice.class)
@Size(max = 50,message = "收费通知文件id最大为50字符",groups = ChargeNotice.class)
private String chargeNoticeFileId;
/**
* 合同号
*/
@Excel(name = "合同号", width = 15)
@Excel(name = "合同号", width = 15,orderNum = "9")
@ApiModelProperty(value = "合同号")
@NotBlank(message = "合同号不能为空",groups = Contract.class)
@Size(max = 50,message = "合同号最大为50字符",groups = Contract.class)
@NotBlank(message = "合同号不能为空", groups = Contract.class)
@Size(max = 50, message = "合同号最大为50字符", groups = Contract.class)
private String contractNo;
/**
* 备注
*/
@Excel(name = "备注", width = 15)
@Excel(name = "备注", width = 15,orderNum = "10")
@ApiModelProperty(value = "备注")
@Size(max = 200, message = "备注最大为200个字符")
private String remark;
@@ -189,7 +187,6 @@ public class PayMemberProjectSubitem implements Serializable {
/**
* 打包
*/
@Excel(name = "打包", width = 15)
@ApiModelProperty(value = "打包")
@Dict(dicCode = "yn")
private Integer pack;
@@ -197,7 +194,7 @@ public class PayMemberProjectSubitem implements Serializable {
/**
* 需要发票
*/
@Excel(name = "需要发票", width = 15)
@Excel(name = "需要发票", width = 15, dicCode = "invoice_type",orderNum = "6")
@ApiModelProperty(value = "需要发票")
@Dict(dicCode = "invoice_type")
@Min(0)
@@ -207,14 +204,12 @@ public class PayMemberProjectSubitem implements Serializable {
/**
* 到账
*/
@Excel(name = "到账", width = 15)
@ApiModelProperty(value = "到账")
private Integer inAccount;
/**
* 开票
*/
@Excel(name = "开票", width = 15)
@ApiModelProperty(value = "开票")
@Dict(dicCode = "yn")
private Integer makeInvoice;
@@ -222,7 +217,6 @@ public class PayMemberProjectSubitem implements Serializable {
/**
* 邮寄
*/
@Excel(name = "邮寄", width = 15)
@ApiModelProperty(value = "邮寄")
@Dict(dicCode = "yn")
private Integer mail;
@@ -28,6 +28,12 @@ public interface IPayMemberProjectSubitemService extends IService<PayMemberProje
*/
void editById(PayMemberProjectSubitem payMemberProjectSubitem);
/**
* 校验会员项目成员
* @param payMemberProjectSubitem 会员项目成员
*/
void validMemberProjectSubitem(PayMemberProjectSubitem payMemberProjectSubitem);
/**
* 通过id删除
*
@@ -1,7 +1,11 @@
package com.jero.member.service.impl;
import java.util.Date;
import com.jero.common.exception.JeroBootException;
import com.jero.common.util.ValidUtil;
import com.jero.company.entity.PayContactsManagement;
import com.jero.company.service.IPayCompanyManagementService;
import com.jero.company.service.IPayContactsManagementService;
import com.jero.companyTemporary.entity.PayCompanyManagementTemporary;
import com.jero.companyTemporary.entity.PayContactsManagementTemporary;
import com.jero.companyTemporary.service.IPayCompanyManagementTemporaryService;
@@ -25,6 +29,12 @@ import javax.annotation.Resource;
*/
@Service
public class PayPayMemberProjectSubitemServiceImpl extends ServiceImpl<PayMemberProjectSubitemMapper, PayMemberProjectSubitem> implements IPayMemberProjectSubitemService {
@Resource
private IPayCompanyManagementService companyManagementService;
@Resource
private IPayContactsManagementService contactsManagementService;
@Resource
private IPayCompanyManagementTemporaryService companyManagementTemporaryService;
@@ -56,6 +66,13 @@ public class PayPayMemberProjectSubitemServiceImpl extends ServiceImpl<PayMember
public void editById(PayMemberProjectSubitem payMemberProjectSubitem) {
String id = payMemberProjectSubitem.getId();
PayMemberProjectSubitem payMemberProjectSubitem1 = getById(id);
//无法更改状态
payMemberProjectSubitem.setPack(payMemberProjectSubitem1.getPack());
payMemberProjectSubitem.setNeedInvoice(payMemberProjectSubitem1.getNeedInvoice());
payMemberProjectSubitem.setInAccount(payMemberProjectSubitem1.getInAccount());
payMemberProjectSubitem.setMakeInvoice(payMemberProjectSubitem1.getMakeInvoice());
payMemberProjectSubitem.setMail(payMemberProjectSubitem1.getMail());
//如果原始企业id和现在企业id不同,就删除临时表数据
String companyId = payMemberProjectSubitem.getCompanyId();
if (!payMemberProjectSubitem1.getCompanyId().equals(companyId)) {
@@ -79,7 +96,8 @@ public class PayPayMemberProjectSubitemServiceImpl extends ServiceImpl<PayMember
* 校验会员项目成员
* @param payMemberProjectSubitem 会员项目成员
*/
private void validMemberProjectSubitem(PayMemberProjectSubitem payMemberProjectSubitem) {
@Override
public void validMemberProjectSubitem(PayMemberProjectSubitem payMemberProjectSubitem) {
//校验企业
String companyId = payMemberProjectSubitem.getCompanyId();
PayCompanyManagementTemporary companyManagementTemporary = companyManagementTemporaryService.insertCompanyManagementTemporary(companyId);
@@ -88,10 +106,11 @@ public class PayPayMemberProjectSubitemServiceImpl extends ServiceImpl<PayMember
//校验企业联系人
String companyContactId = payMemberProjectSubitem.getCompanyContactId();
PayContactsManagementTemporary contactsManagementTemporary = contactsManagementTemporaryService.insertContactsManagementTemporary(companyContactId);
PayContactsManagement contactsManagement = contactsManagementService.getById(companyContactId);
//校验是否是选择的企业的联系人
String companyId1 = contactsManagementTemporary.getCompanyId();
String companyId1 = contactsManagement.getCompanyId();
if (companyId1.equals(companyId)){
PayContactsManagementTemporary contactsManagementTemporary = contactsManagementTemporaryService.insertContactsManagementTemporary(companyContactId);
payMemberProjectSubitem.setCompanyContactId(contactsManagementTemporary.getId());
payMemberProjectSubitem.setCompanyContactName(contactsManagementTemporary.getName());
}else {
@@ -99,11 +118,12 @@ public class PayPayMemberProjectSubitemServiceImpl extends ServiceImpl<PayMember
}
//校验邮寄联系人
String postContactId = payMemberProjectSubitem.getPostContactId();
PayContactsManagementTemporary contactsManagementTemporary1 = contactsManagementTemporaryService.insertContactsManagementTemporary(postContactId);
PayContactsManagement postContact = contactsManagementService.getById(postContactId);
//校验是否是选择的企业的联系人
String companyId2 = contactsManagementTemporary1.getCompanyId();
String companyId2 = postContact.getCompanyId();
if (companyId2.equals(companyId)){
payMemberProjectSubitem.setCompanyContactId(contactsManagementTemporary1.getId());
PayContactsManagementTemporary contactsManagementTemporary1 = contactsManagementTemporaryService.insertContactsManagementTemporary(postContactId);
payMemberProjectSubitem.setPostContactId(contactsManagementTemporary1.getId());
payMemberProjectSubitem.setPostContactName(contactsManagementTemporary1.getName());
}else {
throw new JeroBootException("邮寄联系人不是所选企业的企业联系人");
@@ -1,8 +0,0 @@
package com.jero.member.vo;
/**
* @author liJiaRao
* @date 2021-08-26 10:12
*/
public class AVO {
}
@@ -0,0 +1,210 @@
package com.jero.member.vo;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.jero.common.aspect.annotation.Dict;
import com.jero.valid.group.ChargeNotice;
import com.jero.valid.group.Contract;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.jeecgframework.poi.excel.annotation.Excel;
import org.springframework.format.annotation.DateTimeFormat;
import javax.validation.constraints.*;
import java.util.Date;
/**
* @author liJiaRao
* @date 2021-08-26 10:12
*/
@Data
public class PayMemberProjectSubitemExcel {
private static final long serialVersionUID = 1L;
/**
* id
*/
@TableId(type = IdType.ASSIGN_ID)
@ApiModelProperty(value = "id")
private String id;
/**
* 创建人
*/
@ApiModelProperty(value = "创建人")
private String createBy;
/**
* 创建日期
*/
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@ApiModelProperty(value = "创建日期")
private Date createTime;
/**
* 更新人
*/
@ApiModelProperty(value = "更新人")
private String updateBy;
/**
* 更新日期
*/
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@ApiModelProperty(value = "更新日期")
private Date updateTime;
/**
* 会员项目id
*/
@Excel(name = "会员项目名称", width = 15, dictTable = "pay_member_project", dicText = "project_name", dicCode = "id")
@ApiModelProperty(value = "会员项目id")
@NotBlank(message = "会员项目不能为空")
@Size(max = 50, message = "会员项目最大为50字符")
private String projectId;
/**
* 企业id
*/
@Excel(name = "企业名称", width = 15, dictTable = "pay_company_management", dicText = "company_name", dicCode = "id",orderNum = "1")
@ApiModelProperty(value = "企业id")
@NotBlank(message = "企业不能为空")
@Size(max = 50, message = "企业最大为50字符")
private String companyId;
/**
* 企业名称
*/
@ApiModelProperty(value = "企业名称")
private String companyName;
/**
* 企业联系人id
*/
@Excel(name = "企业联系人名称", width = 15, dictTable = "pay_contacts_management", dicText = "name", dicCode = "id",orderNum = "2")
@ApiModelProperty(value = "企业联系人id")
@NotBlank(message = "企业联系人不能为空")
@Size(max = 50, message = "企业联系人最大为50字符")
private String companyContactId;
/**
* 企业联系人名称
*/
@ApiModelProperty(value = "企业联系人名称")
private String companyContactName;
/**
* 邮寄联系人id
*/
@Excel(name = "邮寄联系人姓名", width = 15, dictTable = "pay_contacts_management", dicText = "name", dicCode = "id",orderNum = "3")
@ApiModelProperty(value = "邮寄联系人id")
@NotBlank(message = "邮寄联系人不能为空")
private String postContactId;
/**
* 邮寄联系人姓名
*/
@ApiModelProperty(value = "邮寄联系人姓名")
private String postContactName;
/**
* 应收金额
*/
@Excel(name = "应收金额", width = 15,orderNum = "4")
@ApiModelProperty(value = "应收金额")
@NotNull(message = "应收金额不能为空")
@Max(value = 999999999, message = "应收金额格式错误")
private Integer amountReceivable;
/**
* 实收金额
*/
//@Excel(name = "实收金额", width = 15,orderNum = "5")
@ApiModelProperty(value = "实收金额")
@Max(value = 999999999, message = "应收金额格式错误")
private Integer paidAmount;
/**
* 来款方式
*/
@Excel(name = "来款方式", width = 15, dicCode = "payment_type",orderNum = "7")
@ApiModelProperty(value = "来款方式(2:合同,3:收费通知)")
@Dict(dicCode = "payment_type")
@Min(2)
@Max(3)
private Integer paymentMethod;
/**
* 收费通知号
*/
@Excel(name = "收费通知号", width = 15,orderNum = "8")
@ApiModelProperty(value = "收费通知号")
@NotBlank(message = "收费通知号不能为空", groups = ChargeNotice.class)
@Size(max = 50, message = "收费通知号最大为50字符", groups = ChargeNotice.class)
private String chargeNoticeNo;
/**
* 收费通知文件id
*/
@ApiModelProperty(value = "收费通知文件id")
private String chargeNoticeFileId;
/**
* 合同号
*/
@Excel(name = "合同号", width = 15,orderNum = "9")
@ApiModelProperty(value = "合同号")
@NotBlank(message = "合同号不能为空", groups = Contract.class)
@Size(max = 50, message = "合同号最大为50字符", groups = Contract.class)
private String contractNo;
/**
* 备注
*/
@Excel(name = "备注", width = 15,orderNum = "10")
@ApiModelProperty(value = "备注")
@Size(max = 200, message = "备注最大为200个字符")
private String remark;
/**
* 打包
*/
@ApiModelProperty(value = "打包")
@Dict(dicCode = "yn")
private Integer pack;
/**
* 需要发票
*/
@Excel(name = "需要发票", width = 15, dicCode = "invoice_type",orderNum = "6")
@ApiModelProperty(value = "需要发票")
@Dict(dicCode = "invoice_type")
@Min(0)
@Max(2)
private Integer needInvoice;
/**
* 到账
*/
@ApiModelProperty(value = "到账")
private Integer inAccount;
/**
* 开票
*/
@ApiModelProperty(value = "开票")
@Dict(dicCode = "yn")
private Integer makeInvoice;
/**
* 邮寄
*/
@ApiModelProperty(value = "邮寄")
@Dict(dicCode = "yn")
private Integer mail;
}