fix 标协会员导入的bug
This commit is contained in:
+13
-10
@@ -1,7 +1,9 @@
|
||||
package com.jero.member.controller;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.stream.Collectors;
|
||||
import javax.annotation.Resource;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
@@ -13,7 +15,10 @@ import cn.hutool.core.date.DateUtil;
|
||||
import cn.hutool.core.date.format.DateParser;
|
||||
import com.jero.aspect.annotation.CompanyNameTranslate;
|
||||
import com.jero.common.api.vo.Result;
|
||||
import com.jero.common.exception.JeroBootException;
|
||||
import com.jero.common.system.api.ISysBaseAPI;
|
||||
import com.jero.common.system.query.QueryGenerator;
|
||||
import com.jero.common.system.vo.DictModel;
|
||||
import com.jero.common.system.vo.LoginUser;
|
||||
import com.jero.common.util.AuthenticationUtils;
|
||||
import com.jero.common.util.PasswordUtil;
|
||||
@@ -53,7 +58,8 @@ import com.jero.common.aspect.annotation.AutoLog;
|
||||
public class TbMemberProjectSubitemController extends JeroController<TbMemberProjectSubitem, ITbMemberProjectSubitemService> {
|
||||
@Resource
|
||||
private ITbMemberProjectSubitemService tbMemberProjectSubitemService;
|
||||
|
||||
@Resource
|
||||
private ISysBaseAPI sysBaseAPI;
|
||||
/**
|
||||
* 分页列表查询
|
||||
*/
|
||||
@@ -230,16 +236,13 @@ public class TbMemberProjectSubitemController extends JeroController<TbMemberPro
|
||||
@RequiresPermissions("safeguardStardsMember:import")
|
||||
@PostMapping(value = "/importXls")
|
||||
public Result<Object> importXls(HttpServletRequest request, TbMemberProjectSubitem tbMemberProjectSubitem) {
|
||||
String projectId = tbMemberProjectSubitem.getProjectId();
|
||||
List<Object> excelData = super.getExcelData(request, TbMemberProjectSubitemExcel.class);
|
||||
for (Object obj : excelData) {
|
||||
TbMemberProjectSubitemExcel subitemExcel = (TbMemberProjectSubitemExcel) obj;
|
||||
TbMemberProjectSubitem subitem = new TbMemberProjectSubitem();
|
||||
BeanUtils.copyProperties(subitemExcel,subitem);
|
||||
subitem.setProjectId(projectId);
|
||||
tbMemberProjectSubitemService.addExcel(subitem);
|
||||
List<Object> excelData = super.getExcelData(request, TbMemberProjectSubitemExcelImport.class);
|
||||
if (excelData.isEmpty()) {
|
||||
throw new JeroBootException("导入数据为空,请填写数据之后重新导入!");
|
||||
}
|
||||
return Result.OK();
|
||||
String projectId = tbMemberProjectSubitem.getProjectId();
|
||||
tbMemberProjectSubitemService.addExcel(projectId,excelData);
|
||||
return Result.OK("文件导入成功!");
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
+144
-53
@@ -1,4 +1,5 @@
|
||||
package com.jero.member.service;
|
||||
import java.math.RoundingMode;
|
||||
import java.util.*;
|
||||
|
||||
import cn.hutool.core.date.DateField;
|
||||
@@ -17,10 +18,12 @@ import com.jero.common.system.api.ISysBaseAPI;
|
||||
import com.jero.common.system.query.QueryGenerator;
|
||||
import com.jero.common.system.vo.DictModel;
|
||||
import com.jero.common.system.vo.LoginUser;
|
||||
import com.jero.common.util.ValidUtil;
|
||||
import com.jero.company.entity.PayCompanyManagement;
|
||||
import com.jero.company.entity.PayContactsManagement;
|
||||
import com.jero.company.service.IPayCompanyManagementService;
|
||||
import com.jero.company.service.IPayContactsManagementService;
|
||||
import com.jero.config.StaticConfig;
|
||||
import com.jero.contract.entity.PayIncomeContract;
|
||||
import com.jero.contract.entity.PayIncomeContractAssociated;
|
||||
import com.jero.contract.service.IPayIncomeContractAssociatedService;
|
||||
@@ -33,9 +36,7 @@ import com.jero.meeting.mapper.PayMeetingSituationMapper;
|
||||
import com.jero.member.entity.TbMemberProjectSubitem;
|
||||
import com.jero.member.enums.MemberStatusEnum;
|
||||
import com.jero.member.mapper.TbMemberProjectSubitemMapper;
|
||||
import com.jero.member.vo.CopyMemberVO;
|
||||
import com.jero.member.vo.EditMemberBenefitsVO;
|
||||
import com.jero.member.vo.QueryAggVO;
|
||||
import com.jero.member.vo.*;
|
||||
import com.jero.pack.entity.PayPackCompanyProject;
|
||||
import com.jero.pack.service.IPayPackCompanyProjectService;
|
||||
import com.jero.payment.entity.PayConfirmPaymentRecord;
|
||||
@@ -46,8 +47,12 @@ import com.jero.project.common.PayProjectCommon;
|
||||
import com.jero.statistics.entity.MemberLineChartMap;
|
||||
import com.jero.statistics.entity.MemberLineChartVO;
|
||||
import com.jero.statistics.entity.MemberPieChartVO;
|
||||
import com.jero.valid.group.ChargeNotice;
|
||||
import com.jero.valid.group.Contract;
|
||||
import org.apache.commons.collections.CollectionUtils;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.apache.shiro.SecurityUtils;
|
||||
import org.springframework.beans.BeanUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
@@ -171,67 +176,153 @@ public class ITbMemberProjectSubitemService extends ServiceImpl<TbMemberProjectS
|
||||
}
|
||||
}
|
||||
}
|
||||
public void addExcel(String projectId, List<Object> excelData) {
|
||||
int errorRowNum = 2;
|
||||
List<TbMemberProjectSubitem> insertList = new ArrayList<>();
|
||||
List<String> errorMessage = new ArrayList<>();
|
||||
//来款方式
|
||||
Map<String, String> paymentTypeMap = sysBaseAPI.queryDictItemsMapByCode("payment_type");
|
||||
//需要发票
|
||||
Map<String, String> invoiceTypeMap = sysBaseAPI.queryDictItemsMapByCode("invoice_type");
|
||||
//会员性质
|
||||
Map<String, String> memberNatureMap = sysBaseAPI.queryDictItemsMapByCode("member_nature");
|
||||
List<String> companyNameList = new ArrayList<>();
|
||||
for (Object obj : excelData) {
|
||||
errorRowNum += 1;
|
||||
TbMemberProjectSubitemExcelImport subitemExcel = (TbMemberProjectSubitemExcelImport) obj;
|
||||
TbMemberProjectSubitem subitem = new TbMemberProjectSubitem();
|
||||
errorMessage.addAll(ValidUtil.validateReturnListWithNum(subitemExcel,errorRowNum));
|
||||
|
||||
String companyName = subitemExcel.getCompanyId();
|
||||
PayCompanyManagement companyManagement = companyManagementService.getCompanyByName(companyName);
|
||||
if (companyManagement == null){
|
||||
errorMessage.add("第" + errorRowNum + "行:" + "会员单位不存在");
|
||||
}else if(companyNameList.contains(companyName)){
|
||||
errorMessage.add("第" + errorRowNum + "行:" + "会员单位重复");
|
||||
} else {
|
||||
companyNameList.add(companyManagement.getCompanyName());
|
||||
subitem.setCompanyName(companyManagement.getCompanyName());
|
||||
subitem.setCompanyId(companyManagement.getId());
|
||||
}
|
||||
if (companyManagement != null){
|
||||
String companyId = companyManagement.getId();
|
||||
LambdaQueryWrapper<TbMemberProjectSubitem> wrapper = new LambdaQueryWrapper<>();
|
||||
wrapper.eq(TbMemberProjectSubitem::getProjectId, projectId);
|
||||
wrapper.eq(TbMemberProjectSubitem::getCompanyId, companyId);
|
||||
int count = this.count(wrapper);
|
||||
if (count > 0) {
|
||||
errorMessage.add("第" + errorRowNum + "行:" + "会员单位已经存在");
|
||||
}
|
||||
|
||||
String liaisonManId = subitemExcel.getLiaisonManId();
|
||||
PayContactsManagement liaisonMan = payContactsManagementService.checkByCompanyIdAndName(liaisonManId, companyId);
|
||||
if (liaisonMan == null){
|
||||
errorMessage.add("第" + errorRowNum + "行:" + "企业联系人不存在");
|
||||
}else {
|
||||
subitem.setLiaisonManId(liaisonMan.getId());
|
||||
}
|
||||
|
||||
String postContactId = subitemExcel.getPostContactId();
|
||||
PayContactsManagement postContact = payContactsManagementService.checkByCompanyIdAndName(postContactId, companyId);
|
||||
if (postContact == null){
|
||||
errorMessage.add("第" + errorRowNum + "行:" + "邮寄联系人不存在");
|
||||
}else {
|
||||
subitem.setPostContactId(postContact.getId());
|
||||
}
|
||||
}
|
||||
|
||||
//会员性质
|
||||
String memberNature = subitemExcel.getMemberNature();
|
||||
if (!memberNatureMap.containsKey(memberNature)){
|
||||
errorMessage.add("第" + errorRowNum + "行:" + "会员性质不存在");
|
||||
}else {
|
||||
int memberNatureInt = Integer.parseInt(memberNatureMap.get(memberNature));
|
||||
subitem.setMemberNature(memberNatureInt);
|
||||
}
|
||||
|
||||
//待确收金额
|
||||
String amountReceivable = subitemExcel.getAmountReceivable();
|
||||
subitem.setAmountReceivable(new BigDecimal(amountReceivable));
|
||||
|
||||
//预估到账日期
|
||||
String estimatedArrivalDate = subitemExcel.getEstimatedArrivalDate();
|
||||
try {
|
||||
subitem.setEstimatedArrivalDate(DateUtil.parseDate(estimatedArrivalDate));
|
||||
}catch (Exception e){
|
||||
log.error("error",e);
|
||||
}
|
||||
|
||||
|
||||
String paymentMethod = subitemExcel.getPaymentMethod();
|
||||
if (!paymentTypeMap.containsKey(paymentMethod)){
|
||||
errorMessage.add("第" + errorRowNum + "行:" + "来款方式不存在");
|
||||
}else {
|
||||
int paymentMethodInt = Integer.parseInt(paymentTypeMap.get(paymentMethod));
|
||||
subitem.setPaymentMethod(paymentMethodInt);
|
||||
|
||||
if (Objects.equals(paymentMethodInt, PayProjectCommon.CHARGE_WAY2)) {
|
||||
errorMessage.addAll(ValidUtil.validateReturnListWithNum(subitemExcel,errorRowNum, Contract.class));
|
||||
String contractNum = subitemExcel.getContractNum();
|
||||
subitem.setContractNum(contractNum);
|
||||
// 合同编号验证
|
||||
LambdaQueryWrapper<PayIncomeContract> queryPayIncomeContract = new LambdaQueryWrapper<>();
|
||||
queryPayIncomeContract.eq(PayIncomeContract::getContractNum,contractNum);
|
||||
queryPayIncomeContract.eq(PayIncomeContract::getSignedCompanyId,subitemExcel.getCompanyId());
|
||||
List<PayIncomeContract> listPayIncomeContract = payIncomeContractService.list(queryPayIncomeContract);
|
||||
if(CollectionUtils.isEmpty(listPayIncomeContract)){
|
||||
errorMessage.add("第" + errorRowNum + "行:合同号不存在");
|
||||
}
|
||||
}
|
||||
if (Objects.equals(paymentMethodInt, PayProjectCommon.CHARGE_WAY3)) {
|
||||
errorMessage.addAll(ValidUtil.validateReturnListWithNum(subitemExcel,errorRowNum, ChargeNotice.class));
|
||||
String chargeNoticeNo = subitemExcel.getChargeNoticeNo();
|
||||
subitem.setChargeNoticeNo(chargeNoticeNo);
|
||||
}
|
||||
}
|
||||
String invoiceRequirements = subitemExcel.getInvoiceRequirements();
|
||||
if (!invoiceTypeMap.containsKey(invoiceRequirements)){
|
||||
errorMessage.add("第" + errorRowNum + "行:" + "需要发票不存在");
|
||||
}else {
|
||||
int invoiceRequirementsInt = Integer.parseInt(invoiceTypeMap.get(invoiceRequirements));
|
||||
subitem.setInvoiceRequirements(invoiceRequirementsInt);
|
||||
}
|
||||
//备注
|
||||
String remark = subitemExcel.getRemark();
|
||||
subitem.setRemark(remark);
|
||||
|
||||
subitem.setProjectId(projectId);
|
||||
insertList.add(subitem);
|
||||
}
|
||||
if (!errorMessage.isEmpty()) {
|
||||
StringBuilder msg = new StringBuilder();
|
||||
for (String s : errorMessage) {
|
||||
msg.append(s).append(",请修改!<br/>");
|
||||
}
|
||||
throw new JeroBootException(msg.toString());
|
||||
}
|
||||
|
||||
for (TbMemberProjectSubitem subitem : insertList) {
|
||||
tbMemberProjectSubitemService.addExcel(subitem);
|
||||
}
|
||||
}
|
||||
|
||||
public void addExcel(TbMemberProjectSubitem tbMemberProjectSubitem) {
|
||||
setDefaultCreateValue(tbMemberProjectSubitem);
|
||||
|
||||
String companyId = tbMemberProjectSubitem.getCompanyId();
|
||||
PayCompanyManagement companyManagement = companyManagementService.getById(companyId);
|
||||
if (companyManagement == null){
|
||||
throw new JeroBootException("单位不存在");
|
||||
}
|
||||
tbMemberProjectSubitem.setCompanyName(companyManagement.getCompanyName());
|
||||
|
||||
String liaisonManId = tbMemberProjectSubitem.getLiaisonManId();
|
||||
PayContactsManagement liaisonMan = payContactsManagementService.checkByCompanyIdAndName(liaisonManId, companyId);
|
||||
if (liaisonMan == null){
|
||||
throw new JeroBootException("企业联系人不存在");
|
||||
}else {
|
||||
tbMemberProjectSubitem.setLiaisonManId(liaisonMan.getId());
|
||||
}
|
||||
|
||||
String postContactId = tbMemberProjectSubitem.getPostContactId();
|
||||
PayContactsManagement postContact = payContactsManagementService.checkByCompanyIdAndName(postContactId, companyId);
|
||||
if (postContact == null){
|
||||
throw new JeroBootException("邮寄联系人不存在");
|
||||
}else {
|
||||
tbMemberProjectSubitem.setPostContactId(postContact.getId());
|
||||
}
|
||||
|
||||
String projectId = tbMemberProjectSubitem.getProjectId();
|
||||
LambdaQueryWrapper<TbMemberProjectSubitem> wrapper = new LambdaQueryWrapper<>();
|
||||
wrapper.eq(TbMemberProjectSubitem::getProjectId, projectId);
|
||||
wrapper.eq(TbMemberProjectSubitem::getCompanyId, companyId);
|
||||
//wrapper.ne()
|
||||
int count = this.count(wrapper);
|
||||
if (count > 0) {
|
||||
throw new JeroBootException("会员单位已经存在");
|
||||
}
|
||||
if (Objects.isNull(tbMemberProjectSubitem.getAmountReceivable())) {
|
||||
throw new JeroBootException("待确收金额不能为空");
|
||||
}
|
||||
Integer paymentMethod = tbMemberProjectSubitem.getPaymentMethod();
|
||||
if (paymentMethod == null){
|
||||
throw new JeroBootException("来款方式不能为空");
|
||||
}
|
||||
|
||||
if (Objects.equals(paymentMethod, PayProjectCommon.CHARGE_WAY2)) {
|
||||
if (StringUtils.isBlank(tbMemberProjectSubitem.getContractNum())) {
|
||||
throw new JeroBootException("合同号不能为空");
|
||||
}
|
||||
}
|
||||
if (Objects.equals(paymentMethod, PayProjectCommon.CHARGE_WAY3)) {
|
||||
if (Objects.isNull(tbMemberProjectSubitem.getChargeNoticeNo())) {
|
||||
throw new JeroBootException("收费通知号不能为空");
|
||||
}
|
||||
}
|
||||
|
||||
String liaisonManId = tbMemberProjectSubitem.getLiaisonManId();
|
||||
//赋值会员编号
|
||||
TbMemberProjectSubitem takeEffectInfo = getTakeEffectInfo(companyId);
|
||||
if (takeEffectInfo!=null){
|
||||
tbMemberProjectSubitem.setMemberNo(takeEffectInfo.getMemberNo());
|
||||
}
|
||||
//默认税率
|
||||
BigDecimal amountReceivable = tbMemberProjectSubitem.getAmountReceivable();
|
||||
tbMemberProjectSubitem.setTaxRate(StaticConfig.TAX_RATE);
|
||||
BigDecimal noTaxAmount = amountReceivable.divide(StaticConfig.TAX_RATE_CALCULATE, 2, RoundingMode.HALF_UP);
|
||||
BigDecimal tax = amountReceivable.subtract(noTaxAmount);
|
||||
tbMemberProjectSubitem.setNoTaxAmount(noTaxAmount);
|
||||
tbMemberProjectSubitem.setTax(tax);
|
||||
save(tbMemberProjectSubitem);
|
||||
|
||||
// 来款方式为合同,校验合同编号
|
||||
|
||||
+2
-2
@@ -77,8 +77,8 @@ public class TbMemberProjectSubitemExcel {
|
||||
private String chargeNoticeNo;
|
||||
|
||||
/**合同编号*/
|
||||
@Excel(name = "合同编号", width = 15)
|
||||
@ApiModelProperty(value = "合同编号")
|
||||
@Excel(name = "合同号", width = 15)
|
||||
@ApiModelProperty(value = "合同号")
|
||||
private String contractNum;
|
||||
|
||||
@Excel(name = "备注", width = 15)
|
||||
|
||||
+100
@@ -0,0 +1,100 @@
|
||||
package com.jero.member.vo;
|
||||
|
||||
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.math.BigDecimal;
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* @Description: 标协会员项目成员表
|
||||
* @Author: jero-boot
|
||||
* @Date: 2021-09-01
|
||||
* @Version: V1.0
|
||||
*/
|
||||
@Data
|
||||
public class TbMemberProjectSubitemExcelImport {
|
||||
|
||||
/**会员单位*/
|
||||
@ApiModelProperty(value = "会员单位")
|
||||
@Excel(name = "会员单位", width = 15)
|
||||
@NotBlank(message = "会员单位不能为空")
|
||||
@Size(max = 50, message = "会员单位最大为50字符")
|
||||
@Dict(dictTable = "pay_company_management", dicText = "company_name", dicCode = "id")
|
||||
private String companyId;
|
||||
|
||||
/**会员性质(1-副理事单位,2-理事单位,3-会员单位)*/
|
||||
@Excel(name = "会员性质", width = 15)
|
||||
@Dict(dicCode = "member_nature")
|
||||
@NotBlank(message = "会员性质不能为空")
|
||||
@ApiModelProperty(value = "会员性质(1-副理事单位,2-理事单位,3-会员单位)")
|
||||
private String memberNature;
|
||||
|
||||
/**会员联系人*/
|
||||
@ApiModelProperty(value = "企业联系人")
|
||||
@Excel(name = "企业联系人", width = 15)
|
||||
@NotBlank(message = "企业联系人不能为空")
|
||||
@Size(max = 50, message = "企业联系人最大为50字符")
|
||||
@Dict(dictTable = "pay_contacts_management", dicText = "name", dicCode = "id")
|
||||
private String liaisonManId;
|
||||
|
||||
@ApiModelProperty(value = "邮寄联系人id")
|
||||
@Excel(name = "邮寄联系人", width = 15)
|
||||
@NotBlank(message = "邮寄联系人不能为空")
|
||||
@Size(max = 50, message = "邮寄联系人最大为50字符")
|
||||
private String postContactId;
|
||||
|
||||
/**
|
||||
* 待确收金额
|
||||
*/
|
||||
@Excel(name = "待确收金额", width = 15)
|
||||
@ApiModelProperty(value = "待确收金额")
|
||||
@NotBlank(message = "待确收金额不能为空")
|
||||
@Pattern(regexp = "^[0-9]{1,10}(\\.[0-9]{1,2})?$",message = "待确收金额格式错误")
|
||||
private String amountReceivable;
|
||||
|
||||
/**预估到账日期*/
|
||||
@ApiModelProperty(value = "预估到账日期")
|
||||
@NotBlank(message = "预估到账日期不能为空")
|
||||
@Pattern(regexp = "^\\d{4}-\\d{1,2}-\\d{1,2}$",message = "预估到账日期格式错误")
|
||||
@Excel(name = "预估到账日期", width = 15)
|
||||
private String estimatedArrivalDate;
|
||||
|
||||
/**需要发票*/
|
||||
@Excel(name = "需要发票", width = 15)
|
||||
@ApiModelProperty(value = "需要发票")
|
||||
@NotBlank(message = "需要发票不能为空")
|
||||
@Dict(dicCode = "invoice_type")
|
||||
private String invoiceRequirements;
|
||||
|
||||
/**缴费方式*/
|
||||
@Excel(name = "来款方式", width = 15)
|
||||
@Dict(dicCode = "payment_type")
|
||||
private String paymentMethod;
|
||||
|
||||
/**收费通知号*/
|
||||
@Excel(name = "收费通知号", width = 15)
|
||||
@ApiModelProperty(value = "收费通知号")
|
||||
@NotBlank(message = "收费通知号不能为空", groups = ChargeNotice.class)
|
||||
@Size(max = 50, message = "收费通知号最大为50字符", groups = ChargeNotice.class)
|
||||
private String chargeNoticeNo;
|
||||
|
||||
/**合同编号*/
|
||||
@Excel(name = "合同号", width = 15)
|
||||
@ApiModelProperty(value = "合同号")
|
||||
@NotBlank(message = "合同号不能为空", groups = Contract.class)
|
||||
@Size(max = 50, message = "合同号最大为50字符", groups = Contract.class)
|
||||
private String contractNum;
|
||||
|
||||
@Excel(name = "备注", width = 15)
|
||||
@ApiModelProperty(value = "备注")
|
||||
@Size(max = 200, message = "备注最大为200个字符")
|
||||
private String remark;
|
||||
}
|
||||
Reference in New Issue
Block a user