From aef509ead0e1ae82b9864fed6037005de24f8e7a Mon Sep 17 00:00:00 2001 From: lijiarao Date: Wed, 6 Mar 2024 14:56:41 +0800 Subject: [PATCH] =?UTF-8?q?add=20=E6=A0=87=E5=8D=8F=E4=BC=9A=E5=91=98?= =?UTF-8?q?=E9=A1=B9=E7=9B=AE=E6=88=90=E5=91=98=20=E5=A2=9E=E5=88=A0?= =?UTF-8?q?=E6=94=B9=E6=9F=A5=EF=BC=8C=E6=8F=90=E7=A5=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../TbMemberProjectSubitemController.java | 61 +++++++++ .../jero/member/entity/TbMemberProject.java | 4 +- .../member/entity/TbMemberProjectSubitem.java | 52 ++++--- .../ITbMemberProjectSubitemService.java | 2 + .../impl/TbMemberProjectServiceImpl.java | 24 +++- .../TbMemberProjectSubitemServiceImpl.java | 39 ++++++ .../vo/TbMemberProjectSubitemEditVO.java | 128 ++++++++++++++++++ .../impl/PayPaymentRecordServiceImpl.java | 24 ++-- 8 files changed, 299 insertions(+), 35 deletions(-) create mode 100644 jero-boot-incoming-payment/src/main/java/com/jero/member/vo/TbMemberProjectSubitemEditVO.java 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 68651280..021e601e 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 @@ -11,15 +11,18 @@ import com.jero.common.api.vo.Result; import com.jero.common.system.query.QueryGenerator; import com.jero.common.util.AuthenticationUtils; import com.jero.common.util.PasswordUtil; +import com.jero.member.entity.TbMemberProject; import com.jero.member.entity.TbMemberProjectSubitem; import com.jero.member.service.ITbMemberProjectSubitemService; 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.PaymentInfo; +import com.jero.member.vo.TbMemberProjectSubitemEditVO; import lombok.extern.slf4j.Slf4j; import com.jero.common.system.base.controller.JeroController; import org.apache.shiro.authz.annotation.RequiresPermissions; +import org.springframework.beans.BeanUtils; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import org.springframework.web.servlet.ModelAndView; @@ -63,6 +66,64 @@ public class TbMemberProjectSubitemController extends JeroController add(@Validated @RequestBody TbMemberProjectSubitem tbMemberProjectSubitem) { + tbMemberProjectSubitemService.add(tbMemberProjectSubitem); + return Result.OK("添加成功!"); + } + + /** + * 编辑 + */ + //@RequiresPermissions(":add") + @AutoLog(value = "标协会员项目成员-编辑") + @ApiOperation(value = "标协会员项目成员-编辑", notes = "标协会员项目成员-编辑") + @PostMapping(value = "/edit") + public Result edit(@Validated @RequestBody TbMemberProjectSubitemEditVO editVO) { + TbMemberProjectSubitem tbMemberProjectSubitem = new TbMemberProjectSubitem(); + BeanUtils.copyProperties(editVO,tbMemberProjectSubitem); + tbMemberProjectSubitemService.editById(tbMemberProjectSubitem); + return Result.OK("编辑成功!"); + } + + /** + * 删除 + */ + //@RequiresPermissions(":add") + @AutoLog(value = "标协会员项目成员-删除") + @ApiOperation(value = "标协会员项目成员-删除", notes = "标协会员项目成员-删除") + @GetMapping(value = "/delete") + public Result delete(@RequestParam(name = "id") String id) { + tbMemberProjectSubitemService.deleteById(id); + return Result.OK("删除成功!"); + } + + /** + * 批量删除 + */ + //@RequiresPermissions(":add") + @AutoLog(value = "标协会员项目成员-批量删除") + @ApiOperation(value = "标协会员项目成员-批量删除", notes = "标协会员项目成员-批量删除") + @GetMapping(value = "/deleteBatch") + public Result deleteBatch(@RequestParam(name = "ids") String ids) { + tbMemberProjectSubitemService.deleteByIds(Arrays.asList(ids.split(","))); + return Result.OK("批量删除成功!"); + } + + @AutoLog(value = "标协会员项目成员-提票") + @ApiOperation(value = "标协会员项目成员-提票") + @GetMapping(value = "/ticketCollection") + public Result ticketCollection(@RequestParam(name = "id") String id) { + tbMemberProjectSubitemService.ticketCollection(id); + return Result.OK("提票成功!"); + } + /** * 导出excel */ diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/member/entity/TbMemberProject.java b/jero-boot-incoming-payment/src/main/java/com/jero/member/entity/TbMemberProject.java index 14d8da9c..240075dd 100644 --- a/jero-boot-incoming-payment/src/main/java/com/jero/member/entity/TbMemberProject.java +++ b/jero-boot-incoming-payment/src/main/java/com/jero/member/entity/TbMemberProject.java @@ -69,10 +69,12 @@ public class TbMemberProject implements Serializable { private String year; /**负责人id*/ // @Excel(name = "负责人id", width = 15) + @Excel(name = "负责人", width = 15, dictTable = "sys_user",dicText = "realname",dicCode = "id") @ApiModelProperty(value = "负责人id") + @Dict(dictTable = "sys_user",dicText = "realname",dicCode = "id") private String directorId; /**负责人*/ - @Excel(name = "负责人", width = 15) + @ApiModelProperty(value = "负责人") private String directorName; 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 83d48568..ca3b4269 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 @@ -21,10 +21,7 @@ import io.swagger.annotations.ApiModelProperty; import lombok.EqualsAndHashCode; import lombok.experimental.Accessors; -import javax.validation.constraints.DecimalMax; -import javax.validation.constraints.Max; -import javax.validation.constraints.Min; -import javax.validation.constraints.NotNull; +import javax.validation.constraints.*; /** * @Description: 标协会员项目成员表 @@ -75,12 +72,13 @@ public class TbMemberProjectSubitem implements Serializable { @ApiModelProperty(value = "会员编号") private String memberNo; - /**公司id*/ - @ApiModelProperty(value = "公司id") + /**会员单位*/ + @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; /**会员单位*/ - @Excel(name = "会员单位", width = 15) @ApiModelProperty(value = "会员单位") private String companyName; @@ -98,31 +96,32 @@ public class TbMemberProjectSubitem implements Serializable { /**联系人id*/ @ApiModelProperty(value = "联系人id") + @Excel(name = "联系人", width = 15, dictTable = "sys_user",dicText = "realname", dicCode = "id") + @Dict(dictTable = "sys_user",dicText = "realname", dicCode = "id") private String liaisonManId; /**联系人*/ - @Excel(name = "联系人", width = 15) @ApiModelProperty(value = "联系人") private String liaisonMan; /**邮箱*/ - @Excel(name = "邮箱", width = 20,exportConvert = true) + //@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") + //@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 = "注册时间") @@ -150,31 +149,46 @@ public class TbMemberProjectSubitem implements Serializable { @JsonFormat(shape = JsonFormat.Shape.STRING) private BigDecimal confirmAmount; + /**预估到账日期*/ + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd") + @DateTimeFormat(pattern="yyyy-MM-dd") + @ApiModelProperty(value = "预估到账日期") + @Excel(name = "预估到账日期", width = 15) + private String estimatedArrivalDate; + /**打包*/ @Excel(name = "打包", width = 15,dicCode = "yn") @ApiModelProperty(value = "打包") + @Dict(dicCode = "yn") private Integer pack; /**需要发票*/ @Excel(name = "需要发票", width = 15,dicCode = "invoice_type") @ApiModelProperty(value = "需要发票") + @Dict(dicCode = "invoice_type") private Integer invoiceRequirements; /**到账*/ - @Excel(name = "到账", width = 15,dicCode = "account_type") @ApiModelProperty(value = "到账") private Integer inAccount; /**开票*/ - @Excel(name = "开票", width = 15,dicCode = "make_invoice_type") @ApiModelProperty(value = "开票") private Integer makeInvoice; + @ApiModelProperty(value = "确认收入((1:全额(对勾),0:0(X),2:>0 && <总金额(半满标志)))") + private Integer affirmIncome; + /**邮寄*/ - @Excel(name = "邮寄", width = 15,dicCode = "mail_type") @ApiModelProperty(value = "邮寄") private Integer mail; + /**邮寄*/ + @ApiModelProperty(value = "提票") + @Excel(name = "提票", width = 15,dicCode = "yn") + @Dict(dicCode = "yn") + private Integer ticketCollection; + /**来款用途(字典表)*/ @ApiModelProperty(value = "来款用途(字典表)") private String chargeUse; @@ -262,10 +276,6 @@ public class TbMemberProjectSubitem implements Serializable { @ApiModelProperty(value = "联行号") private String linkBankNumber; - - @ApiModelProperty(value = "确认收入((1:全额(对勾),0:0(X),2:>0 && <总金额(半满标志)))") - private Integer affirmIncome; - /**确认金额税额*/ @ApiModelProperty(value = "确认金额税额") @DecimalMax(value = "9999999999.99",message = "确认金额税额") @@ -339,6 +349,10 @@ public class TbMemberProjectSubitem implements Serializable { @ApiModelProperty(value = "管理员创建标识") private Integer adminAddFlag; + /**合同编号*/ + @ApiModelProperty(value = "合同编号") + private String contractNum; + /**收费通知号*/ @ApiModelProperty(value = "收费通知号") private String chargeNoticeNo; 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 53b5c400..f1993ef3 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 @@ -76,4 +76,6 @@ public interface ITbMemberProjectSubitemService extends IService queryListByCompany(Page page, String companyId, String projectType,Integer pack,String packYear); IPage pageList(Page page, QueryWrapper queryWrapper); + + void ticketCollection(String id); } diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/member/service/impl/TbMemberProjectServiceImpl.java b/jero-boot-incoming-payment/src/main/java/com/jero/member/service/impl/TbMemberProjectServiceImpl.java index d48b9052..399860d4 100644 --- a/jero-boot-incoming-payment/src/main/java/com/jero/member/service/impl/TbMemberProjectServiceImpl.java +++ b/jero-boot-incoming-payment/src/main/java/com/jero/member/service/impl/TbMemberProjectServiceImpl.java @@ -54,14 +54,34 @@ public class TbMemberProjectServiceImpl extends ServiceImpl wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(TbMemberProject::getYear, year); + wrapper.ne(id != null, TbMemberProject::getId, id); + int count = count(wrapper); + if (count > 0) { + throw new JeroBootException("已经存在" + year + "年标协会员项目"); + } + } /** * 更新 */ @Override public void editById(TbMemberProject tbMemberProject) { + //一年只能有一个项目 + String year = tbMemberProject.getYear(); + String id = tbMemberProject.getId(); + check(year, id); saveOrUpdate(tbMemberProject); } diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/member/service/impl/TbMemberProjectSubitemServiceImpl.java b/jero-boot-incoming-payment/src/main/java/com/jero/member/service/impl/TbMemberProjectSubitemServiceImpl.java index 15f22907..5f0bcfa4 100644 --- a/jero-boot-incoming-payment/src/main/java/com/jero/member/service/impl/TbMemberProjectSubitemServiceImpl.java +++ b/jero-boot-incoming-payment/src/main/java/com/jero/member/service/impl/TbMemberProjectSubitemServiceImpl.java @@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.jero.common.exception.JeroBootException; import com.jero.common.service.RolePermissionService; import com.jero.common.system.vo.LoginUser; import com.jero.contract.entity.PayIncomeContractAssociated; @@ -22,12 +23,15 @@ import com.jero.payment.entity.PayConfirmPaymentRecord; 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.temporary.service.IPayCompanyManagementTemporaryService; import com.jero.temporary.service.IPayContactsManagementTemporaryService; import org.apache.shiro.SecurityUtils; +import org.hibernate.type.YesNoType; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import java.math.BigDecimal; import java.util.List; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; @@ -35,6 +39,8 @@ import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; +import static freemarker.template.utility.NullArgumentException.check; + /** * @Description: 标协会员项目成员表 * @Author: jero-boot @@ -75,9 +81,34 @@ public class TbMemberProjectSubitemServiceImpl 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("会员单位已经存在"); + } + } + /** * 更新 */ @@ -169,4 +200,12 @@ public class TbMemberProjectSubitemServiceImpl extends ServiceImpl updateWrapper = new LambdaUpdateWrapper<>(); + updateWrapper.eq(TbMemberProjectSubitem::getId,id); + updateWrapper.set(TbMemberProjectSubitem::getTicketCollection, PayProjectCommon.YES); + this.update(updateWrapper); + } } diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/member/vo/TbMemberProjectSubitemEditVO.java b/jero-boot-incoming-payment/src/main/java/com/jero/member/vo/TbMemberProjectSubitemEditVO.java new file mode 100644 index 00000000..135649e2 --- /dev/null +++ b/jero-boot-incoming-payment/src/main/java/com/jero/member/vo/TbMemberProjectSubitemEditVO.java @@ -0,0 +1,128 @@ +package com.jero.member.vo; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.jero.common.aspect.annotation.Dict; +import com.jero.common.util.PasswordUtil; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; +import org.jeecgframework.poi.excel.annotation.Excel; +import org.springframework.format.annotation.DateTimeFormat; + +import javax.validation.constraints.DecimalMax; +import javax.validation.constraints.NotNull; +import javax.validation.constraints.Size; +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.Date; + +/** + * @Description: 标协会员项目成员表 + * @Author: jero-boot + * @Date: 2021-09-01 + * @Version: V1.0 + */ +@Data +public class TbMemberProjectSubitemEditVO implements Serializable { + private static final long serialVersionUID = 1L; + + /**id*/ + @TableId(type = IdType.ASSIGN_ID) + @ApiModelProperty(value = "id") + private String id; + + /**项目id*/ + @ApiModelProperty(value = "项目id") + private String projectId; + + /**会员编号*/ + @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; + + /**会员性质(1-副理事单位,2-理事单位,3-会员单位)*/ + @Excel(name = "会员性质(1-副理事单位,2-理事单位,3-会员单位)", width = 15,dicCode = "member_nature") + @Dict(dicCode = "member_nature") + @ApiModelProperty(value = "会员性质(1-副理事单位,2-理事单位,3-会员单位)") + private Integer memberNature; + + /**联系人id*/ + @ApiModelProperty(value = "联系人id") + @Excel(name = "联系人", width = 15, dictTable = "sys_user",dicText = "realname", dicCode = "id") + @Dict(dictTable = "sys_user",dicText = "realname", dicCode = "id") + private String liaisonManId; + + @ApiModelProperty(value = "邮寄联系人id") + private String postContactId; + + /** + * 待确收金额 + */ + @Excel(name = "待确收金额", width = 15) + @ApiModelProperty(value = "待确收金额") + @NotNull(message = "待确收金额不能为空") + @DecimalMax(value = "9999999999.99", message = "待确收金额格式错误") + 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; + + /**预估到账日期*/ + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd") + @DateTimeFormat(pattern="yyyy-MM-dd") + @ApiModelProperty(value = "预估到账日期") + @Excel(name = "预估到账日期", width = 15) + private String 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 = "合同编号") + @Size(max = 50,message = "合同编号长度不能大于50个字符") + private String contractNum; + + /**收费通知号*/ + @ApiModelProperty(value = "收费通知号") + private String chargeNoticeNo; + /**收费通知文件id*/ + @ApiModelProperty(value = "收费通知文件id") + private String chargeNoticeId; + + @ApiModelProperty(value = "备注") + private String remark; +} diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/payment/service/impl/PayPaymentRecordServiceImpl.java b/jero-boot-incoming-payment/src/main/java/com/jero/payment/service/impl/PayPaymentRecordServiceImpl.java index ff91cac4..3bd88cc1 100644 --- a/jero-boot-incoming-payment/src/main/java/com/jero/payment/service/impl/PayPaymentRecordServiceImpl.java +++ b/jero-boot-incoming-payment/src/main/java/com/jero/payment/service/impl/PayPaymentRecordServiceImpl.java @@ -1184,7 +1184,17 @@ public class PayPaymentRecordServiceImpl extends ServiceImpl pageList=payPaymentRecordMapper.mainListExportXls(payCommonProject, projectType,paymentDate,paidInvoicStatus); - pageList.forEach(p-> { + List exportList = null; + + // 过滤选中数据 + String selections = request.getParameter("selections"); + if (oConvertUtils.isNotEmpty(selections)) { + List selectionList = Arrays.asList(selections.split(",")); + exportList = pageList.stream().filter(item -> selectionList.contains(getId(item))).collect(Collectors.toList()); + } else { + exportList = pageList; + } + exportList.forEach(p-> { if (!Objects.isNull(p.getChargeUse())) { p.setChargeUse_dictText(sysBaseAPI.translateDict("payment_charge_use", String.valueOf(p.getChargeUse()))); } @@ -1199,18 +1209,6 @@ public class PayPaymentRecordServiceImpl extends ServiceImpl exportList = null; - - // 过滤选中数据 - String selections = request.getParameter("selections"); - if (oConvertUtils.isNotEmpty(selections)) { - List selectionList = Arrays.asList(selections.split(",")); - exportList = pageList.stream().filter(item -> selectionList.contains(getId(item))).collect(Collectors.toList()); - } else { - exportList = pageList; - } - // Step.3 AutoPoi 导出Excel ModelAndView mv = new ModelAndView(new JeecgEntityExcelView()); mv.addObject(NormalExcelConstants.FILE_NAME, title); //此处设置的filename无效 ,前端会重更新设置一下