From 0660fee76537da00f729aeb1614da11a9f211a2d Mon Sep 17 00:00:00 2001 From: lijiarao Date: Tue, 26 Mar 2024 15:45:48 +0800 Subject: [PATCH] =?UTF-8?q?add=20=E6=A0=87=E5=8D=8F=E4=BC=9A=E5=91=98?= =?UTF-8?q?=E6=88=90=E5=91=98=E5=AF=BC=E5=87=BA=E6=A8=A1=E6=9D=BF=EF=BC=8C?= =?UTF-8?q?=E5=AF=BC=E5=85=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../IPayContactsManagementService.java | 4 + .../PayContactsManagementServiceImpl.java | 17 ++ .../TbMemberProjectSubitemController.java | 44 +++- .../member/entity/TbMemberProjectSubitem.java | 153 ++++++------ .../mapper/TbMemberProjectSubitemMapper.java | 2 + .../ITbMemberProjectSubitemService.java | 217 ++++++++++++++++-- .../vo/TbMemberProjectSubitemExcel.java | 87 +++++++ 7 files changed, 427 insertions(+), 97 deletions(-) create mode 100644 jero-boot-incoming-payment/src/main/java/com/jero/member/vo/TbMemberProjectSubitemExcel.java diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/company/service/IPayContactsManagementService.java b/jero-boot-incoming-payment/src/main/java/com/jero/company/service/IPayContactsManagementService.java index a9d448db..0bde0375 100644 --- a/jero-boot-incoming-payment/src/main/java/com/jero/company/service/IPayContactsManagementService.java +++ b/jero-boot-incoming-payment/src/main/java/com/jero/company/service/IPayContactsManagementService.java @@ -81,4 +81,8 @@ public interface IPayContactsManagementService extends IService query = new LambdaQueryWrapper<>(); + query.eq(PayContactsManagement::getCompanyId,companyId); + query.eq(PayContactsManagement::getId,id); + PayContactsManagement payContactsManagement = baseMapper.selectOne(query); + return payContactsManagement; + } + @Override + public PayContactsManagement checkByCompanyIdAndName(String name, String companyId) { + LambdaQueryWrapper query = new LambdaQueryWrapper<>(); + query.eq(PayContactsManagement::getCompanyId,companyId); + query.eq(PayContactsManagement::getName,name); + PayContactsManagement payContactsManagement = baseMapper.selectOne(query); + return payContactsManagement; + } } diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/member/controller/TbMemberProjectSubitemController.java b/jero-boot-incoming-payment/src/main/java/com/jero/member/controller/TbMemberProjectSubitemController.java index 2e3faf15..ab7a6035 100644 --- a/jero-boot-incoming-payment/src/main/java/com/jero/member/controller/TbMemberProjectSubitemController.java +++ b/jero-boot-incoming-payment/src/main/java/com/jero/member/controller/TbMemberProjectSubitemController.java @@ -2,6 +2,7 @@ package com.jero.member.controller; import java.util.Arrays; import java.util.List; +import java.util.stream.Collectors; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @@ -216,6 +217,24 @@ public class TbMemberProjectSubitemController extends JeroController importXls(HttpServletRequest request, TbMemberProjectSubitem tbMemberProjectSubitem) { + String projectId = tbMemberProjectSubitem.getProjectId(); + List 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); + } + return Result.OK(); + } + /** * 导出excel */ @@ -223,9 +242,28 @@ public class TbMemberProjectSubitemController extends JeroController queryWrapper = QueryGenerator.initQueryWrapper(tbMemberProjectSubitem, request.getParameterMap()); - Page page = new Page<>(-1, -1); - IPage pageList = tbMemberProjectSubitemService.pageList(page, queryWrapper); - return super.exportListXls(pageList.getRecords(), TbMemberProjectSubitem.class, "标协会员项目成员表"); + + List pageList = tbMemberProjectSubitemService.pageList(queryWrapper); + List exportList; + // 过滤选中数据 + String selections = request.getParameter("selections"); + if (oConvertUtils.isNotEmpty(selections)) { + List selectionList = Arrays.asList(selections.split(",")); + exportList = pageList.stream().filter(item -> selectionList.contains(item.getId())).collect(Collectors.toList()); + } else { + exportList = pageList; + } + + return super.exportListXls(exportList, TbMemberProjectSubitem.class, "标协会员项目成员表"); } + /** + * 导出excel模板 + */ + @RequiresPermissions("safeguardStardsMember:export") + @GetMapping(value = "/exportTemplate") + public ModelAndView exportTemplate() { + return super.exportTemplate(TbMemberProjectSubitemExcel.class, "标协会员项目成员表"); + } + } diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/member/entity/TbMemberProjectSubitem.java b/jero-boot-incoming-payment/src/main/java/com/jero/member/entity/TbMemberProjectSubitem.java index 5c73c819..74c32669 100644 --- a/jero-boot-incoming-payment/src/main/java/com/jero/member/entity/TbMemberProjectSubitem.java +++ b/jero-boot-incoming-payment/src/main/java/com/jero/member/entity/TbMemberProjectSubitem.java @@ -37,96 +37,102 @@ import javax.validation.constraints.*; public class TbMemberProjectSubitem implements Serializable { private static final long serialVersionUID = 1L; - /**id*/ - @TableId(type = IdType.ASSIGN_ID) + /**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") + /**创建日期*/ + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") @ApiModelProperty(value = "创建日期") - private java.util.Date createTime; + private Date createTime; - /**更新人*/ + /**更新人*/ @ApiModelProperty(value = "更新人") private String updateBy; - /**更新日期*/ - @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") + /**更新日期*/ + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") @ApiModelProperty(value = "更新日期") - private java.util.Date updateTime; + private Date updateTime; - /**项目id*/ - @Excel(name = "项目名称", width = 15 ,dictTable = "tb_member_project", dicText = "project_name", dicCode = "id") + /**项目id*/ + @Excel(name = "项目名称", width = 15 ,dictTable = "tb_member_project", dicText = "project_name", dicCode = "id") @Dict(dictTable = "tb_member_project", dicText = "project_name", dicCode = "id") @ApiModelProperty(value = "项目id") private String projectId; - /**会员编号*/ - @Excel(name = "会员编号", width = 20) + /**会员编号*/ + @Excel(name = "会员编号", width = 20) @ApiModelProperty(value = "会员编号") private String memberNo; - /**会员单位*/ + /**会员单位*/ @ApiModelProperty(value = "会员单位") @Excel(name = "会员单位", width = 15, dictTable = "pay_company_management", dicText = "company_name", dicCode = "id") @Dict(dictTable = "pay_company_management", dicText = "company_name", dicCode = "id") private String companyId; - /**会员单位*/ + /**会员单位*/ @ApiModelProperty(value = "会员单位") private String companyName; /**会员性质(1-副理事单位,2-理事单位,3-会员单位)*/ - @Excel(name = "会员性质(1-副理事单位,2-理事单位,3-会员单位)", width = 15,dicCode = "member_nature") + @Excel(name = "会员性质", width = 15,dicCode = "member_nature") @Dict(dicCode = "member_nature") @ApiModelProperty(value = "会员性质(1-副理事单位,2-理事单位,3-会员单位)") private Integer memberNature; - /**会员类型*/ - @Excel(name = "会员类型", width = 15,dicCode = "member_type") + /**会员类型*/ @ApiModelProperty(value = "会员类型") @Dict(dicCode = "member_type") private Integer memberType; /**会员联系人*/ - @ApiModelProperty(value = "会员联系人") - @Excel(name = "会员联系人", width = 15, dictTable = "pay_contacts_management", dicText = "name", dicCode = "id") + @ApiModelProperty(value = "企业联系人") + @Excel(name = "企业联系人", width = 15, dictTable = "pay_contacts_management", dicText = "name", dicCode = "id") @Dict(dictTable = "pay_contacts_management", dicText = "name", dicCode = "id") private String liaisonManId; - /**联系人*/ + /**联系人*/ @ApiModelProperty(value = "联系人") private String liaisonMan; - /**邮箱*/ - //@Excel(name = "邮箱", width = 20,exportConvert = true) + @ApiModelProperty(value = "邮寄企业id") + private String postCompanyId; + + @ApiModelProperty(value = "邮寄联系人id") + @Excel(name = "邮寄联系人", width = 15, dictTable = "pay_contacts_management", dicText = "name", dicCode = "id") + private String postContactId; + + /**邮箱*/ + //@Excel(name = "邮箱", width = 20,exportConvert = true) @ApiModelProperty(value = "邮箱") private String email; - /**手机*/ - //@Excel(name = "手机", width = 15,exportConvert = true) + /**手机*/ + //@Excel(name = "手机", width = 15,exportConvert = true) @ApiModelProperty(value = "手机") private String mobile; - /**会员状态*/ - //@Excel(name = "会员状态", width = 15, dicCode = "member_status") + /**会员状态*/ + //@Excel(name = "会员状态", width = 15, dicCode = "member_status") @ApiModelProperty(value = "会员状态") @Dict(dicCode = "member_status") private Integer memberStatus; - /**注册时间*/ - //@Excel(name = "注册时间", width = 20, format = "yyyy-MM-dd HH:mm:ss") - @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") + /**注册时间*/ + //@Excel(name = "注册时间", width = 20, format = "yyyy-MM-dd HH:mm:ss") + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") @ApiModelProperty(value = "注册时间") - private java.util.Date registerTime; + private Date registerTime; /** * 待确收金额 @@ -138,10 +144,26 @@ public class TbMemberProjectSubitem implements Serializable { @JsonFormat(shape = JsonFormat.Shape.STRING) private BigDecimal amountReceivable; + /**税率*/ + @ApiModelProperty(value = "税率") + @JsonFormat(shape = JsonFormat.Shape.STRING) + @Dict(dicCode = "rate") + private BigDecimal taxRate; + + /**税额*/ + @ApiModelProperty(value = "税额") + @JsonFormat(shape = JsonFormat.Shape.STRING) + private BigDecimal tax; + + /**未税金额*/ + @ApiModelProperty(value = "未税金额") + @JsonFormat(shape = JsonFormat.Shape.STRING) + private BigDecimal noTaxAmount; + /** * 实收金额 */ - @Excel(name = "实收金额", width = 15) + //@Excel(name = "实收金额", width = 15) @ApiModelProperty(value = "实收金额") @DecimalMax(value = "9999999999.99", message = "实收金额格式错误") private BigDecimal paidAmount; @@ -155,39 +177,39 @@ public class TbMemberProjectSubitem implements Serializable { @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd") @DateTimeFormat(pattern="yyyy-MM-dd") @ApiModelProperty(value = "预估到账日期") - @Excel(name = "预估到账日期", width = 15) + @Excel(name = "预估到账日期", width = 15, format = "yyyy-MM-dd") private Date estimatedArrivalDate; - /**打包*/ - @Excel(name = "打包", width = 15,dicCode = "yn") - @ApiModelProperty(value = "打包") - @Dict(dicCode = "yn") - private Integer pack; - - /**需要发票*/ - @Excel(name = "需要发票", width = 15,dicCode = "invoice_type") + /**需要发票*/ + @Excel(name = "需要发票", width = 15,dicCode = "invoice_type") @ApiModelProperty(value = "需要发票") @Dict(dicCode = "invoice_type") private Integer invoiceRequirements; - /**到账*/ + /**打包*/ + //@Excel(name = "打包", width = 15,dicCode = "yn") + @ApiModelProperty(value = "打包") + @Dict(dicCode = "yn") + private Integer pack; + + /**到账*/ @ApiModelProperty(value = "到账") private Integer inAccount; - /**开票*/ + /**开票*/ @ApiModelProperty(value = "开票") private Integer makeInvoice; @ApiModelProperty(value = "确认收入((1:全额(对勾),0:0(X),2:>0 && <总金额(半满标志)))") private Integer affirmIncome; - /**邮寄*/ + /**邮寄*/ @ApiModelProperty(value = "邮寄") private Integer mail; - /**邮寄*/ + /**提票"*/ @ApiModelProperty(value = "提票") - @Excel(name = "提票", width = 15,dicCode = "yn") + //@Excel(name = "提票", width = 15,dicCode = "yn") @Dict(dicCode = "yn") private Integer ticketCollection; @@ -196,7 +218,7 @@ public class TbMemberProjectSubitem implements Serializable { private String chargeUse; /**缴费方式*/ - @Excel(name = "缴费方式", width = 15,dicCode = "meeting_pay_type") + @Excel(name = "来款方式", width = 15,dicCode = "meeting_pay_type") @Dict(dicCode = "meeting_pay_type") private Integer paymentMethod; @@ -205,7 +227,7 @@ public class TbMemberProjectSubitem implements Serializable { private String tbPaymentId; /**开票金额*/ - @Excel(name = "开票金额", width = 15) + //@Excel(name = "开票金额", width = 15) @ApiModelProperty(value = "开票金额") @DecimalMax(value = "9999999999.99",message = "开票金额格式错误") @JsonFormat(shape = JsonFormat.Shape.STRING) @@ -250,7 +272,6 @@ public class TbMemberProjectSubitem implements Serializable { private Integer projectType; /**缴费记录*/ - @Excel(name = "缴费记录", width = 15) @ApiModelProperty(value = "缴费记录") private String paymentRecord; @@ -325,44 +346,26 @@ public class TbMemberProjectSubitem implements Serializable { @ApiModelProperty(value = "其他缴费金额") private BigDecimal otherPaymentAmount; - /**税率*/ - @ApiModelProperty(value = "税率") - @JsonFormat(shape = JsonFormat.Shape.STRING) - @Dict(dicCode = "rate") - private BigDecimal taxRate; - - /**税额*/ - @ApiModelProperty(value = "税额") - @JsonFormat(shape = JsonFormat.Shape.STRING) - private BigDecimal tax; - - /**未税金额*/ - @ApiModelProperty(value = "未税金额") - @JsonFormat(shape = JsonFormat.Shape.STRING) - private BigDecimal noTaxAmount; - - @ApiModelProperty(value = "邮寄企业id") - private String postCompanyId; - - @ApiModelProperty(value = "邮寄联系人id") - private String postContactId; /** * 管理员创建标识 */ @ApiModelProperty(value = "管理员创建标识") private Integer adminAddFlag; - /**合同编号*/ - @ApiModelProperty(value = "合同编号") - private String contractNum; - /**收费通知号*/ + @Excel(name = "收费通知号", width = 15) @ApiModelProperty(value = "收费通知号") private String chargeNoticeNo; /**收费通知文件id*/ @ApiModelProperty(value = "收费通知文件id") private String chargeNoticeId; + /**合同编号*/ + @Excel(name = "合同编号", width = 15) + @ApiModelProperty(value = "合同编号") + private String contractNum; + + @Excel(name = "备注", width = 15) @ApiModelProperty(value = "备注") private String remark; diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/member/mapper/TbMemberProjectSubitemMapper.java b/jero-boot-incoming-payment/src/main/java/com/jero/member/mapper/TbMemberProjectSubitemMapper.java index dbb3cbb1..4167b1c0 100644 --- a/jero-boot-incoming-payment/src/main/java/com/jero/member/mapper/TbMemberProjectSubitemMapper.java +++ b/jero-boot-incoming-payment/src/main/java/com/jero/member/mapper/TbMemberProjectSubitemMapper.java @@ -37,6 +37,8 @@ public interface TbMemberProjectSubitemMapper extends BaseMapper pageList(Page page, @Param(Constants.WRAPPER) QueryWrapper queryWrapper); + List pageList( @Param(Constants.WRAPPER) QueryWrapper queryWrapper); + List getAllTakeEffectByCompanyId(@Param("companyId") String companyId); /** diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/member/service/ITbMemberProjectSubitemService.java b/jero-boot-incoming-payment/src/main/java/com/jero/member/service/ITbMemberProjectSubitemService.java index 1c9f04e5..95623b33 100644 --- a/jero-boot-incoming-payment/src/main/java/com/jero/member/service/ITbMemberProjectSubitemService.java +++ b/jero-boot-incoming-payment/src/main/java/com/jero/member/service/ITbMemberProjectSubitemService.java @@ -19,7 +19,10 @@ import com.jero.common.system.vo.LoginUser; import com.jero.common.util.AuthenticationUtils; import com.jero.common.util.PasswordUtil; 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.contract.entity.PayIncomeContract; import com.jero.contract.entity.PayIncomeContractAssociated; import com.jero.contract.service.IPayIncomeContractAssociatedService; import com.jero.contract.service.IPayIncomeContractService; @@ -42,10 +45,12 @@ import com.jero.payment.entity.PayPaymentRecord; import com.jero.payment.service.IPayPaymentRecordService; import com.jero.payment.service.impl.PayConfirmPaymentRecordService; import com.jero.project.common.PayProjectCommon; +import com.jero.project.entity.PayWorkingGroupSubItem; import com.jero.statistics.entity.MemberLineChartMap; import com.jero.statistics.entity.MemberLineChartVO; import com.jero.statistics.entity.MemberPieChartVO; import com.jero.temporary.service.IPayContactsManagementTemporaryService; +import org.apache.commons.lang3.StringUtils; import org.apache.shiro.SecurityUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -82,7 +87,7 @@ public class ITbMemberProjectSubitemService extends ServiceImpl 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("待确收金额不能为空"); + } + if (Objects.equals(tbMemberProjectSubitem.getPaymentMethod(), PayProjectCommon.CHARGE_WAY2)) { + if (StringUtils.isBlank(tbMemberProjectSubitem.getContractNum())) { + throw new JeroBootException("合同号不能为空"); + } + } + if (Objects.equals(tbMemberProjectSubitem.getPaymentMethod(), PayProjectCommon.CHARGE_WAY3)) { + if (Objects.isNull(tbMemberProjectSubitem.getChargeNoticeNo())) { + throw new JeroBootException("收费通知号不能为空"); + } + } + + //赋值会员编号 TbMemberProjectSubitem takeEffectInfo = getTakeEffectInfo(companyId); if (takeEffectInfo!=null){ tbMemberProjectSubitem.setMemberNo(takeEffectInfo.getMemberNo()); } save(tbMemberProjectSubitem); + + // 来款方式为合同,校验合同编号 + if (Objects.equals(tbMemberProjectSubitem.getPaymentMethod(), PayProjectCommon.CHARGE_WAY2)) { + PayIncomeContract payIncomeContract = payIncomeContractService.setPayIncomeContractAssociated(tbMemberProjectSubitem.getContractNum(), tbMemberProjectSubitem.getCompanyId(), tbMemberProjectSubitem.getId()); + if (!Objects.isNull(payIncomeContract)) { + // 合同存在 && 合同状态不为草稿,不为未通过 关联合同 + payIncomeContractService.insertPayIncomeContract(payIncomeContract, tbMemberProjectSubitem.getId(), Integer.parseInt(PayProjectCommon.PROJECT_TYPE5)); + // 关联了合同,判断合同是否打包,更新项目打包状态,添加打包 + if (Objects.equals(payIncomeContract.getPack(), PayProjectCommon.PACKAGING1)) { + payPackCompanyProjectService.setPack(tbMemberProjectSubitem.getCompanyId(), liaisonManId, payIncomeContract.getPackYear(), tbMemberProjectSubitem.getId(), PayProjectCommon.PROJECT_TYPE5, payIncomeContract.getPack()); + LambdaUpdateWrapper update = new LambdaUpdateWrapper<>(); + update.eq(TbMemberProjectSubitem::getId, tbMemberProjectSubitem.getId()); + update.set(TbMemberProjectSubitem::getPack, PayProjectCommon.PACKAGING1); + tbMemberProjectSubitemService.update(update); + } + } + } } + + 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 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("收费通知号不能为空"); + } + } + + //赋值会员编号 + TbMemberProjectSubitem takeEffectInfo = getTakeEffectInfo(companyId); + if (takeEffectInfo!=null){ + tbMemberProjectSubitem.setMemberNo(takeEffectInfo.getMemberNo()); + } + save(tbMemberProjectSubitem); + + // 来款方式为合同,校验合同编号 + if (Objects.equals(paymentMethod, PayProjectCommon.CHARGE_WAY2)) { + PayIncomeContract payIncomeContract = payIncomeContractService.setPayIncomeContractAssociated(tbMemberProjectSubitem.getContractNum(), tbMemberProjectSubitem.getCompanyId(), tbMemberProjectSubitem.getId()); + if (!Objects.isNull(payIncomeContract)) { + // 合同存在 && 合同状态不为草稿,不为未通过 关联合同 + payIncomeContractService.insertPayIncomeContract(payIncomeContract, tbMemberProjectSubitem.getId(), Integer.parseInt(PayProjectCommon.PROJECT_TYPE5)); + // 关联了合同,判断合同是否打包,更新项目打包状态,添加打包 + if (Objects.equals(payIncomeContract.getPack(), PayProjectCommon.PACKAGING1)) { + payPackCompanyProjectService.setPack(tbMemberProjectSubitem.getCompanyId(), liaisonManId, payIncomeContract.getPackYear(), tbMemberProjectSubitem.getId(), PayProjectCommon.PROJECT_TYPE5, payIncomeContract.getPack()); + LambdaUpdateWrapper update = new LambdaUpdateWrapper<>(); + update.eq(TbMemberProjectSubitem::getId, tbMemberProjectSubitem.getId()); + update.set(TbMemberProjectSubitem::getPack, PayProjectCommon.PACKAGING1); + tbMemberProjectSubitemService.update(update); + } + } + } + } + /** * 创建时默认值 */ @@ -137,25 +278,49 @@ public class ITbMemberProjectSubitemService extends ServiceImpl 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("会员单位已经存在"); - } - } - /** * 更新 */ public void editById(TbMemberProjectSubitem tbMemberProjectSubitem) { - saveOrUpdate(tbMemberProjectSubitem); + String subitemId = tbMemberProjectSubitem.getId(); + TbMemberProjectSubitem subitemOld = getById(subitemId); + String companyId = tbMemberProjectSubitem.getCompanyId(); + String companyIdOld = subitemOld.getCompanyId(); + if (!Objects.equals(companyId,companyIdOld)){ + throw new JeroBootException("会员单位不可变更"); + } + // 校验项目是否已关联合同 + PayIncomeContract payIncomeContract = payIncomeContractService.checkPayIncomeContractAssociated(subitemId); + if (!Objects.isNull(payIncomeContract)) { + if (!Objects.equals(tbMemberProjectSubitem.getPaymentMethod(), subitemOld.getPaymentMethod())) { + throw new JeroBootException("项目已关联合同,来款方式不可修改!"); + } + if (Objects.equals(subitemOld.getPaymentMethod(), PayProjectCommon.CHARGE_WAY2) && !Objects.equals(subitemOld.getContractNum(), tbMemberProjectSubitem.getContractNum())) { + throw new JeroBootException("项目已关联合同,合同编号不可修改!"); + } + } else { + PayIncomeContract payIncomeContractAdd = null; + // 来款方式为合同,校验合同编号 + if (Objects.equals(tbMemberProjectSubitem.getPaymentMethod(), PayProjectCommon.CHARGE_WAY2)) { + payIncomeContractAdd = payIncomeContractService.setPayIncomeContractAssociated(tbMemberProjectSubitem.getContractNum(), companyId, subitemId); + } + if (!Objects.isNull(payIncomeContractAdd)) { + // 合同存在 && 合同状态不为草稿,不为未通过 关联合同 + payIncomeContractService.insertPayIncomeContract(payIncomeContractAdd, subitemId, Integer.parseInt(PayProjectCommon.PROJECT_TYPE5)); + Integer pack = payIncomeContractAdd.getPack(); + if (Objects.equals(pack, PayProjectCommon.PACKAGING1)) { + tbMemberProjectSubitem.setPack(PayProjectCommon.PACKAGING1); + } + } else { + tbMemberProjectSubitem.setPack(subitemOld.getPack()); + } + // 关联了合同,判断合同是否打包,更新项目打包状态,添加打包 + if (!Objects.isNull(payIncomeContractAdd) && Objects.equals(payIncomeContractAdd.getPack(), PayProjectCommon.PACKAGING1)) { + String liaisonManId = tbMemberProjectSubitem.getLiaisonManId(); + payPackCompanyProjectService.setPack(companyId, liaisonManId, payIncomeContractAdd.getPackYear(), subitemId, PayProjectCommon.PROJECT_TYPE5, payIncomeContractAdd.getPack()); + } + } + updateById(tbMemberProjectSubitem); } /** @@ -237,6 +402,14 @@ public class ITbMemberProjectSubitemService extends ServiceImpl pageList(QueryWrapper queryWrapper) { + LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); + if (!rolePermissionService.getRolePermission("safeguardStardsMember:search")) { + queryWrapper.eq("tmp.director_id",sysUser.getId()); + } + return baseMapper.pageList(queryWrapper); + } + public void ticketCollection(String id) { LambdaUpdateWrapper updateWrapper = new LambdaUpdateWrapper<>(); updateWrapper.eq(TbMemberProjectSubitem::getId,id); @@ -347,8 +520,14 @@ public class ITbMemberProjectSubitemService extends ServiceImpl wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(TbMemberProjectSubitem::getProjectId, projectId); + wrapper.eq(TbMemberProjectSubitem::getCompanyId, memberProjectSubitem.getCompanyId()); + //wrapper.ne() + int count = this.count(wrapper); + if (count > 0) { + throw new JeroBootException("会员单位已经存在"); + } //复制成员信息生成新成员 TbMemberProjectSubitem newMemberProjectSubitem = setCopyValue(memberProjectSubitem); this.setDefaultCreateValue(newMemberProjectSubitem); diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/member/vo/TbMemberProjectSubitemExcel.java b/jero-boot-incoming-payment/src/main/java/com/jero/member/vo/TbMemberProjectSubitemExcel.java new file mode 100644 index 00000000..157083ff --- /dev/null +++ b/jero-boot-incoming-payment/src/main/java/com/jero/member/vo/TbMemberProjectSubitemExcel.java @@ -0,0 +1,87 @@ +package com.jero.member.vo; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.jero.common.aspect.annotation.Dict; +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.DecimalMax; +import javax.validation.constraints.NotNull; +import java.math.BigDecimal; +import java.util.Date; + +/** + * @Description: 标协会员项目成员表 + * @Author: jero-boot + * @Date: 2021-09-01 + * @Version: V1.0 + */ +@Data +public class TbMemberProjectSubitemExcel { + + /**会员单位*/ + @ApiModelProperty(value = "会员单位") + @Excel(name = "会员单位", width = 15, dictTable = "pay_company_management", dicText = "company_name", dicCode = "id") + @Dict(dictTable = "pay_company_management", dicText = "company_name", dicCode = "id") + private String companyId; + + /**会员性质(1-副理事单位,2-理事单位,3-会员单位)*/ + @Excel(name = "会员性质", width = 15,dicCode = "member_nature") + @Dict(dicCode = "member_nature") + @ApiModelProperty(value = "会员性质(1-副理事单位,2-理事单位,3-会员单位)") + private Integer memberNature; + + /**会员联系人*/ + @ApiModelProperty(value = "企业联系人") + @Excel(name = "企业联系人", width = 15) + @Dict(dictTable = "pay_contacts_management", dicText = "name", dicCode = "id") + private String liaisonManId; + + @ApiModelProperty(value = "邮寄联系人id") + @Excel(name = "邮寄联系人", width = 15) + private String postContactId; + + /** + * 待确收金额 + */ + @Excel(name = "待确收金额", width = 15) + @ApiModelProperty(value = "待确收金额") + @NotNull(message = "待确收金额不能为空") + @DecimalMax(value = "9999999999.99", message = "待确收金额格式错误") + @JsonFormat(shape = JsonFormat.Shape.STRING) + private BigDecimal amountReceivable; + + /**预估到账日期*/ + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd") + @DateTimeFormat(pattern="yyyy-MM-dd") + @ApiModelProperty(value = "预估到账日期") + @Excel(name = "预估到账日期", width = 15, format = "yyyy-MM-dd") + private Date estimatedArrivalDate; + + /**需要发票*/ + @Excel(name = "需要发票", width = 15,dicCode = "invoice_type") + @ApiModelProperty(value = "需要发票") + @Dict(dicCode = "invoice_type") + private Integer invoiceRequirements; + + /**缴费方式*/ + @Excel(name = "来款方式", width = 15,dicCode = "meeting_pay_type") + @Dict(dicCode = "meeting_pay_type") + private Integer paymentMethod; + + /**收费通知号*/ + @Excel(name = "收费通知号", width = 15) + @ApiModelProperty(value = "收费通知号") + private String chargeNoticeNo; + + /**合同编号*/ + @Excel(name = "合同编号", width = 15) + @ApiModelProperty(value = "合同编号") + private String contractNum; + + @Excel(name = "备注", width = 15) + @ApiModelProperty(value = "备注") + private String remark; +}