diff --git a/jero-boot-base/jero-boot-base-core/src/main/java/com/jero/common/system/base/controller/JeroController.java b/jero-boot-base/jero-boot-base-core/src/main/java/com/jero/common/system/base/controller/JeroController.java index 959b6d62..603b1185 100644 --- a/jero-boot-base/jero-boot-base-core/src/main/java/com/jero/common/system/base/controller/JeroController.java +++ b/jero-boot-base/jero-boot-base-core/src/main/java/com/jero/common/system/base/controller/JeroController.java @@ -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> { * @param request * @return */ - protected List getExcelData(HttpServletRequest request, Class clazz) { + protected List getExcelData(HttpServletRequest request, Class clazz) { MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request; Map fileMap = multipartRequest.getFileMap(); for (Map.Entry entity : fileMap.entrySet()) { @@ -207,6 +208,11 @@ public class JeroController> { 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()); diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/member/controller/PayMemberProjectSubitemController.java b/jero-boot-incoming-payment/src/main/java/com/jero/member/controller/PayMemberProjectSubitemController.java index 06429304..4a0e9411 100644 --- a/jero-boot-incoming-payment/src/main/java/com/jero/member/controller/PayMemberProjectSubitemController.java +++ b/jero-boot-incoming-payment/src/main/java/com/jero/member/controller/PayMemberProjectSubitemController.java @@ -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 importExcel(HttpServletRequest request, HttpServletResponse response) { - return super.importExcel(request, response, PayMemberProjectSubitem.class); + List excelData = super.getExcelData(request, PayMemberProjectSubitemExcel.class); + if (excelData.isEmpty()){ + throw new JeroBootException("导入数据为空,请填写数据之后重新导入!"); + } + int errorRowNum = 2; + List errorMessage = new ArrayList<>(); + List 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导入失败,错误信息为
"+errorMessage); + } + if (memberProjectSubitemList.isEmpty()) { + throw new JeroBootException("检测到的导入数据为空,请上传正确格式的文件"); + } + for (PayMemberProjectSubitem projectSubitem : memberProjectSubitemList) { + add(projectSubitem); + } + return Result.OK("文件导入成功!数据行数:" + memberProjectSubitemList.size()); } } diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/member/entity/PayMemberProjectSubitem.java b/jero-boot-incoming-payment/src/main/java/com/jero/member/entity/PayMemberProjectSubitem.java index 8fd65ba4..c60efa24 100644 --- a/jero-boot-incoming-payment/src/main/java/com/jero/member/entity/PayMemberProjectSubitem.java +++ b/jero-boot-incoming-payment/src/main/java/com/jero/member/entity/PayMemberProjectSubitem.java @@ -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; diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/member/service/IPayMemberProjectSubitemService.java b/jero-boot-incoming-payment/src/main/java/com/jero/member/service/IPayMemberProjectSubitemService.java index 13d36e26..3160cafc 100644 --- a/jero-boot-incoming-payment/src/main/java/com/jero/member/service/IPayMemberProjectSubitemService.java +++ b/jero-boot-incoming-payment/src/main/java/com/jero/member/service/IPayMemberProjectSubitemService.java @@ -28,6 +28,12 @@ public interface IPayMemberProjectSubitemService extends IService implements IPayMemberProjectSubitemService { + @Resource + private IPayCompanyManagementService companyManagementService; + + @Resource + private IPayContactsManagementService contactsManagementService; + @Resource private IPayCompanyManagementTemporaryService companyManagementTemporaryService; @@ -56,6 +66,13 @@ public class PayPayMemberProjectSubitemServiceImpl extends ServiceImpl