diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/company/controller/CompanyLoginController.java b/jero-boot-incoming-payment/src/main/java/com/jero/company/controller/CompanyLoginController.java index 0b242d9a..587dc098 100644 --- a/jero-boot-incoming-payment/src/main/java/com/jero/company/controller/CompanyLoginController.java +++ b/jero-boot-incoming-payment/src/main/java/com/jero/company/controller/CompanyLoginController.java @@ -23,6 +23,8 @@ import com.jero.company.vo.Jscode2sessionVO; import com.jero.config.StaticConfig; import com.jero.data.entity.PayCaseCouncilSubitem; import com.jero.data.service.IPayCaseCouncilSubitemService; +import com.jero.member.entity.TbMemberProjectSubitem; +import com.jero.member.service.ITbMemberProjectSubitemService; import com.jero.modules.base.service.BaseCommonService; import com.jero.modules.system.model.SysLoginModel; import com.jero.modules.system.service.ISysDictService; @@ -68,6 +70,8 @@ public class CompanyLoginController { private WxSecretMapper wxSecretMapper; @Value("${defaultPassword}") private String defaultPassword; + @Resource + private ITbMemberProjectSubitemService tbMemberProjectSubitemService; /** * 密码登录错误的次数前缀 */ @@ -413,13 +417,12 @@ public class CompanyLoginController { contactsManagement.setIsCouncil(1); } //判断企业角色 - QueryWrapper queryWrapper2 = new QueryWrapper<>(); - queryWrapper2.eq("id",contactsManagement.getCompanyId()); - PayCompanyManagement one = payCompanyManagementService.getOne(queryWrapper2); - if(ObjectUtils.isEmpty(one)){ - throw new JeroBootException("联系人无企业信息"); + String companyId = contactsManagement.getCompanyId(); + TbMemberProjectSubitem takeEffectInfo = tbMemberProjectSubitemService.getTakeEffectInfo(companyId); + if(takeEffectInfo != null){ + contactsManagement.setCompanyRole("2"); }else { - contactsManagement.setCompanyRole(one.getRoleCode()); + contactsManagement.setCompanyRole("1"); } // 生成token String token = JwtUtil.sign(phone, syspassword); 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 6e083d89..4b0c843b 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 @@ -9,8 +9,11 @@ import javax.servlet.http.HttpServletResponse; import com.jero.aspect.annotation.CompanyNameTranslate; 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.AuthenticationUtils; import com.jero.common.util.PasswordUtil; +import com.jero.common.util.oConvertUtils; +import com.jero.member.entity.PayMemberProjectSubitem; import com.jero.member.entity.TbMemberProject; import com.jero.member.entity.TbMemberProjectSubitem; import com.jero.member.service.ITbMemberProjectSubitemService; @@ -20,6 +23,8 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.jero.member.vo.*; import lombok.extern.slf4j.Slf4j; import com.jero.common.system.base.controller.JeroController; +import org.apache.commons.lang3.StringUtils; +import org.apache.shiro.SecurityUtils; import org.apache.shiro.authz.annotation.RequiresPermissions; import org.springframework.beans.BeanUtils; import org.springframework.validation.annotation.Validated; @@ -65,6 +70,31 @@ public class TbMemberProjectSubitemController extends JeroController> queryPageListCompany(TbMemberProjectSubitem projectSubitem, + @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo, + @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize, + HttpServletRequest req) { + LoginUser loginUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); + projectSubitem.setCompanyId(loginUser.getCompanyId()); + QueryWrapper queryWrapper = QueryGenerator.initQueryWrapper(projectSubitem, req.getParameterMap()); + String year = projectSubitem.getYear(); + if (StringUtils.isNotBlank(year)) { + queryWrapper.eq("pmp.particular_year", year); + } + String projectName = projectSubitem.getProjectName(); + if (StringUtils.isNotBlank(projectName)) { + queryWrapper.like("pmp.project_name", oConvertUtils.replaceAllPercent(projectName.trim())); + } + Page page = new Page<>(pageNo, pageSize); + IPage pageList = tbMemberProjectSubitemService.queryPageListCompany(page, queryWrapper); + return Result.OK(pageList); + } + /** * 添加 */ 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 5ea8c59d..9abb3f6c 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 @@ -64,6 +64,7 @@ public class TbMemberProjectSubitem implements Serializable { /**项目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; @@ -376,7 +377,7 @@ public class TbMemberProjectSubitem implements Serializable { @DateTimeFormat(pattern="yyyy-MM-dd") private Date invalidationDate; - @ApiModelProperty(value = "备注") + @ApiModelProperty(value = "年份") @TableField(exist = false) private String year; } 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 8648b96d..755ab313 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 @@ -51,4 +51,6 @@ public interface TbMemberProjectSubitemMapper extends BaseMapper getByYear(@Param("startYear") Integer startYear, @Param("endYear") Integer endYear); IPage pieChartPage(Page page, @Param(Constants.WRAPPER) QueryWrapper queryWrapper); + + IPage queryPageListCompany(Page page, @Param(Constants.WRAPPER) QueryWrapper queryWrapper); } diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/member/mapper/xml/PayMemberProjectSubitemMapper.xml b/jero-boot-incoming-payment/src/main/java/com/jero/member/mapper/xml/PayMemberProjectSubitemMapper.xml index 5fd3c5e3..34fdee29 100644 --- a/jero-boot-incoming-payment/src/main/java/com/jero/member/mapper/xml/PayMemberProjectSubitemMapper.xml +++ b/jero-boot-incoming-payment/src/main/java/com/jero/member/mapper/xml/PayMemberProjectSubitemMapper.xml @@ -47,13 +47,15 @@ + diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/member/mapper/xml/TbMemberProjectSubitemMapper.xml b/jero-boot-incoming-payment/src/main/java/com/jero/member/mapper/xml/TbMemberProjectSubitemMapper.xml index f77bce26..a475d7ee 100644 --- a/jero-boot-incoming-payment/src/main/java/com/jero/member/mapper/xml/TbMemberProjectSubitemMapper.xml +++ b/jero-boot-incoming-payment/src/main/java/com/jero/member/mapper/xml/TbMemberProjectSubitemMapper.xml @@ -132,4 +132,11 @@ GROUP BY company_id) AS t2 ON t2.id = t1.id ${ew.customSqlSegment} + + \ No newline at end of file diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/member/service/IPayMemberProjectService.java b/jero-boot-incoming-payment/src/main/java/com/jero/member/service/IPayMemberProjectService.java index 3a2091f9..b4ebb44b 100644 --- a/jero-boot-incoming-payment/src/main/java/com/jero/member/service/IPayMemberProjectService.java +++ b/jero-boot-incoming-payment/src/main/java/com/jero/member/service/IPayMemberProjectService.java @@ -1,12 +1,34 @@ package com.jero.member.service; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; 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.common.exception.JeroBootException; +import com.jero.common.service.RolePermissionService; +import com.jero.common.system.vo.LoginUser; +import com.jero.contract.service.IPayIncomeContractAssociatedService; +import com.jero.contract.service.IPayIncomeContractService; import com.jero.member.entity.PayMemberProject; -import com.baomidou.mybatisplus.extension.service.IService; - +import com.jero.member.entity.PayMemberProjectSubitem; +import com.jero.member.mapper.PayMemberProjectMapper; +import com.jero.member.service.IPayMemberProjectService; +import com.jero.member.service.IPayMemberProjectSubitemService; +import com.jero.modules.system.entity.SysUser; +import com.jero.modules.system.mapper.SysUserMapper; +import com.jero.project.common.PayProjectCommon; +import com.jero.project.entity.PayCommonProject; +import org.apache.commons.collections.CollectionUtils; +import org.apache.shiro.SecurityUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; import java.util.List; +import java.util.Objects; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.transaction.annotation.Transactional; + +import javax.annotation.Resource; /** * @Description: 会员项目表 @@ -14,15 +36,45 @@ import java.util.List; * @Date: 2021-08-26 * @Version: V1.0 */ -public interface IPayMemberProjectService extends IService { - +@Service +@Transactional(rollbackFor = Exception.class) +public class IPayMemberProjectService extends ServiceImpl { + @Resource + private SysUserMapper userMapper; + @Resource + private PayMemberProjectMapper payMemberProjectMapper; + @Autowired + private IPayIncomeContractAssociatedService payIncomeContractAssociatedService; + @Resource + private IPayMemberProjectSubitemService memberProjectSubitemService; + @Autowired + private IPayIncomeContractService payIncomeContractService; + @Resource + private RolePermissionService rolePermissionService; /** * 保存 * * @param payMemberProject * @return */ - void add(PayMemberProject payMemberProject); + @Transactional + public void add(PayMemberProject payMemberProject) { + //判断项目名称 + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(PayMemberProject::getProjectName,payMemberProject.getProjectName()); + Integer integer = baseMapper.selectCount(wrapper); + if (integer>0){ + throw new JeroBootException("项目名称重复"); + } + //判断联系人 + String directorId = payMemberProject.getDirectorId(); + SysUser sysUser = userMapper.selectById(directorId); + if (sysUser == null){ + throw new JeroBootException("联系人不存在"); + } + payMemberProject.setDirectorName(sysUser.getUsername()); + save(payMemberProject); + } /** * 更新 @@ -30,7 +82,9 @@ public interface IPayMemberProjectService extends IService { * @param payMemberProject * @return */ - void editById(PayMemberProject payMemberProject); + public void editById(PayMemberProject payMemberProject) { + saveOrUpdate(payMemberProject); + } /** * 通过id删除 @@ -38,7 +92,15 @@ public interface IPayMemberProjectService extends IService { * @param id * @return */ - void deleteById(String id); + public void deleteById(String id) { + LambdaQueryWrapper query = new LambdaQueryWrapper<>(); + query.eq(PayMemberProjectSubitem::getProjectId, id); + List listPayMemberProjectSubitem = memberProjectSubitemService.list(query); + if(!CollectionUtils.isEmpty(listPayMemberProjectSubitem)) { + throw new JeroBootException("会员项目下存在企业,不可进行删除!"); + } + removeById(id); + } /** * 批量删除 @@ -46,7 +108,15 @@ public interface IPayMemberProjectService extends IService { * @param ids * @return */ - void deleteByIds(List ids); + public void deleteByIds(List ids) { + LambdaQueryWrapper query = new LambdaQueryWrapper<>(); + query.in(PayMemberProjectSubitem::getProjectId, ids); + List listPayMemberProjectSubitem = memberProjectSubitemService.list(query); + if(!CollectionUtils.isEmpty(listPayMemberProjectSubitem)) { + throw new JeroBootException("会员项目下存在企业,不可进行删除!"); + } + removeByIds(ids); + } /** * 通过id查询 @@ -54,35 +124,42 @@ public interface IPayMemberProjectService extends IService { * @param id * @return */ - PayMemberProject queryById(String id); + public PayMemberProject queryById(String id) { + return getById(id); + } /** * 列表查询 * * @return */ - List queryList(); + public List queryList() { + return list(); + } - /** - * 分页查询 - * @param page - * @param queryWrapper - * @return - */ - IPage getPage(Page page, QueryWrapper queryWrapper); + public IPage getPage(Page page, QueryWrapper queryWrapper) { + Page memberProjectPage = baseMapper.selectPage(page, queryWrapper); + List records = memberProjectPage.getRecords(); + for (PayMemberProject record : records) { + String directorId = record.getDirectorId(); + SysUser sysUser = userMapper.selectById(directorId); + record.setDirectorName(sysUser.getUsername()); + } + memberProjectPage.setRecords(records); + return memberProjectPage; + } - /** - * @Description 查询与收入合同企业一致的数据 - * @Author lqt - * @Date 2021/9/17 - * @Param companyId 企业id - * @Param memberName 会员名称 - * @Param projectType 项目类型 - * @Return - * @Exception - */ - IPage queryListByCompany(Page page, String companyId, String projectName, String projectType, Integer pack, String packYear); - - void check(String projectId, String permission); + public IPage queryListByCompany(Page page, String companyId, String projectName, String projectType, Integer pack, String packYear) { + return payMemberProjectMapper.queryListByCompany(page,companyId, projectName,projectType, pack, packYear); + } + public void check(String projectId,String permission){ + LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); + if (!rolePermissionService.getRolePermission(permission)) { + PayMemberProject payMemberProject = payMemberProjectMapper.selectById(projectId); + if (!Objects.equals(payMemberProject.getDirectorId(),sysUser.getId())){ + throw new JeroBootException("权限不足"); + } + } + } } 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 0dce1342..8da6e752 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 @@ -1,11 +1,50 @@ package com.jero.member.service; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; 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.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.jero.common.common.ProjectCommon; +import com.jero.common.dto.PaySendContactsMessageDTO; +import com.jero.common.exception.JeroBootException; +import com.jero.common.service.ContractCreateProjectSendMessageService; +import com.jero.common.service.ProjectDetailService; +import com.jero.common.service.RolePermissionService; +import com.jero.common.system.vo.LoginUser; +import com.jero.common.util.ValidUtil; +import com.jero.common.vo.ProjectStatusVO; +import com.jero.company.entity.PayContactsManagement; +import com.jero.company.service.IPayContactsManagementService; +import com.jero.contract.entity.PayIncomeContract; +import com.jero.contract.service.IPayIncomeContractService; +import com.jero.mail.service.IPayMailBillService; +import com.jero.member.entity.PayMemberProject; import com.jero.member.entity.PayMemberProjectSubitem; -import com.baomidou.mybatisplus.extension.service.IService; -import java.util.List; +import com.jero.member.mapper.PayMemberProjectMapper; +import com.jero.member.mapper.PayMemberProjectSubitemMapper; +import com.jero.member.service.IPayMemberProjectService; +import com.jero.member.service.IPayMemberProjectSubitemService; +import com.jero.pack.entity.PayPackCompanyProject; +import com.jero.pack.service.IPayPackCompanyProjectService; +import com.jero.project.common.PayProjectCommon; +import com.jero.temporary.entity.PayCompanyManagementTemporary; +import com.jero.temporary.entity.PayContactsManagementTemporary; +import com.jero.temporary.service.IPayCompanyManagementTemporaryService; +import com.jero.temporary.service.IPayContactsManagementTemporaryService; +import com.jero.valid.group.ChargeNotice; +import com.jero.valid.group.Contract; +import org.apache.commons.lang3.StringUtils; +import org.apache.shiro.SecurityUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import javax.annotation.Resource; +import java.math.BigDecimal; +import java.util.*; /** * @Description: 会员项目成员表 @@ -13,66 +52,457 @@ import java.util.List; * @Date: 2021-08-26 * @Version: V1.0 */ -public interface IPayMemberProjectSubitemService extends IService { +@Service +@Transactional(rollbackFor = Exception.class) +public class IPayMemberProjectSubitemService extends ServiceImpl { + @Resource + private IPayContactsManagementService contactsManagementService; + @Resource + private IPayCompanyManagementTemporaryService companyManagementTemporaryService; + @Resource + private IPayContactsManagementTemporaryService contactsManagementTemporaryService; + @Resource + private IPayMemberProjectService memberProjectService; + @Autowired + private IPayIncomeContractService payIncomeContractService; + @Autowired + private IPayPackCompanyProjectService payPackCompanyProjectService; + @Autowired + private ProjectDetailService projectDetailService; + @Autowired + private ContractCreateProjectSendMessageService contractCreateProjectSendMessageService; + @Resource + private IPayMemberProjectSubitemService memberProjectSubitemService; + @Resource + private RolePermissionService rolePermissionService; + @Resource + private PayMemberProjectMapper payMemberProjectMapper; + @Resource + private IPayMailBillService payMailBillService; /** * 保存 - * - * @param payMemberProjectSubitem - * @return */ - void add(PayMemberProjectSubitem payMemberProjectSubitem); + public void add(PayMemberProjectSubitem payMemberProjectSubitem) { + String projectId = payMemberProjectSubitem.getProjectId(); + PayMemberProject memberProject = memberProjectService.getById(projectId); + if (memberProject == null){ + throw new JeroBootException("会员项目不存在"); + } + String companyId = payMemberProjectSubitem.getCompanyId(); + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(PayMemberProjectSubitem::getProjectId,projectId); + wrapper.eq(PayMemberProjectSubitem::getCompanyId,companyId); + int count = count(wrapper); + if (count>0){ + throw new JeroBootException("会员单位已经存在"); + } +// validMemberProjectSubitem(payMemberProjectSubitem); + validMemberProjectSubitemAdd(payMemberProjectSubitem); + //实收金额 + payMemberProjectSubitem.setPaidAmount(new BigDecimal("0.00")); + //到账 + payMemberProjectSubitem.setInAccount(PayProjectCommon.IN_ACCOUNT0); + //打包 + payMemberProjectSubitem.setPack(PayProjectCommon.PACKAGING0); + //开票 + payMemberProjectSubitem.setMakeInvoice(PayProjectCommon.MAKE_INVOICE0); + //邮寄 + payMemberProjectSubitem.setMail(PayProjectCommon.MAIL0); + save(payMemberProjectSubitem); + // 来款方式为合同,校验合同编号 + if(Objects.equals(payMemberProjectSubitem.getPaymentMethod(),PayProjectCommon.CHARGE_WAY2)){ + PayIncomeContract payIncomeContract = payIncomeContractService.setPayIncomeContractAssociated(payMemberProjectSubitem.getContractNo(),payMemberProjectSubitem.getCompanyId(),payMemberProjectSubitem.getId()); + if(!Objects.isNull(payIncomeContract)){ + // 合同存在 && 合同状态不为草稿,不为未通过 关联合同 + payIncomeContractService.insertPayIncomeContract(payIncomeContract,payMemberProjectSubitem.getId(),Integer.parseInt(PayProjectCommon.PROJECT_TYPE4)); + // 关联了合同,判断合同是否打包,更新项目打包状态,添加打包 + if(Objects.equals(payIncomeContract.getPack(),PayProjectCommon.PACKAGING1)){ + payPackCompanyProjectService.setPack(payMemberProjectSubitem.getCompanyId(),payMemberProjectSubitem.getCompanyContactId(),payIncomeContract.getPackYear(),payMemberProjectSubitem.getId(),PayProjectCommon.PROJECT_TYPE4,payIncomeContract.getPack()); + LambdaUpdateWrapper update = new LambdaUpdateWrapper<>(); + update.eq(PayMemberProjectSubitem::getId,payMemberProjectSubitem.getId()); + update.set(PayMemberProjectSubitem::getPack,PayProjectCommon.PACKAGING1); + update(update); + } + } + } + // 收入合同创建项目发送消息到项目负责人 + if(Objects.equals(ProjectCommon.FLAG,payMemberProjectSubitem.getFlag())){ + contractCreateProjectSendMessageService.contractCreateProjectSendMessageService(memberProject.getProjectName() + "的" + payMemberProjectSubitem.getCompanyName(),payMemberProjectSubitem.getId(),memberProject.getDirectorId()); + } + // 新建项目 给企业联系人发送消息 + PayContactsManagement payContactsManagement = contactsManagementService.getById(payMemberProjectSubitem.getCompanyContactId()); + if(!Objects.isNull(payContactsManagement)){ + PaySendContactsMessageDTO paySendContactsMessageDTO = new PaySendContactsMessageDTO(); + paySendContactsMessageDTO.setProjectName(memberProject.getProjectName()); + paySendContactsMessageDTO.setProjectId(payMemberProjectSubitem.getId()); + paySendContactsMessageDTO.setEmail(payContactsManagement.getEmail()); + paySendContactsMessageDTO.setPhone(payContactsManagement.getPhone()); + paySendContactsMessageDTO.setUserId(memberProject.getDirectorId()); + paySendContactsMessageDTO.setFlag(ProjectCommon.FLAG0); + // 项目的待确收金额>0 发送缴费通知 + if(payMemberProjectSubitem.getAmountReceivable().compareTo(new BigDecimal("0")) > 0){ + paySendContactsMessageDTO.setFlag(ProjectCommon.FLAG0 + "," + ProjectCommon.FLAG1); + } + JSONObject json = new JSONObject(); + json.put("type",ProjectCommon.PROJECT_TYPE4); + json.put("id",payMemberProjectSubitem.getId()); + json.put("path","MessagePage/ProjectDetailModal"); + paySendContactsMessageDTO.setJson(json); + contractCreateProjectSendMessageService.createProjectSendMessageToContactsService(paySendContactsMessageDTO); + } + } /** * 更新 - * - * @param payMemberProjectSubitem - * @return */ - void editById(PayMemberProjectSubitem payMemberProjectSubitem); + public void editById(PayMemberProjectSubitem payMemberProjectSubitem) { + String id = payMemberProjectSubitem.getId(); + PayMemberProjectSubitem payMemberProjectSubitem1 = getById(id); + if (payMemberProjectSubitem1 == null){ + throw new JeroBootException("会员项目不存在"); + } + // 项目为打包状态 || 到账!=0 || 开票!=0 || 邮寄!=0 + if(!Objects.equals(payMemberProjectSubitem.getCompanyId(),payMemberProjectSubitem1.getCompanyId()) + && (Objects.equals(payMemberProjectSubitem.getPack(),PayProjectCommon.PACKAGING1) + || !Objects.equals(payMemberProjectSubitem.getInAccount(),PayProjectCommon.IN_ACCOUNT0) + || !Objects.equals(payMemberProjectSubitem.getMakeInvoice(),PayProjectCommon.MAKE_INVOICE0) + || !Objects.equals(payMemberProjectSubitem.getMail(),PayProjectCommon.MAIL0))){ + throw new JeroBootException("来款企业不可更改!"); + } + // 校验项目是否已关联合同 + PayIncomeContract payIncomeContract = payIncomeContractService.checkPayIncomeContractAssociated(payMemberProjectSubitem.getId()); + if(!Objects.isNull(payIncomeContract)){ + if(!Objects.equals(payMemberProjectSubitem.getPaymentMethod(),payMemberProjectSubitem1.getPaymentMethod())){ + throw new JeroBootException("项目已关联合同,来款方式不可修改!"); + } + if(Objects.equals(payMemberProjectSubitem1.getPaymentMethod(),PayProjectCommon.CHARGE_WAY2) && !Objects.equals(payMemberProjectSubitem1.getContractNo(),payMemberProjectSubitem.getContractNo())){ + throw new JeroBootException("项目已关联合同,合同编号不可修改!"); + } + }else{ + PayIncomeContract payIncomeContractAdd = null; + // 来款方式为合同,校验合同编号 + if(Objects.equals(payMemberProjectSubitem.getPaymentMethod(),PayProjectCommon.CHARGE_WAY2)){ + payIncomeContractAdd = payIncomeContractService.setPayIncomeContractAssociated(payMemberProjectSubitem.getContractNo(),payMemberProjectSubitem.getCompanyId(),payMemberProjectSubitem.getId()); + } + if(!Objects.isNull(payIncomeContractAdd)){ + // 合同存在 && 合同状态不为草稿,不为未通过 关联合同 + payIncomeContractService.insertPayIncomeContract(payIncomeContractAdd,payMemberProjectSubitem.getId(),Integer.parseInt(PayProjectCommon.PROJECT_TYPE4)); + }else{ + payMemberProjectSubitem.setPack(PayProjectCommon.PACKAGING0); + } + // 关联了合同,判断合同是否打包,更新项目打包状态,添加打包 + if(!Objects.isNull(payIncomeContractAdd) && Objects.equals(payIncomeContractAdd.getPack(),PayProjectCommon.PACKAGING1)){ + payPackCompanyProjectService.setPack(payMemberProjectSubitem.getCompanyId(),payMemberProjectSubitem.getCompanyContactId(),payIncomeContractAdd.getPackYear(),payMemberProjectSubitem.getId(),PayProjectCommon.PROJECT_TYPE4,payIncomeContractAdd.getPack()); + } + } + //无法更改状态 + 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.getCompanyTemporaryId(); +// if (!payMemberProjectSubitem1.getCompanyTemporaryId().equals(companyId)) { +// companyManagementTemporaryService.removeById(companyId); +// } +// //如果原始企业联系人id和现在企业联系人id不同,就删除临时表数据 +// String companyContactId = payMemberProjectSubitem.getCompanyContactTemporaryId(); +// if (!payMemberProjectSubitem1.getCompanyContactTemporaryId().equals(companyContactId)) { +// contactsManagementTemporaryService.removeById(companyContactId); +// } +// //如果原始邮寄联系人id和现在邮寄联系人id不同,就删除临时表数据 +// String postContactId = payMemberProjectSubitem.getPostContactTemporaryId(); +// if (!payMemberProjectSubitem1.getPostContactTemporaryId().equals(postContactId)) { +// contactsManagementTemporaryService.removeById(postContactId); +// } + // 变更待确收金额,重新校验状态 + ProjectStatusVO projectStatusVO = projectDetailService.getStatus(payMemberProjectSubitem.getId(),payMemberProjectSubitem.getAmountReceivable(),payMemberProjectSubitem.getNeedInvoice()); + if(!Objects.isNull(projectStatusVO)){ + if(!Objects.isNull(projectStatusVO.getInAccount())){ + payMemberProjectSubitem.setInAccount(projectStatusVO.getInAccount()); + } + if(!Objects.isNull(projectStatusVO.getMakeInvoice())){ + payMemberProjectSubitem.setMakeInvoice(projectStatusVO.getMakeInvoice()); + } + if(!Objects.isNull(projectStatusVO.getMail())){ + payMemberProjectSubitem.setMail(projectStatusVO.getMail()); + } + } + // 选择无 + if(Objects.equals(payMemberProjectSubitem.getPaymentMethod(), PayProjectCommon.CHARGE_WAY1)){ + payMemberProjectSubitem.setContractNo(null); + payMemberProjectSubitem.setChargeNoticeNo(null); + payMemberProjectSubitem.setChargeNoticeFileId(null); + } + // 选择合同 + if(Objects.equals(payMemberProjectSubitem.getPaymentMethod(),PayProjectCommon.CHARGE_WAY2)){ + payMemberProjectSubitem.setChargeNoticeNo(null); + payMemberProjectSubitem.setChargeNoticeFileId(null); + } + // 选择收费通知 + if(Objects.equals(payMemberProjectSubitem.getPaymentMethod(),PayProjectCommon.CHARGE_WAY3)){ + payMemberProjectSubitem.setContractNo(null); + } + validMemberProjectSubitemEdit(payMemberProjectSubitem,payMemberProjectSubitem1); + saveOrUpdate(payMemberProjectSubitem); + // 如果有邮寄信息更新邮寄联系人信息 + String mailContactsId = payMemberProjectSubitem.getPostContactId(); + payMailBillService.updateContactByProjectId(mailContactsId,payMemberProjectSubitem.getId(), null); + } /** * 校验会员项目成员 - * @param payMemberProjectSubitem 会员项目成员 + * @param payMemberProjectSubitem 会员项目成员 */ - void validMemberProjectSubitem(PayMemberProjectSubitem payMemberProjectSubitem); + public void validMemberProjectSubitemAdd(PayMemberProjectSubitem payMemberProjectSubitem) { + List errors = new ArrayList<>(); + // 企业 + try { + PayCompanyManagementTemporary chargeCompanyName = companyManagementTemporaryService.insertCompanyManagementTemporary(payMemberProjectSubitem.getCompanyId()); + if (Objects.isNull(chargeCompanyName)) { + throw new JeroBootException("企业名称为空!"); + } + payMemberProjectSubitem.setCompanyTemporaryId(chargeCompanyName.getId()); + payMemberProjectSubitem.setCompanyName(chargeCompanyName.getCompanyName()); + } catch (JeroBootException e) { + errors.add("会员单位不存在"); + } + // 联系人 + try { + PayContactsManagementTemporary contactsName = contactsManagementTemporaryService.insertContactsManagementTemporary(payMemberProjectSubitem.getCompanyContactId()); + if (Objects.isNull(contactsName)) { + throw new JeroBootException("联系人名称为空!"); + } + payMemberProjectSubitem.setCompanyContactTemporaryId(contactsName.getId()); + payMemberProjectSubitem.setCompanyContactName(contactsName.getName()); + } catch (JeroBootException e) { + errors.add("企业联系人不存在"); + } + try { + // 联系人 + PayContactsManagementTemporary postContactsName = contactsManagementTemporaryService.insertContactsManagementTemporary(payMemberProjectSubitem.getPostContactId()); + if (Objects.isNull(postContactsName)) { + throw new JeroBootException("邮寄联系人为空!"); + } + payMemberProjectSubitem.setPostContactTemporaryId(postContactsName.getId()); + payMemberProjectSubitem.setPostContactName(postContactsName.getName()); + } catch (JeroBootException e) { + errors.add("邮寄联系人不存在"); + } + + if (!errors.isEmpty()) { + throw new JeroBootException(StringUtils.join(errors, ",")); + } + //校验来款方式 + Integer paymentMethod = payMemberProjectSubitem.getPaymentMethod(); + //合同 + if (Objects.equals(paymentMethod, 2)) { + ValidUtil.validate(payMemberProjectSubitem, Contract.class); + } + //收费通知 + if (Objects.equals(paymentMethod, 3)) { + ValidUtil.validate(payMemberProjectSubitem, ChargeNotice.class); + } + } + + /** + * 校验会员项目成员 + * @param payMemberProjectSubitem 会员项目成员 + */ + public void validMemberProjectSubitemEdit(PayMemberProjectSubitem payMemberProjectSubitem,PayMemberProjectSubitem payMemberProjectSubitemOld) { + // 企业id != 企业模板id 变更 + if(!Objects.equals(payMemberProjectSubitem.getCompanyId(),payMemberProjectSubitemOld.getCompanyId())){ + // 企业 + PayCompanyManagementTemporary chargeCompanyName = companyManagementTemporaryService.insertCompanyManagementTemporary(payMemberProjectSubitem.getCompanyId()); + if(Objects.isNull(chargeCompanyName)){ + throw new JeroBootException("企业名称为空!"); + } + payMemberProjectSubitem.setCompanyTemporaryId(chargeCompanyName.getId()); + payMemberProjectSubitem.setCompanyName(chargeCompanyName.getCompanyName()); + companyManagementTemporaryService.removeById(payMemberProjectSubitemOld.getCompanyTemporaryId()); + } + + // 联系人id != 联系人模板id 变更 + // 联系人 + PayContactsManagementTemporary companyContact = contactsManagementTemporaryService.insertContactsManagementTemporary(payMemberProjectSubitem.getCompanyContactId()); + if(Objects.isNull(companyContact)){ + throw new JeroBootException("联系人名称为空!"); + } + payMemberProjectSubitem.setCompanyContactTemporaryId(companyContact.getId()); + payMemberProjectSubitem.setCompanyContactName(companyContact.getName()); + contactsManagementTemporaryService.removeById(payMemberProjectSubitemOld.getCompanyContactTemporaryId()); + + // 邮寄联系人id != 邮寄联系人模板id 变更 + if(!Objects.equals(payMemberProjectSubitem.getPostContactId(),payMemberProjectSubitemOld.getPostContactId())){ + // 联系人 + PayContactsManagementTemporary postContact = contactsManagementTemporaryService.insertContactsManagementTemporary(payMemberProjectSubitem.getPostContactId()); + if(Objects.isNull(postContact)){ + throw new JeroBootException("邮寄联系人为空!"); + } + payMemberProjectSubitem.setPostContactTemporaryId(postContact.getId()); + payMemberProjectSubitem.setPostContactName(postContact.getName()); + contactsManagementTemporaryService.removeById(payMemberProjectSubitemOld.getPostContactTemporaryId()); + } + + //校验来款方式 + Integer paymentMethod = payMemberProjectSubitem.getPaymentMethod(); + //合同 + if (Objects.equals(paymentMethod,2)){ + ValidUtil.validate(payMemberProjectSubitem, Contract.class); + } + //收费通知 + if (Objects.equals(paymentMethod,3)){ + ValidUtil.validate(payMemberProjectSubitem, ChargeNotice.class); + } + } + + /** + * 校验会员项目成员 + * @param payMemberProjectSubitem 会员项目成员 + */ + public void validMemberProjectSubitem(PayMemberProjectSubitem payMemberProjectSubitem) { + //校验企业 + String companyId = payMemberProjectSubitem.getCompanyId(); + PayCompanyManagementTemporary companyManagementTemporary = companyManagementTemporaryService.insertCompanyManagementTemporary(companyId); + payMemberProjectSubitem.setCompanyTemporaryId(companyManagementTemporary.getId()); + payMemberProjectSubitem.setCompanyName(companyManagementTemporary.getCompanyName()); + + //校验企业联系人 + String companyContactId = payMemberProjectSubitem.getCompanyContactId(); + PayContactsManagement contactsManagement = contactsManagementService.getById(companyContactId); + //校验是否是选择的企业的联系人 + String companyId1 = contactsManagement.getCompanyId(); + if (companyId1.equals(companyId)){ + PayContactsManagementTemporary contactsManagementTemporary = contactsManagementTemporaryService.insertContactsManagementTemporary(companyContactId); + payMemberProjectSubitem.setCompanyContactTemporaryId(contactsManagementTemporary.getId()); + payMemberProjectSubitem.setCompanyContactName(contactsManagementTemporary.getName()); + }else { + throw new JeroBootException("企业联系人不是所选企业的企业联系人"); + } + //校验邮寄联系人 + String postContactId = payMemberProjectSubitem.getPostContactId(); + PayContactsManagement postContact = contactsManagementService.getById(postContactId); + //校验是否是选择的企业的联系人 + String companyId2 = postContact.getCompanyId(); + if (companyId2.equals(companyId)){ + PayContactsManagementTemporary contactsManagementTemporary1 = contactsManagementTemporaryService.insertContactsManagementTemporary(postContactId); + payMemberProjectSubitem.setPostContactTemporaryId(contactsManagementTemporary1.getId()); + payMemberProjectSubitem.setPostContactName(contactsManagementTemporary1.getName()); + }else { + throw new JeroBootException("邮寄联系人不是所选企业的企业联系人"); + } + //校验来款方式 + Integer paymentMethod = payMemberProjectSubitem.getPaymentMethod(); + //合同 + if (Objects.equals(paymentMethod,2)){ + ValidUtil.validate(payMemberProjectSubitem, Contract.class); + } + //收费通知 + if (Objects.equals(paymentMethod,3)){ + ValidUtil.validate(payMemberProjectSubitem, ChargeNotice.class); + } + } /** * 通过id删除 - * - * @param id - * @return */ - void deleteById(String id); + @Transactional + public void deleteById(String id) { + deleteProject(id); + // delectTemporaryById(id); + removeById(id); + } + + private void delectTemporaryById(String id) { + PayMemberProjectSubitem payMemberProjectSubitem = getById(id); + //删除临时表数据 + String companyId = payMemberProjectSubitem.getCompanyTemporaryId(); + companyManagementTemporaryService.removeById(companyId); + + String companyContactId = payMemberProjectSubitem.getCompanyContactTemporaryId(); + contactsManagementTemporaryService.removeById(companyContactId); + + String postContactId = payMemberProjectSubitem.getPostContactTemporaryId(); + contactsManagementTemporaryService.removeById(postContactId); + } /** * 批量删除 - * - * @param ids - * @return */ - void deleteByIds(List ids); + @Transactional + public void deleteByIds(List ids) { + for (String id : ids) { + deleteProject(id); + // delectTemporaryById(id); + } + + removeByIds(ids); + } + + + /** + * @Description 删除项目打包关联,临时企业、联系信息 + * @Author lqt + * @Date 2021/9/18 + * @Param id 项目id + * @Return + * @Exception + */ + private void deleteProject(String id){ + PayMemberProjectSubitem payMemberProjectSubitem = memberProjectSubitemService.getById(id); + // 到账!=0 || 开票!=0 || 邮寄!=0 + if(!Objects.equals(payMemberProjectSubitem.getInAccount(), PayProjectCommon.IN_ACCOUNT0) + || !Objects.equals(payMemberProjectSubitem.getMakeInvoice(),PayProjectCommon.MAKE_INVOICE0) + || !Objects.equals(payMemberProjectSubitem.getMail(),PayProjectCommon.MAIL0)){ + throw new JeroBootException("项目已有到账信息不可删除!"); + } + // 校验项目是否已关联合同 抛异常 + payIncomeContractService.getPayIncomeContractAssociated(Collections.singletonList(payMemberProjectSubitem.getId())); + // 如果已打报,同步删除打包关联 + LambdaUpdateWrapper update = new LambdaUpdateWrapper<>(); + update.eq(PayPackCompanyProject::getProjectId,payMemberProjectSubitem.getId()); + payPackCompanyProjectService.remove(update); + // 删除企业联系人临时数据 + companyManagementTemporaryService.removeById(payMemberProjectSubitem.getCompanyTemporaryId()); + contactsManagementTemporaryService.removeByIds(Arrays.asList(payMemberProjectSubitem.getCompanyContactTemporaryId(),payMemberProjectSubitem.getPostContactTemporaryId())); + } /** * 通过id查询 - * - * @param id - * @return */ - PayMemberProjectSubitem queryById(String id); + public PayMemberProjectSubitem queryById(String id) { + return getById(id); + } /** * 列表查询 - * - * @return */ - List queryList(); + public List queryList() { + return list(); + } - IPage queryPageListCompany(Page page, QueryWrapper queryWrapper); + public IPage queryPageListCompany(Page page, QueryWrapper queryWrapper) { + return baseMapper.queryPageListCompany(page,queryWrapper); + } - List queryPageListCompany(QueryWrapper queryWrapper); + public List queryPageListCompany(QueryWrapper queryWrapper) { + return baseMapper.queryPageListCompany(queryWrapper); + } - IPage getPage(Page page, QueryWrapper queryWrapper); - - void check(String subitemId, String permission); + public IPage getPage(Page page, QueryWrapper queryWrapper) { + return baseMapper.getPage(page, queryWrapper); + } + public void check(String subitemId,String permission){ + LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); + if (!rolePermissionService.getRolePermission(permission)) { + PayMemberProjectSubitem payMemberProjectSubitem = baseMapper.selectById(subitemId); + PayMemberProject payMemberProject = payMemberProjectMapper.selectById(payMemberProjectSubitem.getProjectId()); + if (!Objects.equals(payMemberProject.getDirectorId(),sysUser.getId())){ + throw new JeroBootException("权限不足"); + } + } + } } diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/member/service/ITbCertificatePaymentService.java b/jero-boot-incoming-payment/src/main/java/com/jero/member/service/ITbCertificatePaymentService.java index ef5e1a29..61ddcf1c 100644 --- a/jero-boot-incoming-payment/src/main/java/com/jero/member/service/ITbCertificatePaymentService.java +++ b/jero-boot-incoming-payment/src/main/java/com/jero/member/service/ITbCertificatePaymentService.java @@ -1,8 +1,12 @@ package com.jero.member.service; import com.jero.member.entity.TbCertificatePayment; -import com.baomidou.mybatisplus.extension.service.IService; +import com.jero.member.mapper.TbCertificatePaymentMapper; +import com.jero.member.service.ITbCertificatePaymentService; +import org.springframework.stereotype.Service; import java.util.List; +import java.time.LocalDateTime; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; /** * @Description: 证书缴费表 @@ -10,35 +14,65 @@ import java.util.List; * @Date: 2021-12-14 * @Version: V1.0 */ -public interface ITbCertificatePaymentService extends IService { +@Service +public class ITbCertificatePaymentService extends ServiceImpl { /** * 保存 + * + * @param tbCertificatePayment + * @return */ - void add(TbCertificatePayment tbCertificatePayment); + public void add(TbCertificatePayment tbCertificatePayment) { + saveOrUpdate(tbCertificatePayment); + } /** * 更新 + * + * @param tbCertificatePayment + * @return */ - void editById(TbCertificatePayment tbCertificatePayment); + public void editById(TbCertificatePayment tbCertificatePayment) { + saveOrUpdate(tbCertificatePayment); + } /** * 通过id删除 + * + * @param id + * @return */ - void deleteById(String id); + public void deleteById(String id) { + removeById(id); + } /** * 批量删除 + * + * @param ids + * @return */ - void deleteByIds(List ids); + public void deleteByIds(List ids) { + removeByIds(ids); + } /** * 通过id查询 + * + * @param id + * @return */ - TbCertificatePayment queryById(String id); + public TbCertificatePayment queryById(String id) { + return getById(id); + } /** * 列表查询 + * + * @return */ - List queryList(); + public List queryList() { + return list(); + } } diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/member/service/ITbMemberProjectService.java b/jero-boot-incoming-payment/src/main/java/com/jero/member/service/ITbMemberProjectService.java index cf61fb13..2f27cd70 100644 --- a/jero-boot-incoming-payment/src/main/java/com/jero/member/service/ITbMemberProjectService.java +++ b/jero-boot-incoming-payment/src/main/java/com/jero/member/service/ITbMemberProjectService.java @@ -1,15 +1,36 @@ package com.jero.member.service; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +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; +import com.jero.contract.service.IPayIncomeContractAssociatedService; +import com.jero.contract.service.IPayIncomeContractService; +import com.jero.member.entity.PayMemberProjectSubitem; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.jero.member.entity.TbMemberProject; -import com.baomidou.mybatisplus.extension.service.IService; +import com.jero.member.entity.TbMemberProjectSubitem; +import com.jero.member.mapper.TbMemberProjectMapper; +import com.jero.member.service.ITbMemberProjectService; +import com.jero.member.service.ITbMemberProjectSubitemService; +import org.apache.commons.collections.CollectionUtils; +import org.apache.shiro.SecurityUtils; +import org.springframework.beans.factory.annotation.Autowired; import com.jero.project.entity.PayWorkGroupSubletStatistics; import com.jero.statistics.entity.AllProjectStatistics; import com.jero.statistics.entity.AllProjectStatisticsSearch; - +import org.springframework.stereotype.Service; import java.util.List; +import java.util.Objects; +import java.util.stream.Collectors; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.transaction.annotation.Transactional; + +import javax.annotation.Resource; /** * @Description: 标协会员项目表 @@ -17,54 +38,103 @@ import java.util.List; * @Date: 2021-09-01 * @Version: V1.0 */ -public interface ITbMemberProjectService extends IService { +@Service +@Transactional(rollbackFor = Exception.class) +public class ITbMemberProjectService extends ServiceImpl { + @Resource + private ITbMemberProjectSubitemService tbMemberProjectSubitemService; + + @Autowired + private IPayIncomeContractService payIncomeContractService; + @Resource + private RolePermissionService rolePermissionService; /** * 保存 - * - * @param tbMemberProject - * @return */ - void add(TbMemberProject tbMemberProject); + public void add(TbMemberProject tbMemberProject) { + //一年只能有一个项目 + String year = tbMemberProject.getYear(); + check(year, null); + save(tbMemberProject); + } + + /** + * 一年只能有一个项目 + */ + private void check(String year, String id) { + LambdaQueryWrapper 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 + "年标协会员项目"); + } + } /** * 更新 - * - * @param tbMemberProject - * @return */ - void editById(TbMemberProject tbMemberProject); + public void editById(TbMemberProject tbMemberProject) { + //一年只能有一个项目 + String year = tbMemberProject.getYear(); + String id = tbMemberProject.getId(); + check(year, id); + saveOrUpdate(tbMemberProject); + } /** * 通过id删除 - * - * @param id - * @return */ - void deleteById(String id); + public void deleteById(String id) { + LambdaQueryWrapper query = new LambdaQueryWrapper<>(); + query.eq(TbMemberProjectSubitem::getProjectId, id); + List listTbMemberProjectSubitem = tbMemberProjectSubitemService.list(query); + if(!CollectionUtils.isEmpty(listTbMemberProjectSubitem)) { + throw new JeroBootException("标协会员项目下存在企业,不可进行删除!"); + } + removeById(id); + } /** * 批量删除 - * - * @param ids - * @return */ - void deleteByIds(List ids); + public void deleteByIds(List ids) { + LambdaQueryWrapper query = new LambdaQueryWrapper<>(); + query.in(TbMemberProjectSubitem::getProjectId, ids); + List listTbMemberProjectSubitem = tbMemberProjectSubitemService.list(query); + if(!CollectionUtils.isEmpty(listTbMemberProjectSubitem)) { + throw new JeroBootException("标协会员项目下存在企业,不可进行删除!"); + } + removeByIds(ids); + } /** * 通过id查询 - * - * @param id - * @return */ - TbMemberProject queryById(String id); + public TbMemberProject queryById(String id) { + return getById(id); + } /** * 列表查询 - * - * @return */ - List queryList(); + public List queryList() { + return list(); + } + + public IPage queryPageList(Page page, QueryWrapper queryWrapper) { + LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); + if (!rolePermissionService.getRolePermission("stardsMember:search")) { + queryWrapper.and( + a -> a.eq("pm.director_id",sysUser.getId()) + .or() + .eq("tmp.director_id",sysUser.getId()) + .or() + .eq("pmc.meeting_contacts_id", sysUser.getId()) + ); + } + return baseMapper.queryPageList(page,queryWrapper); + } - IPage queryPageList(Page page, QueryWrapper queryWrapper); } 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 fe0bc242..198de1ad 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 @@ -1,18 +1,67 @@ package com.jero.member.service; +import java.util.*; +import cn.hutool.core.date.DateField; +import cn.hutool.core.date.DatePattern; +import cn.hutool.core.date.DateTime; +import cn.hutool.core.date.DateUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; 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.enums.PaymentStatusEnum; +import com.jero.common.exception.JeroBootException; +import com.jero.common.service.RolePermissionService; +import com.jero.common.system.api.ISysBaseAPI; +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; +import com.jero.company.entity.PayCompanyManagement; +import com.jero.company.service.IPayCompanyManagementService; +import com.jero.contract.entity.PayIncomeContractAssociated; +import com.jero.contract.service.IPayIncomeContractAssociatedService; +import com.jero.contract.service.IPayIncomeContractService; +import com.jero.mail.entity.PayMailBillProject; +import com.jero.mail.service.IPayMailBillProjectService; +import com.jero.mail.service.IPayMailBillService; +import com.jero.meeting.entity.PayMeetingSituation; +import com.jero.meeting.mapper.PayMeetingSituationMapper; import com.jero.member.entity.TbMemberProjectSubitem; -import com.baomidou.mybatisplus.extension.service.IService; +import com.jero.member.enums.MemberStatusEnum; +import com.jero.member.mapper.TbMemberProjectSubitemMapper; +import com.jero.member.service.ITbMemberProjectSubitemService; import com.jero.member.vo.CopyMemberVO; import com.jero.member.vo.EditMemberBenefitsVO; import com.jero.member.vo.QueryAggVO; +import com.jero.pack.entity.PayPackCompanyProject; +import com.jero.pack.service.IPayPackCompanyProjectService; +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.statistics.entity.MemberLineChartMap; import com.jero.statistics.entity.MemberLineChartVO; import com.jero.statistics.entity.MemberPieChartVO; +import com.jero.temporary.service.IPayCompanyManagementTemporaryService; +import com.jero.temporary.service.IPayContactsManagementTemporaryService; +import com.sun.javaws.exceptions.JreExecException; +import org.apache.shiro.SecurityUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import java.math.BigDecimal; +import java.util.stream.Collectors; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.transaction.annotation.Transactional; + +import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; -import java.util.List; + +import static freemarker.template.utility.NullArgumentException.check; /** * @Description: 标协会员项目成员表 @@ -20,89 +69,407 @@ import java.util.List; * @Date: 2021-09-01 * @Version: V1.0 */ -public interface ITbMemberProjectSubitemService extends IService { +@Service +@Transactional(rollbackFor = Exception.class) +public class ITbMemberProjectSubitemService extends ServiceImpl { + + @Resource + private TbMemberProjectSubitemMapper tbMemberProjectSubitemMapper; + @Autowired + private IPayIncomeContractAssociatedService payIncomeContractAssociatedService; + @Autowired + private IPayIncomeContractService payIncomeContractService; + @Autowired + private IPayPackCompanyProjectService payPackCompanyProjectService; + @Autowired + private IPayCompanyManagementService companyManagementService; + @Autowired + private IPayContactsManagementTemporaryService payContactsManagementTemporaryService; + @Resource + private ITbMemberProjectSubitemService tbMemberProjectSubitemService; + @Resource + private RolePermissionService rolePermissionService; + @Resource + private IPayPaymentRecordService payPaymentRecordService; + @Resource + private PayConfirmPaymentRecordService payConfirmPaymentRecordService; + @Resource + private IPayMailBillProjectService payMailBillProjectService; + @Resource + private IPayMailBillService payMailBillService; + @Resource + private ISysBaseAPI sysBaseAPI; + @Resource + private PayMeetingSituationMapper payMeetingSituationMapper; /** * 保存 - * - * @param tbMemberProjectSubitem - * @return */ - void add(TbMemberProjectSubitem tbMemberProjectSubitem); + public void add(TbMemberProjectSubitem tbMemberProjectSubitem) { + setDefaultCreateValue(tbMemberProjectSubitem); + + check(tbMemberProjectSubitem); + save(tbMemberProjectSubitem); + } + + /** + * 创建时默认值 + */ + private void setDefaultCreateValue(TbMemberProjectSubitem tbMemberProjectSubitem) { + //实收金额 + tbMemberProjectSubitem.setPaidAmount(BigDecimal.ZERO); + //到账 + tbMemberProjectSubitem.setInAccount(PayProjectCommon.IN_ACCOUNT0); + //开票 + tbMemberProjectSubitem.setMakeInvoice(PayProjectCommon.MAKE_INVOICE0); + //邮寄 + tbMemberProjectSubitem.setMail(PayProjectCommon.MAIL0); + //打包 + tbMemberProjectSubitem.setPack(PayProjectCommon.PACKAGING0); + //提票 + tbMemberProjectSubitem.setTicketCollection(PayProjectCommon.NO); + //会员状态 + tbMemberProjectSubitem.setMemberStatus(MemberStatusEnum.UNPAID_FEES.getValue()); + //缴费状态 + tbMemberProjectSubitem.setPaymentStatus(PaymentStatusEnum.TO_BE_UPLOADED.getCode()); + } + + public void check(TbMemberProjectSubitem tbMemberProjectSubitem){ + String companyId = tbMemberProjectSubitem.getCompanyId(); + String projectId = tbMemberProjectSubitem.getProjectId(); + //String id = tbMemberProjectSubitem.getId(); + 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("会员单位已经存在"); + } + } /** * 更新 - * - * @param tbMemberProjectSubitem - * @return */ - void editById(TbMemberProjectSubitem tbMemberProjectSubitem); + public void editById(TbMemberProjectSubitem tbMemberProjectSubitem) { + saveOrUpdate(tbMemberProjectSubitem); + } /** * 通过id删除 - * - * @param id - * @return */ - void deleteById(String id); + public void deleteById(String id) { + deleteProject(id); + removeById(id); + } /** * 批量删除 - * - * @param ids - * @return */ - void deleteByIds(List ids); + public void deleteByIds(List ids) { + ids.forEach(p->{ + deleteProject(p); + }); + removeByIds(ids); + } - void deleteProject(String id); - /** - * 通过id查询 - * - * @param id - * @return - */ - TbMemberProjectSubitem queryById(String id); - - /** - * 列表查询 - * - * @return - */ - List queryList(); /** - * @Description 查询与收入合同企业一致的数据 + * @Description 删除项目打包关联,临时企业、联系信息 * @Author lqt - * @Date 2021/9/17 - * @Param companyId 企业id - * @Param memberName 会员名称 - * @Param projectType 项目类型 + * @Date 2021/9/18 + * @Param id 项目id * @Return * @Exception */ - IPage queryListByCompany(Page page, String companyId, String projectType,Integer pack,String packYear); + public void deleteProject(String id){ + //删除到账 + LambdaQueryWrapper wrapper1 = new LambdaQueryWrapper<>(); + wrapper1.eq(PayPaymentRecord::getProjectId,id); + payPaymentRecordService.remove(wrapper1); + //删除确认收入 + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(PayConfirmPaymentRecord::getProjectId,id); + payConfirmPaymentRecordService.remove(wrapper); + //删除开票 + LambdaQueryWrapper wrapper2 = new LambdaQueryWrapper<>(); + wrapper2.eq(PayMailBillProject::getProjectId,id); + payMailBillProjectService.remove(wrapper2); - IPage pageList(Page page, QueryWrapper queryWrapper); + // 删除合同关联 + LambdaQueryWrapper queryPayIncomeContractAssociated = new LambdaQueryWrapper<>(); + queryPayIncomeContractAssociated.eq(PayIncomeContractAssociated::getProjectId,id); + payIncomeContractAssociatedService.remove(queryPayIncomeContractAssociated); + // 如果已打报,同步删除打包关联 + LambdaUpdateWrapper update = new LambdaUpdateWrapper<>(); + update.eq(PayPackCompanyProject::getProjectId,id); + payPackCompanyProjectService.remove(update); + } - void ticketCollection(String id); + /** + * 通过id查询 + */ + public TbMemberProjectSubitem queryById(String id) { + return getById(id); + } - TbMemberProjectSubitem getTakeEffectInfo(String companyId); + /** + * 列表查询 + */ + public List queryList() { + return list(); + } - void editMemberBenefits(EditMemberBenefitsVO editMemberBenefitsVO); + public IPage queryListByCompany(Page page, String companyId, String projectType,Integer pack,String packYear) { + return tbMemberProjectSubitemMapper.queryListByCompany(page, companyId, projectType,pack,packYear); + } - void generateValidDate(String id); + public IPage pageList(Page page, QueryWrapper queryWrapper) { + LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); + if (!rolePermissionService.getRolePermission("safeguardStardsMember:search")) { + queryWrapper.eq("tmp.director_id",sysUser.getId()); + } + return baseMapper.pageList(page,queryWrapper); + } - void copy(CopyMemberVO copyMemberVO); + public void ticketCollection(String id) { + LambdaUpdateWrapper updateWrapper = new LambdaUpdateWrapper<>(); + updateWrapper.eq(TbMemberProjectSubitem::getId,id); + updateWrapper.set(TbMemberProjectSubitem::getTicketCollection, PayProjectCommon.YES); + this.update(updateWrapper); + } - void copyBatch(CopyMemberVO copyMemberVO); + /** + * 获得最新的生效数据,没有的话会返回null + * @param companyId + * @return + */ + public TbMemberProjectSubitem getTakeEffectInfo(String companyId){ + //获得所有生效数据 + List allByCompanyId = tbMemberProjectSubitemMapper.getAllTakeEffectByCompanyId(companyId); + //获取list中年份最大的数据 + Optional max = allByCompanyId.stream().max(Comparator.comparing(TbMemberProjectSubitem::getYear)); + //没有的话会返回null + return max.orElse(null); + } - MemberLineChartVO lineChart(Integer startYear, Integer endYear); + public void editMemberBenefits(EditMemberBenefitsVO editMemberBenefitsVO) { + String id = editMemberBenefitsVO.getId(); + Date effectiveDate = editMemberBenefitsVO.getEffectiveDate(); + Date invalidationDate = editMemberBenefitsVO.getInvalidationDate(); - List pieChart(); + TbMemberProjectSubitem memberProjectSubitem = getById(id); + String companyId = memberProjectSubitem.getCompanyId(); + //获得有效数据 + TbMemberProjectSubitem takeEffectInfo = getTakeEffectInfo(companyId); + if (takeEffectInfo == null || !Objects.equals(takeEffectInfo.getId(),id)){ + throw new JeroBootException("只能修改最新生效会员数据"); + } + LambdaUpdateWrapper updateWrapper = new LambdaUpdateWrapper<>(); + updateWrapper.eq(TbMemberProjectSubitem::getId,id) + .set(TbMemberProjectSubitem::getEffectiveDate,effectiveDate) + .set(TbMemberProjectSubitem::getInvalidationDate,invalidationDate); + this.update(updateWrapper); + } + public void generateValidDate(String id){ + TbMemberProjectSubitem memberProjectSubitem = getById(id); + //如果有有效期就不执行了 + if (memberProjectSubitem.getEffectiveDate() != null){ + return; + } + String companyId = memberProjectSubitem.getCompanyId(); + //获得有效数据 + TbMemberProjectSubitem takeEffectInfo = getTakeEffectInfo(companyId); + DateTime effectiveDate; + LambdaUpdateWrapper updateWrapper = new LambdaUpdateWrapper<>(); + updateWrapper.eq(TbMemberProjectSubitem::getId,id); + DateTime date = DateUtil.date(); + //如果是新会员,或者当前日期大于之前的失效日期 + if (takeEffectInfo == null || DateUtil.compare(date,takeEffectInfo.getInvalidationDate()) > 0){ + //获得当月1日 + effectiveDate = DateUtil.beginOfMonth(date); + // 如果是续费 + }else { + //获取上一个失效日期 + Date previousInvalidationDate = takeEffectInfo.getInvalidationDate(); + //获得失效日期的下个月1日 + effectiveDate = DateUtil.beginOfMonth(DateUtil.date(previousInvalidationDate).offset(DateField.MONTH, 1)); + } + //获得生效日期明年当月月底 + DateTime invalidationDate = DateUtil.endOfMonth(effectiveDate.offset(DateField.YEAR, 1)); + //设置生效失效日期 + updateWrapper.set(TbMemberProjectSubitem::getEffectiveDate,effectiveDate); + updateWrapper.set(TbMemberProjectSubitem::getInvalidationDate,invalidationDate); + //设置会员状态为已缴费 + updateWrapper.set(TbMemberProjectSubitem::getMemberStatus,MemberStatusEnum.PAID.getValue()); + //如果是新会员,生成会员编号 + if (takeEffectInfo == null || memberProjectSubitem.getMemberNo() == null){ + //格式化日期为yyyyMMdd + String dateStr = date.toString(DatePattern.PURE_DATE_PATTERN); + String memberNoPrefix = "CASA" + dateStr; + Integer maxMemberNo = tbMemberProjectSubitemMapper.getMaxMemberNo(memberNoPrefix); + //生成会员编号 + String memberNo = buildMemberNo(memberNoPrefix, maxMemberNo); + updateWrapper.set(TbMemberProjectSubitem::getMemberNo,memberNo); + } + this.update(updateWrapper); + } - IPage pieChartPage(Page page, QueryWrapper queryWrapper); + private String buildMemberNo(String prefix, Integer no) { + if (no == null || no <= 0) { + return prefix + "001"; + } + String suffix = no.toString(); + while (suffix.length() < 3) { + suffix = "0" + suffix; + } + return prefix + suffix; + } - void dataDownloadPower(QueryAggVO queryAggVO, HttpServletRequest request); + public void copy(CopyMemberVO copyMemberVO) { + String projectId = copyMemberVO.getProjectId(); + String id = copyMemberVO.getId(); + copyOperation(projectId, id); + } - void enableMemberByCompanyName(String companyName); + /** + * 复制操作 + */ + private void copyOperation(String projectId, String id) { + TbMemberProjectSubitem memberProjectSubitem = this.getById(id); + //查询目标项目是否有当前企业 + memberProjectSubitem.setProjectId(projectId); + this.check(memberProjectSubitem); + //复制成员信息生成新成员 + TbMemberProjectSubitem newMemberProjectSubitem = setCopyValue(memberProjectSubitem); + this.setDefaultCreateValue(newMemberProjectSubitem); + newMemberProjectSubitem.setProjectId(projectId); + this.save(newMemberProjectSubitem); + } + + public void copyBatch(CopyMemberVO copyMemberVO) { + String projectId = copyMemberVO.getProjectId(); + String ids = copyMemberVO.getIds(); + for (String id : ids.split(",")) { + copyOperation(projectId, id); + } + } + + public MemberLineChartVO lineChart(Integer startYear, Integer endYear) { + MemberLineChartVO memberLineChartVO = new MemberLineChartVO(); + List byYear = tbMemberProjectSubitemMapper.getByYear(startYear, endYear); + Map map = byYear.stream().collect(Collectors.toMap(MemberLineChartMap::getYear, MemberLineChartMap::getValue)); + List value = new ArrayList<>(); + List year = new ArrayList<>(); + for (int i = startYear; i <= endYear; i++) { + year.add(i); + value.add(map.getOrDefault(i,"0")); + } + memberLineChartVO.setValue(value); + memberLineChartVO.setYear(year); + return memberLineChartVO; + } + + public List pieChart() { + + List allTakeEffect = tbMemberProjectSubitemMapper.getAllTakeEffect(); + Map> collect = allTakeEffect.stream().collect(Collectors.groupingBy(TbMemberProjectSubitem::getMemberNature)); + List dictModels = sysBaseAPI.queryDictItemsByCode("member_nature"); + List memberPieChartVOList = new ArrayList<>(); + for (DictModel dictModel : dictModels) { + MemberPieChartVO memberPieChartVO = new MemberPieChartVO(); + String value = dictModel.getValue(); + memberPieChartVO.setMemberNature(value); + memberPieChartVO.setValue(collect.getOrDefault(Integer.valueOf(value),new ArrayList<>()).size()+""); + memberPieChartVOList.add(memberPieChartVO); + } + return memberPieChartVOList; + } + + public IPage pieChartPage(Page page, QueryWrapper queryWrapper) { + return baseMapper.pieChartPage(page,queryWrapper); + } + + public void dataDownloadPower(QueryAggVO queryAggVO, HttpServletRequest request) { + String meetingId = queryAggVO.getMeetingId(); + String meetingType = queryAggVO.getMeetingType(); + LoginUser loginUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); + String userId = loginUser.getId(); + + String companyId = loginUser.getCompanyId(); + TbMemberProjectSubitem takeEffectInfo = getTakeEffectInfo(companyId); + boolean isNotMember = false; + if (takeEffectInfo == null){ + isNotMember = true; + } + //如果是标准宣贯&&学习培训要判断是否为参会人员 + if ("6".equals(meetingType) || "7".equals(meetingType)) { + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(PayMeetingSituation::getMeetingId,meetingId); + wrapper.eq(PayMeetingSituation::getCompanyContactId,userId); + Integer count = payMeetingSituationMapper.selectCount(wrapper); + + if (count <= 0 && isNotMember) { + throw new JeroBootException("只有参会人员和有效期内的缴费会员可以下载和预览文件!"); + } + }else if (isNotMember){ + throw new JeroBootException("只有有效期内的缴费会员可以下载和预览文件!"); + } + } + + public void enableMemberByCompanyName(String companyName) { + PayCompanyManagement company = companyManagementService.getCompanyByName(companyName); + TbMemberProjectSubitem takeEffectInfo = getTakeEffectInfo(company.getId()); + if (takeEffectInfo == null){ + throw new JeroBootException(companyName + "不是有效会员"); + } + } + + private TbMemberProjectSubitem setCopyValue(TbMemberProjectSubitem memberProjectSubitem) { + TbMemberProjectSubitem tbMemberProjectSubitem = new TbMemberProjectSubitem(); + tbMemberProjectSubitem.setMemberNo(memberProjectSubitem.getMemberNo()); + tbMemberProjectSubitem.setCompanyId(memberProjectSubitem.getCompanyId()); + tbMemberProjectSubitem.setCompanyName(memberProjectSubitem.getCompanyName()); + tbMemberProjectSubitem.setMemberNature(memberProjectSubitem.getMemberNature()); + tbMemberProjectSubitem.setMemberType(memberProjectSubitem.getMemberType()); + tbMemberProjectSubitem.setLiaisonManId(memberProjectSubitem.getLiaisonManId()); + tbMemberProjectSubitem.setLiaisonMan(memberProjectSubitem.getLiaisonMan()); + tbMemberProjectSubitem.setEmail(memberProjectSubitem.getEmail()); + tbMemberProjectSubitem.setMobile(memberProjectSubitem.getMobile()); + tbMemberProjectSubitem.setMemberStatus(memberProjectSubitem.getMemberStatus()); + tbMemberProjectSubitem.setRegisterTime(memberProjectSubitem.getRegisterTime()); + tbMemberProjectSubitem.setAmountReceivable(memberProjectSubitem.getAmountReceivable()); + tbMemberProjectSubitem.setEstimatedArrivalDate(memberProjectSubitem.getEstimatedArrivalDate()); + tbMemberProjectSubitem.setInvoiceRequirements(memberProjectSubitem.getInvoiceRequirements()); + tbMemberProjectSubitem.setTicketCollection(memberProjectSubitem.getTicketCollection()); + tbMemberProjectSubitem.setChargeUse(memberProjectSubitem.getChargeUse()); + tbMemberProjectSubitem.setPaymentMethod(memberProjectSubitem.getPaymentMethod()); + tbMemberProjectSubitem.setHeaderName(memberProjectSubitem.getHeaderName()); + tbMemberProjectSubitem.setTaxNumber(memberProjectSubitem.getTaxNumber()); + tbMemberProjectSubitem.setInvoiceAddress(memberProjectSubitem.getInvoiceAddress()); + tbMemberProjectSubitem.setInvoicePhone(memberProjectSubitem.getInvoicePhone()); + tbMemberProjectSubitem.setDepositBank(memberProjectSubitem.getDepositBank()); + tbMemberProjectSubitem.setBankAccount(memberProjectSubitem.getBankAccount()); + tbMemberProjectSubitem.setLinkBankNumber(memberProjectSubitem.getLinkBankNumber()); + tbMemberProjectSubitem.setTaxRate(memberProjectSubitem.getTaxRate()); + tbMemberProjectSubitem.setTax(memberProjectSubitem.getTax()); + tbMemberProjectSubitem.setNoTaxAmount(memberProjectSubitem.getNoTaxAmount()); + tbMemberProjectSubitem.setPostCompanyId(memberProjectSubitem.getPostCompanyId()); + tbMemberProjectSubitem.setPostContactId(memberProjectSubitem.getPostContactId()); + tbMemberProjectSubitem.setAdminAddFlag(memberProjectSubitem.getAdminAddFlag()); + tbMemberProjectSubitem.setContractNum(memberProjectSubitem.getContractNum()); + tbMemberProjectSubitem.setChargeNoticeNo(memberProjectSubitem.getChargeNoticeNo()); + tbMemberProjectSubitem.setChargeNoticeId(memberProjectSubitem.getChargeNoticeId()); + tbMemberProjectSubitem.setInvalidationDate(memberProjectSubitem.getInvalidationDate()); + tbMemberProjectSubitem.setEffectiveDate(memberProjectSubitem.getEffectiveDate()); + tbMemberProjectSubitem.setRemark(memberProjectSubitem.getRemark()); + return tbMemberProjectSubitem; + + } + + + public IPage queryPageListCompany(Page page, QueryWrapper queryWrapper) { + + return baseMapper.queryPageListCompany(page, queryWrapper); + } } diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/member/service/impl/PayPayMemberProjectServiceImpl.java b/jero-boot-incoming-payment/src/main/java/com/jero/member/service/impl/PayPayMemberProjectServiceImpl.java deleted file mode 100644 index fdccec00..00000000 --- a/jero-boot-incoming-payment/src/main/java/com/jero/member/service/impl/PayPayMemberProjectServiceImpl.java +++ /dev/null @@ -1,174 +0,0 @@ -package com.jero.member.service.impl; - -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -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.common.exception.JeroBootException; -import com.jero.common.service.RolePermissionService; -import com.jero.common.system.vo.LoginUser; -import com.jero.contract.service.IPayIncomeContractAssociatedService; -import com.jero.contract.service.IPayIncomeContractService; -import com.jero.member.entity.PayMemberProject; -import com.jero.member.entity.PayMemberProjectSubitem; -import com.jero.member.mapper.PayMemberProjectMapper; -import com.jero.member.service.IPayMemberProjectService; -import com.jero.member.service.IPayMemberProjectSubitemService; -import com.jero.modules.system.entity.SysUser; -import com.jero.modules.system.mapper.SysUserMapper; -import com.jero.project.common.PayProjectCommon; -import com.jero.project.entity.PayCommonProject; -import org.apache.commons.collections.CollectionUtils; -import org.apache.shiro.SecurityUtils; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; -import java.util.List; -import java.util.Objects; - -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import org.springframework.transaction.annotation.Transactional; - -import javax.annotation.Resource; - -/** - * @Description: 会员项目表 - * @Author: jero-boot - * @Date: 2021-08-26 - * @Version: V1.0 - */ -@Service -@Transactional(rollbackFor = Exception.class) -public class PayPayMemberProjectServiceImpl extends ServiceImpl implements IPayMemberProjectService { - @Resource - private SysUserMapper userMapper; - @Resource - private PayMemberProjectMapper payMemberProjectMapper; - @Autowired - private IPayIncomeContractAssociatedService payIncomeContractAssociatedService; - @Resource - private IPayMemberProjectSubitemService memberProjectSubitemService; - @Autowired - private IPayIncomeContractService payIncomeContractService; - @Resource - private RolePermissionService rolePermissionService; - /** - * 保存 - * - * @param payMemberProject - * @return - */ - @Override - @Transactional - public void add(PayMemberProject payMemberProject) { - //判断项目名称 - LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); - wrapper.eq(PayMemberProject::getProjectName,payMemberProject.getProjectName()); - Integer integer = baseMapper.selectCount(wrapper); - if (integer>0){ - throw new JeroBootException("项目名称重复"); - } - //判断联系人 - String directorId = payMemberProject.getDirectorId(); - SysUser sysUser = userMapper.selectById(directorId); - if (sysUser == null){ - throw new JeroBootException("联系人不存在"); - } - payMemberProject.setDirectorName(sysUser.getUsername()); - save(payMemberProject); - } - - /** - * 更新 - * - * @param payMemberProject - * @return - */ - @Override - public void editById(PayMemberProject payMemberProject) { - saveOrUpdate(payMemberProject); - } - - /** - * 通过id删除 - * - * @param id - * @return - */ - @Override - public void deleteById(String id) { - LambdaQueryWrapper query = new LambdaQueryWrapper<>(); - query.eq(PayMemberProjectSubitem::getProjectId, id); - List listPayMemberProjectSubitem = memberProjectSubitemService.list(query); - if(!CollectionUtils.isEmpty(listPayMemberProjectSubitem)) { - throw new JeroBootException("会员项目下存在企业,不可进行删除!"); - } - removeById(id); - } - - /** - * 批量删除 - * - * @param ids - * @return - */ - @Override - public void deleteByIds(List ids) { - LambdaQueryWrapper query = new LambdaQueryWrapper<>(); - query.in(PayMemberProjectSubitem::getProjectId, ids); - List listPayMemberProjectSubitem = memberProjectSubitemService.list(query); - if(!CollectionUtils.isEmpty(listPayMemberProjectSubitem)) { - throw new JeroBootException("会员项目下存在企业,不可进行删除!"); - } - removeByIds(ids); - } - - /** - * 通过id查询 - * - * @param id - * @return - */ - @Override - public PayMemberProject queryById(String id) { - return getById(id); - } - - /** - * 列表查询 - * - * @return - */ - @Override - public List queryList() { - return list(); - } - - @Override - public IPage getPage(Page page, QueryWrapper queryWrapper) { - Page memberProjectPage = baseMapper.selectPage(page, queryWrapper); - List records = memberProjectPage.getRecords(); - for (PayMemberProject record : records) { - String directorId = record.getDirectorId(); - SysUser sysUser = userMapper.selectById(directorId); - record.setDirectorName(sysUser.getUsername()); - } - memberProjectPage.setRecords(records); - return memberProjectPage; - } - - - @Override - public IPage queryListByCompany(Page page, String companyId, String projectName, String projectType, Integer pack, String packYear) { - return payMemberProjectMapper.queryListByCompany(page,companyId, projectName,projectType, pack, packYear); - } - @Override - public void check(String projectId,String permission){ - LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); - if (!rolePermissionService.getRolePermission(permission)) { - PayMemberProject payMemberProject = payMemberProjectMapper.selectById(projectId); - if (!Objects.equals(payMemberProject.getDirectorId(),sysUser.getId())){ - throw new JeroBootException("权限不足"); - } - } - } -} diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/member/service/impl/PayPayMemberProjectSubitemServiceImpl.java b/jero-boot-incoming-payment/src/main/java/com/jero/member/service/impl/PayPayMemberProjectSubitemServiceImpl.java deleted file mode 100644 index a9aae00b..00000000 --- a/jero-boot-incoming-payment/src/main/java/com/jero/member/service/impl/PayPayMemberProjectSubitemServiceImpl.java +++ /dev/null @@ -1,519 +0,0 @@ -package com.jero.member.service.impl; - -import com.alibaba.fastjson.JSONObject; -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -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.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.jero.common.common.ProjectCommon; -import com.jero.common.dto.PaySendContactsMessageDTO; -import com.jero.common.exception.JeroBootException; -import com.jero.common.service.ContractCreateProjectSendMessageService; -import com.jero.common.service.ProjectDetailService; -import com.jero.common.service.RolePermissionService; -import com.jero.common.system.vo.LoginUser; -import com.jero.common.util.ValidUtil; -import com.jero.common.vo.ProjectStatusVO; -import com.jero.company.entity.PayContactsManagement; -import com.jero.company.service.IPayContactsManagementService; -import com.jero.contract.entity.PayIncomeContract; -import com.jero.contract.service.IPayIncomeContractService; -import com.jero.mail.service.IPayMailBillService; -import com.jero.member.entity.PayMemberProject; -import com.jero.member.entity.PayMemberProjectSubitem; -import com.jero.member.mapper.PayMemberProjectMapper; -import com.jero.member.mapper.PayMemberProjectSubitemMapper; -import com.jero.member.service.IPayMemberProjectService; -import com.jero.member.service.IPayMemberProjectSubitemService; -import com.jero.pack.entity.PayPackCompanyProject; -import com.jero.pack.service.IPayPackCompanyProjectService; -import com.jero.project.common.PayProjectCommon; -import com.jero.temporary.entity.PayCompanyManagementTemporary; -import com.jero.temporary.entity.PayContactsManagementTemporary; -import com.jero.temporary.service.IPayCompanyManagementTemporaryService; -import com.jero.temporary.service.IPayContactsManagementTemporaryService; -import com.jero.valid.group.ChargeNotice; -import com.jero.valid.group.Contract; -import org.apache.commons.lang3.StringUtils; -import org.apache.shiro.SecurityUtils; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -import javax.annotation.Resource; -import java.math.BigDecimal; -import java.util.*; - -/** - * @Description: 会员项目成员表 - * @Author: jero-boot - * @Date: 2021-08-26 - * @Version: V1.0 - */ -@Service -@Transactional(rollbackFor = Exception.class) -public class PayPayMemberProjectSubitemServiceImpl extends ServiceImpl implements IPayMemberProjectSubitemService { - - @Resource - private IPayContactsManagementService contactsManagementService; - @Resource - private IPayCompanyManagementTemporaryService companyManagementTemporaryService; - @Resource - private IPayContactsManagementTemporaryService contactsManagementTemporaryService; - @Resource - private IPayMemberProjectService memberProjectService; - @Autowired - private IPayIncomeContractService payIncomeContractService; - @Autowired - private IPayPackCompanyProjectService payPackCompanyProjectService; - @Autowired - private ProjectDetailService projectDetailService; - @Autowired - private ContractCreateProjectSendMessageService contractCreateProjectSendMessageService; - @Resource - private IPayMemberProjectSubitemService memberProjectSubitemService; - @Resource - private RolePermissionService rolePermissionService; - @Resource - private PayMemberProjectMapper payMemberProjectMapper; - @Resource - private IPayMailBillService payMailBillService; - /** - * 保存 - */ - @Override - public void add(PayMemberProjectSubitem payMemberProjectSubitem) { - String projectId = payMemberProjectSubitem.getProjectId(); - PayMemberProject memberProject = memberProjectService.getById(projectId); - if (memberProject == null){ - throw new JeroBootException("会员项目不存在"); - } - String companyId = payMemberProjectSubitem.getCompanyId(); - LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); - wrapper.eq(PayMemberProjectSubitem::getProjectId,projectId); - wrapper.eq(PayMemberProjectSubitem::getCompanyId,companyId); - int count = count(wrapper); - if (count>0){ - throw new JeroBootException("会员单位已经存在"); - } -// validMemberProjectSubitem(payMemberProjectSubitem); - validMemberProjectSubitemAdd(payMemberProjectSubitem); - //实收金额 - payMemberProjectSubitem.setPaidAmount(new BigDecimal("0.00")); - //到账 - payMemberProjectSubitem.setInAccount(PayProjectCommon.IN_ACCOUNT0); - //打包 - payMemberProjectSubitem.setPack(PayProjectCommon.PACKAGING0); - //开票 - payMemberProjectSubitem.setMakeInvoice(PayProjectCommon.MAKE_INVOICE0); - //邮寄 - payMemberProjectSubitem.setMail(PayProjectCommon.MAIL0); - save(payMemberProjectSubitem); - // 来款方式为合同,校验合同编号 - if(Objects.equals(payMemberProjectSubitem.getPaymentMethod(),PayProjectCommon.CHARGE_WAY2)){ - PayIncomeContract payIncomeContract = payIncomeContractService.setPayIncomeContractAssociated(payMemberProjectSubitem.getContractNo(),payMemberProjectSubitem.getCompanyId(),payMemberProjectSubitem.getId()); - if(!Objects.isNull(payIncomeContract)){ - // 合同存在 && 合同状态不为草稿,不为未通过 关联合同 - payIncomeContractService.insertPayIncomeContract(payIncomeContract,payMemberProjectSubitem.getId(),Integer.parseInt(PayProjectCommon.PROJECT_TYPE4)); - // 关联了合同,判断合同是否打包,更新项目打包状态,添加打包 - if(Objects.equals(payIncomeContract.getPack(),PayProjectCommon.PACKAGING1)){ - payPackCompanyProjectService.setPack(payMemberProjectSubitem.getCompanyId(),payMemberProjectSubitem.getCompanyContactId(),payIncomeContract.getPackYear(),payMemberProjectSubitem.getId(),PayProjectCommon.PROJECT_TYPE4,payIncomeContract.getPack()); - LambdaUpdateWrapper update = new LambdaUpdateWrapper<>(); - update.eq(PayMemberProjectSubitem::getId,payMemberProjectSubitem.getId()); - update.set(PayMemberProjectSubitem::getPack,PayProjectCommon.PACKAGING1); - update(update); - } - } - } - // 收入合同创建项目发送消息到项目负责人 - if(Objects.equals(ProjectCommon.FLAG,payMemberProjectSubitem.getFlag())){ - contractCreateProjectSendMessageService.contractCreateProjectSendMessageService(memberProject.getProjectName() + "的" + payMemberProjectSubitem.getCompanyName(),payMemberProjectSubitem.getId(),memberProject.getDirectorId()); - } - // 新建项目 给企业联系人发送消息 - PayContactsManagement payContactsManagement = contactsManagementService.getById(payMemberProjectSubitem.getCompanyContactId()); - if(!Objects.isNull(payContactsManagement)){ - PaySendContactsMessageDTO paySendContactsMessageDTO = new PaySendContactsMessageDTO(); - paySendContactsMessageDTO.setProjectName(memberProject.getProjectName()); - paySendContactsMessageDTO.setProjectId(payMemberProjectSubitem.getId()); - paySendContactsMessageDTO.setEmail(payContactsManagement.getEmail()); - paySendContactsMessageDTO.setPhone(payContactsManagement.getPhone()); - paySendContactsMessageDTO.setUserId(memberProject.getDirectorId()); - paySendContactsMessageDTO.setFlag(ProjectCommon.FLAG0); - // 项目的待确收金额>0 发送缴费通知 - if(payMemberProjectSubitem.getAmountReceivable().compareTo(new BigDecimal("0")) > 0){ - paySendContactsMessageDTO.setFlag(ProjectCommon.FLAG0 + "," + ProjectCommon.FLAG1); - } - JSONObject json = new JSONObject(); - json.put("type",ProjectCommon.PROJECT_TYPE4); - json.put("id",payMemberProjectSubitem.getId()); - json.put("path","MessagePage/ProjectDetailModal"); - paySendContactsMessageDTO.setJson(json); - contractCreateProjectSendMessageService.createProjectSendMessageToContactsService(paySendContactsMessageDTO); - } - } - - /** - * 更新 - */ - @Override - public void editById(PayMemberProjectSubitem payMemberProjectSubitem) { - String id = payMemberProjectSubitem.getId(); - PayMemberProjectSubitem payMemberProjectSubitem1 = getById(id); - if (payMemberProjectSubitem1 == null){ - throw new JeroBootException("会员项目不存在"); - } - // 项目为打包状态 || 到账!=0 || 开票!=0 || 邮寄!=0 - if(!Objects.equals(payMemberProjectSubitem.getCompanyId(),payMemberProjectSubitem1.getCompanyId()) - && (Objects.equals(payMemberProjectSubitem.getPack(),PayProjectCommon.PACKAGING1) - || !Objects.equals(payMemberProjectSubitem.getInAccount(),PayProjectCommon.IN_ACCOUNT0) - || !Objects.equals(payMemberProjectSubitem.getMakeInvoice(),PayProjectCommon.MAKE_INVOICE0) - || !Objects.equals(payMemberProjectSubitem.getMail(),PayProjectCommon.MAIL0))){ - throw new JeroBootException("来款企业不可更改!"); - } - // 校验项目是否已关联合同 - PayIncomeContract payIncomeContract = payIncomeContractService.checkPayIncomeContractAssociated(payMemberProjectSubitem.getId()); - if(!Objects.isNull(payIncomeContract)){ - if(!Objects.equals(payMemberProjectSubitem.getPaymentMethod(),payMemberProjectSubitem1.getPaymentMethod())){ - throw new JeroBootException("项目已关联合同,来款方式不可修改!"); - } - if(Objects.equals(payMemberProjectSubitem1.getPaymentMethod(),PayProjectCommon.CHARGE_WAY2) && !Objects.equals(payMemberProjectSubitem1.getContractNo(),payMemberProjectSubitem.getContractNo())){ - throw new JeroBootException("项目已关联合同,合同编号不可修改!"); - } - }else{ - PayIncomeContract payIncomeContractAdd = null; - // 来款方式为合同,校验合同编号 - if(Objects.equals(payMemberProjectSubitem.getPaymentMethod(),PayProjectCommon.CHARGE_WAY2)){ - payIncomeContractAdd = payIncomeContractService.setPayIncomeContractAssociated(payMemberProjectSubitem.getContractNo(),payMemberProjectSubitem.getCompanyId(),payMemberProjectSubitem.getId()); - } - if(!Objects.isNull(payIncomeContractAdd)){ - // 合同存在 && 合同状态不为草稿,不为未通过 关联合同 - payIncomeContractService.insertPayIncomeContract(payIncomeContractAdd,payMemberProjectSubitem.getId(),Integer.parseInt(PayProjectCommon.PROJECT_TYPE4)); - }else{ - payMemberProjectSubitem.setPack(PayProjectCommon.PACKAGING0); - } - // 关联了合同,判断合同是否打包,更新项目打包状态,添加打包 - if(!Objects.isNull(payIncomeContractAdd) && Objects.equals(payIncomeContractAdd.getPack(),PayProjectCommon.PACKAGING1)){ - payPackCompanyProjectService.setPack(payMemberProjectSubitem.getCompanyId(),payMemberProjectSubitem.getCompanyContactId(),payIncomeContractAdd.getPackYear(),payMemberProjectSubitem.getId(),PayProjectCommon.PROJECT_TYPE4,payIncomeContractAdd.getPack()); - } - } - //无法更改状态 - 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.getCompanyTemporaryId(); -// if (!payMemberProjectSubitem1.getCompanyTemporaryId().equals(companyId)) { -// companyManagementTemporaryService.removeById(companyId); -// } -// //如果原始企业联系人id和现在企业联系人id不同,就删除临时表数据 -// String companyContactId = payMemberProjectSubitem.getCompanyContactTemporaryId(); -// if (!payMemberProjectSubitem1.getCompanyContactTemporaryId().equals(companyContactId)) { -// contactsManagementTemporaryService.removeById(companyContactId); -// } -// //如果原始邮寄联系人id和现在邮寄联系人id不同,就删除临时表数据 -// String postContactId = payMemberProjectSubitem.getPostContactTemporaryId(); -// if (!payMemberProjectSubitem1.getPostContactTemporaryId().equals(postContactId)) { -// contactsManagementTemporaryService.removeById(postContactId); -// } - // 变更待确收金额,重新校验状态 - ProjectStatusVO projectStatusVO = projectDetailService.getStatus(payMemberProjectSubitem.getId(),payMemberProjectSubitem.getAmountReceivable(),payMemberProjectSubitem.getNeedInvoice()); - if(!Objects.isNull(projectStatusVO)){ - if(!Objects.isNull(projectStatusVO.getInAccount())){ - payMemberProjectSubitem.setInAccount(projectStatusVO.getInAccount()); - } - if(!Objects.isNull(projectStatusVO.getMakeInvoice())){ - payMemberProjectSubitem.setMakeInvoice(projectStatusVO.getMakeInvoice()); - } - if(!Objects.isNull(projectStatusVO.getMail())){ - payMemberProjectSubitem.setMail(projectStatusVO.getMail()); - } - } - // 选择无 - if(Objects.equals(payMemberProjectSubitem.getPaymentMethod(), PayProjectCommon.CHARGE_WAY1)){ - payMemberProjectSubitem.setContractNo(null); - payMemberProjectSubitem.setChargeNoticeNo(null); - payMemberProjectSubitem.setChargeNoticeFileId(null); - } - // 选择合同 - if(Objects.equals(payMemberProjectSubitem.getPaymentMethod(),PayProjectCommon.CHARGE_WAY2)){ - payMemberProjectSubitem.setChargeNoticeNo(null); - payMemberProjectSubitem.setChargeNoticeFileId(null); - } - // 选择收费通知 - if(Objects.equals(payMemberProjectSubitem.getPaymentMethod(),PayProjectCommon.CHARGE_WAY3)){ - payMemberProjectSubitem.setContractNo(null); - } - validMemberProjectSubitemEdit(payMemberProjectSubitem,payMemberProjectSubitem1); - saveOrUpdate(payMemberProjectSubitem); - // 如果有邮寄信息更新邮寄联系人信息 - String mailContactsId = payMemberProjectSubitem.getPostContactId(); - payMailBillService.updateContactByProjectId(mailContactsId,payMemberProjectSubitem.getId(), null); - } - - /** - * 校验会员项目成员 - * @param payMemberProjectSubitem 会员项目成员 - */ - public void validMemberProjectSubitemAdd(PayMemberProjectSubitem payMemberProjectSubitem) { - List errors = new ArrayList<>(); - // 企业 - try { - PayCompanyManagementTemporary chargeCompanyName = companyManagementTemporaryService.insertCompanyManagementTemporary(payMemberProjectSubitem.getCompanyId()); - if (Objects.isNull(chargeCompanyName)) { - throw new JeroBootException("企业名称为空!"); - } - payMemberProjectSubitem.setCompanyTemporaryId(chargeCompanyName.getId()); - payMemberProjectSubitem.setCompanyName(chargeCompanyName.getCompanyName()); - } catch (JeroBootException e) { - errors.add("会员单位不存在"); - } - // 联系人 - try { - PayContactsManagementTemporary contactsName = contactsManagementTemporaryService.insertContactsManagementTemporary(payMemberProjectSubitem.getCompanyContactId()); - if (Objects.isNull(contactsName)) { - throw new JeroBootException("联系人名称为空!"); - } - payMemberProjectSubitem.setCompanyContactTemporaryId(contactsName.getId()); - payMemberProjectSubitem.setCompanyContactName(contactsName.getName()); - } catch (JeroBootException e) { - errors.add("企业联系人不存在"); - } - try { - // 联系人 - PayContactsManagementTemporary postContactsName = contactsManagementTemporaryService.insertContactsManagementTemporary(payMemberProjectSubitem.getPostContactId()); - if (Objects.isNull(postContactsName)) { - throw new JeroBootException("邮寄联系人为空!"); - } - payMemberProjectSubitem.setPostContactTemporaryId(postContactsName.getId()); - payMemberProjectSubitem.setPostContactName(postContactsName.getName()); - } catch (JeroBootException e) { - errors.add("邮寄联系人不存在"); - } - - if (!errors.isEmpty()) { - throw new JeroBootException(StringUtils.join(errors, ",")); - } - //校验来款方式 - Integer paymentMethod = payMemberProjectSubitem.getPaymentMethod(); - //合同 - if (Objects.equals(paymentMethod, 2)) { - ValidUtil.validate(payMemberProjectSubitem, Contract.class); - } - //收费通知 - if (Objects.equals(paymentMethod, 3)) { - ValidUtil.validate(payMemberProjectSubitem, ChargeNotice.class); - } - } - - /** - * 校验会员项目成员 - * @param payMemberProjectSubitem 会员项目成员 - */ - public void validMemberProjectSubitemEdit(PayMemberProjectSubitem payMemberProjectSubitem,PayMemberProjectSubitem payMemberProjectSubitemOld) { - // 企业id != 企业模板id 变更 - if(!Objects.equals(payMemberProjectSubitem.getCompanyId(),payMemberProjectSubitemOld.getCompanyId())){ - // 企业 - PayCompanyManagementTemporary chargeCompanyName = companyManagementTemporaryService.insertCompanyManagementTemporary(payMemberProjectSubitem.getCompanyId()); - if(Objects.isNull(chargeCompanyName)){ - throw new JeroBootException("企业名称为空!"); - } - payMemberProjectSubitem.setCompanyTemporaryId(chargeCompanyName.getId()); - payMemberProjectSubitem.setCompanyName(chargeCompanyName.getCompanyName()); - companyManagementTemporaryService.removeById(payMemberProjectSubitemOld.getCompanyTemporaryId()); - } - - // 联系人id != 联系人模板id 变更 - // 联系人 - PayContactsManagementTemporary companyContact = contactsManagementTemporaryService.insertContactsManagementTemporary(payMemberProjectSubitem.getCompanyContactId()); - if(Objects.isNull(companyContact)){ - throw new JeroBootException("联系人名称为空!"); - } - payMemberProjectSubitem.setCompanyContactTemporaryId(companyContact.getId()); - payMemberProjectSubitem.setCompanyContactName(companyContact.getName()); - contactsManagementTemporaryService.removeById(payMemberProjectSubitemOld.getCompanyContactTemporaryId()); - - // 邮寄联系人id != 邮寄联系人模板id 变更 - if(!Objects.equals(payMemberProjectSubitem.getPostContactId(),payMemberProjectSubitemOld.getPostContactId())){ - // 联系人 - PayContactsManagementTemporary postContact = contactsManagementTemporaryService.insertContactsManagementTemporary(payMemberProjectSubitem.getPostContactId()); - if(Objects.isNull(postContact)){ - throw new JeroBootException("邮寄联系人为空!"); - } - payMemberProjectSubitem.setPostContactTemporaryId(postContact.getId()); - payMemberProjectSubitem.setPostContactName(postContact.getName()); - contactsManagementTemporaryService.removeById(payMemberProjectSubitemOld.getPostContactTemporaryId()); - } - - //校验来款方式 - Integer paymentMethod = payMemberProjectSubitem.getPaymentMethod(); - //合同 - if (Objects.equals(paymentMethod,2)){ - ValidUtil.validate(payMemberProjectSubitem, Contract.class); - } - //收费通知 - if (Objects.equals(paymentMethod,3)){ - ValidUtil.validate(payMemberProjectSubitem, ChargeNotice.class); - } - } - - /** - * 校验会员项目成员 - * @param payMemberProjectSubitem 会员项目成员 - */ - @Override - public void validMemberProjectSubitem(PayMemberProjectSubitem payMemberProjectSubitem) { - //校验企业 - String companyId = payMemberProjectSubitem.getCompanyId(); - PayCompanyManagementTemporary companyManagementTemporary = companyManagementTemporaryService.insertCompanyManagementTemporary(companyId); - payMemberProjectSubitem.setCompanyTemporaryId(companyManagementTemporary.getId()); - payMemberProjectSubitem.setCompanyName(companyManagementTemporary.getCompanyName()); - - //校验企业联系人 - String companyContactId = payMemberProjectSubitem.getCompanyContactId(); - PayContactsManagement contactsManagement = contactsManagementService.getById(companyContactId); - //校验是否是选择的企业的联系人 - String companyId1 = contactsManagement.getCompanyId(); - if (companyId1.equals(companyId)){ - PayContactsManagementTemporary contactsManagementTemporary = contactsManagementTemporaryService.insertContactsManagementTemporary(companyContactId); - payMemberProjectSubitem.setCompanyContactTemporaryId(contactsManagementTemporary.getId()); - payMemberProjectSubitem.setCompanyContactName(contactsManagementTemporary.getName()); - }else { - throw new JeroBootException("企业联系人不是所选企业的企业联系人"); - } - //校验邮寄联系人 - String postContactId = payMemberProjectSubitem.getPostContactId(); - PayContactsManagement postContact = contactsManagementService.getById(postContactId); - //校验是否是选择的企业的联系人 - String companyId2 = postContact.getCompanyId(); - if (companyId2.equals(companyId)){ - PayContactsManagementTemporary contactsManagementTemporary1 = contactsManagementTemporaryService.insertContactsManagementTemporary(postContactId); - payMemberProjectSubitem.setPostContactTemporaryId(contactsManagementTemporary1.getId()); - payMemberProjectSubitem.setPostContactName(contactsManagementTemporary1.getName()); - }else { - throw new JeroBootException("邮寄联系人不是所选企业的企业联系人"); - } - //校验来款方式 - Integer paymentMethod = payMemberProjectSubitem.getPaymentMethod(); - //合同 - if (Objects.equals(paymentMethod,2)){ - ValidUtil.validate(payMemberProjectSubitem, Contract.class); - } - //收费通知 - if (Objects.equals(paymentMethod,3)){ - ValidUtil.validate(payMemberProjectSubitem, ChargeNotice.class); - } - } - - /** - * 通过id删除 - */ - @Override - @Transactional - public void deleteById(String id) { - deleteProject(id); - // delectTemporaryById(id); - removeById(id); - } - - private void delectTemporaryById(String id) { - PayMemberProjectSubitem payMemberProjectSubitem = getById(id); - //删除临时表数据 - String companyId = payMemberProjectSubitem.getCompanyTemporaryId(); - companyManagementTemporaryService.removeById(companyId); - - String companyContactId = payMemberProjectSubitem.getCompanyContactTemporaryId(); - contactsManagementTemporaryService.removeById(companyContactId); - - String postContactId = payMemberProjectSubitem.getPostContactTemporaryId(); - contactsManagementTemporaryService.removeById(postContactId); - } - - /** - * 批量删除 - */ - @Override - @Transactional - public void deleteByIds(List ids) { - for (String id : ids) { - deleteProject(id); - // delectTemporaryById(id); - } - - removeByIds(ids); - } - - - /** - * @Description 删除项目打包关联,临时企业、联系信息 - * @Author lqt - * @Date 2021/9/18 - * @Param id 项目id - * @Return - * @Exception - */ - private void deleteProject(String id){ - PayMemberProjectSubitem payMemberProjectSubitem = memberProjectSubitemService.getById(id); - // 到账!=0 || 开票!=0 || 邮寄!=0 - if(!Objects.equals(payMemberProjectSubitem.getInAccount(), PayProjectCommon.IN_ACCOUNT0) - || !Objects.equals(payMemberProjectSubitem.getMakeInvoice(),PayProjectCommon.MAKE_INVOICE0) - || !Objects.equals(payMemberProjectSubitem.getMail(),PayProjectCommon.MAIL0)){ - throw new JeroBootException("项目已有到账信息不可删除!"); - } - // 校验项目是否已关联合同 抛异常 - payIncomeContractService.getPayIncomeContractAssociated(Collections.singletonList(payMemberProjectSubitem.getId())); - // 如果已打报,同步删除打包关联 - LambdaUpdateWrapper update = new LambdaUpdateWrapper<>(); - update.eq(PayPackCompanyProject::getProjectId,payMemberProjectSubitem.getId()); - payPackCompanyProjectService.remove(update); - // 删除企业联系人临时数据 - companyManagementTemporaryService.removeById(payMemberProjectSubitem.getCompanyTemporaryId()); - contactsManagementTemporaryService.removeByIds(Arrays.asList(payMemberProjectSubitem.getCompanyContactTemporaryId(),payMemberProjectSubitem.getPostContactTemporaryId())); - } - - /** - * 通过id查询 - */ - @Override - public PayMemberProjectSubitem queryById(String id) { - return getById(id); - } - - /** - * 列表查询 - */ - @Override - public List queryList() { - return list(); - } - - @Override - public IPage queryPageListCompany(Page page, QueryWrapper queryWrapper) { - return baseMapper.queryPageListCompany(page,queryWrapper); - } - - @Override - public List queryPageListCompany(QueryWrapper queryWrapper) { - return baseMapper.queryPageListCompany(queryWrapper); - } - - @Override - public IPage getPage(Page page, QueryWrapper queryWrapper) { - return baseMapper.getPage(page, queryWrapper); - } - @Override - public void check(String subitemId,String permission){ - LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); - if (!rolePermissionService.getRolePermission(permission)) { - PayMemberProjectSubitem payMemberProjectSubitem = baseMapper.selectById(subitemId); - PayMemberProject payMemberProject = payMemberProjectMapper.selectById(payMemberProjectSubitem.getProjectId()); - if (!Objects.equals(payMemberProject.getDirectorId(),sysUser.getId())){ - throw new JeroBootException("权限不足"); - } - } - } -} diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/member/service/impl/TbCertificatePaymentServiceImpl.java b/jero-boot-incoming-payment/src/main/java/com/jero/member/service/impl/TbCertificatePaymentServiceImpl.java deleted file mode 100644 index 6b68397d..00000000 --- a/jero-boot-incoming-payment/src/main/java/com/jero/member/service/impl/TbCertificatePaymentServiceImpl.java +++ /dev/null @@ -1,84 +0,0 @@ -package com.jero.member.service.impl; - -import com.jero.member.entity.TbCertificatePayment; -import com.jero.member.mapper.TbCertificatePaymentMapper; -import com.jero.member.service.ITbCertificatePaymentService; -import org.springframework.stereotype.Service; -import java.util.List; -import java.time.LocalDateTime; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; - -/** - * @Description: 证书缴费表 - * @Author: jero-boot - * @Date: 2021-12-14 - * @Version: V1.0 - */ -@Service -public class TbCertificatePaymentServiceImpl extends ServiceImpl implements ITbCertificatePaymentService { - - /** - * 保存 - * - * @param tbCertificatePayment - * @return - */ - @Override - public void add(TbCertificatePayment tbCertificatePayment) { - saveOrUpdate(tbCertificatePayment); - } - - /** - * 更新 - * - * @param tbCertificatePayment - * @return - */ - @Override - public void editById(TbCertificatePayment tbCertificatePayment) { - saveOrUpdate(tbCertificatePayment); - } - - /** - * 通过id删除 - * - * @param id - * @return - */ - @Override - public void deleteById(String id) { - removeById(id); - } - - /** - * 批量删除 - * - * @param ids - * @return - */ - @Override - public void deleteByIds(List ids) { - removeByIds(ids); - } - - /** - * 通过id查询 - * - * @param id - * @return - */ - @Override - public TbCertificatePayment queryById(String id) { - return getById(id); - } - - /** - * 列表查询 - * - * @return - */ - @Override - public List queryList() { - return list(); - } -} 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 deleted file mode 100644 index 399860d4..00000000 --- a/jero-boot-incoming-payment/src/main/java/com/jero/member/service/impl/TbMemberProjectServiceImpl.java +++ /dev/null @@ -1,147 +0,0 @@ -package com.jero.member.service.impl; - -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -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; -import com.jero.contract.service.IPayIncomeContractAssociatedService; -import com.jero.contract.service.IPayIncomeContractService; -import com.jero.member.entity.PayMemberProjectSubitem; -import com.baomidou.mybatisplus.core.metadata.IPage; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.jero.member.entity.TbMemberProject; -import com.jero.member.entity.TbMemberProjectSubitem; -import com.jero.member.mapper.TbMemberProjectMapper; -import com.jero.member.service.ITbMemberProjectService; -import com.jero.member.service.ITbMemberProjectSubitemService; -import org.apache.commons.collections.CollectionUtils; -import org.apache.shiro.SecurityUtils; -import org.springframework.beans.factory.annotation.Autowired; -import com.jero.project.entity.PayWorkGroupSubletStatistics; -import com.jero.statistics.entity.AllProjectStatistics; -import com.jero.statistics.entity.AllProjectStatisticsSearch; -import org.springframework.stereotype.Service; -import java.util.List; -import java.util.Objects; -import java.util.stream.Collectors; - -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import org.springframework.transaction.annotation.Transactional; - -import javax.annotation.Resource; - -/** - * @Description: 标协会员项目表 - * @Author: jero-boot - * @Date: 2021-09-01 - * @Version: V1.0 - */ -@Service -@Transactional(rollbackFor = Exception.class) -public class TbMemberProjectServiceImpl extends ServiceImpl implements ITbMemberProjectService { - - @Resource - private ITbMemberProjectSubitemService tbMemberProjectSubitemService; - - @Autowired - private IPayIncomeContractService payIncomeContractService; - @Resource - private RolePermissionService rolePermissionService; - /** - * 保存 - */ - @Override - public void add(TbMemberProject tbMemberProject) { - //一年只能有一个项目 - String year = tbMemberProject.getYear(); - check(year, null); - save(tbMemberProject); - } - - /** - * 一年只能有一个项目 - */ - private void check(String year, String id) { - LambdaQueryWrapper 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); - } - - /** - * 通过id删除 - */ - @Override - public void deleteById(String id) { - LambdaQueryWrapper query = new LambdaQueryWrapper<>(); - query.eq(TbMemberProjectSubitem::getProjectId, id); - List listTbMemberProjectSubitem = tbMemberProjectSubitemService.list(query); - if(!CollectionUtils.isEmpty(listTbMemberProjectSubitem)) { - throw new JeroBootException("标协会员项目下存在企业,不可进行删除!"); - } - removeById(id); - } - - /** - * 批量删除 - */ - @Override - public void deleteByIds(List ids) { - LambdaQueryWrapper query = new LambdaQueryWrapper<>(); - query.in(TbMemberProjectSubitem::getProjectId, ids); - List listTbMemberProjectSubitem = tbMemberProjectSubitemService.list(query); - if(!CollectionUtils.isEmpty(listTbMemberProjectSubitem)) { - throw new JeroBootException("标协会员项目下存在企业,不可进行删除!"); - } - removeByIds(ids); - } - - /** - * 通过id查询 - */ - @Override - public TbMemberProject queryById(String id) { - return getById(id); - } - - /** - * 列表查询 - */ - @Override - public List queryList() { - return list(); - } - - @Override - public IPage queryPageList(Page page, QueryWrapper queryWrapper) { - LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); - if (!rolePermissionService.getRolePermission("stardsMember:search")) { - queryWrapper.and( - a -> a.eq("pm.director_id",sysUser.getId()) - .or() - .eq("tmp.director_id",sysUser.getId()) - .or() - .eq("pmc.meeting_contacts_id", sysUser.getId()) - ); - } - return baseMapper.queryPageList(page,queryWrapper); - } - -} 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 deleted file mode 100644 index a952bf6b..00000000 --- a/jero-boot-incoming-payment/src/main/java/com/jero/member/service/impl/TbMemberProjectSubitemServiceImpl.java +++ /dev/null @@ -1,491 +0,0 @@ -package com.jero.member.service.impl; -import java.util.*; - -import cn.hutool.core.date.DateField; -import cn.hutool.core.date.DatePattern; -import cn.hutool.core.date.DateTime; -import cn.hutool.core.date.DateUtil; -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -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.enums.PaymentStatusEnum; -import com.jero.common.exception.JeroBootException; -import com.jero.common.service.RolePermissionService; -import com.jero.common.system.api.ISysBaseAPI; -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; -import com.jero.company.entity.PayCompanyManagement; -import com.jero.company.service.IPayCompanyManagementService; -import com.jero.contract.entity.PayIncomeContractAssociated; -import com.jero.contract.service.IPayIncomeContractAssociatedService; -import com.jero.contract.service.IPayIncomeContractService; -import com.jero.mail.entity.PayMailBillProject; -import com.jero.mail.service.IPayMailBillProjectService; -import com.jero.mail.service.IPayMailBillService; -import com.jero.meeting.entity.PayMeetingSituation; -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.service.ITbMemberProjectSubitemService; -import com.jero.member.vo.CopyMemberVO; -import com.jero.member.vo.EditMemberBenefitsVO; -import com.jero.member.vo.QueryAggVO; -import com.jero.pack.entity.PayPackCompanyProject; -import com.jero.pack.service.IPayPackCompanyProjectService; -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.statistics.entity.MemberLineChartMap; -import com.jero.statistics.entity.MemberLineChartVO; -import com.jero.statistics.entity.MemberPieChartVO; -import com.jero.temporary.service.IPayCompanyManagementTemporaryService; -import com.jero.temporary.service.IPayContactsManagementTemporaryService; -import com.sun.javaws.exceptions.JreExecException; -import org.apache.shiro.SecurityUtils; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; - -import java.math.BigDecimal; -import java.util.stream.Collectors; - -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import org.springframework.transaction.annotation.Transactional; - -import javax.annotation.Resource; -import javax.servlet.http.HttpServletRequest; - -import static freemarker.template.utility.NullArgumentException.check; - -/** - * @Description: 标协会员项目成员表 - * @Author: jero-boot - * @Date: 2021-09-01 - * @Version: V1.0 - */ -@Service -@Transactional(rollbackFor = Exception.class) -public class TbMemberProjectSubitemServiceImpl extends ServiceImpl implements ITbMemberProjectSubitemService { - - @Resource - private TbMemberProjectSubitemMapper tbMemberProjectSubitemMapper; - @Autowired - private IPayIncomeContractAssociatedService payIncomeContractAssociatedService; - @Autowired - private IPayIncomeContractService payIncomeContractService; - @Autowired - private IPayPackCompanyProjectService payPackCompanyProjectService; - @Autowired - private IPayCompanyManagementService companyManagementService; - @Autowired - private IPayContactsManagementTemporaryService payContactsManagementTemporaryService; - @Resource - private ITbMemberProjectSubitemService tbMemberProjectSubitemService; - @Resource - private RolePermissionService rolePermissionService; - @Resource - private IPayPaymentRecordService payPaymentRecordService; - @Resource - private PayConfirmPaymentRecordService payConfirmPaymentRecordService; - @Resource - private IPayMailBillProjectService payMailBillProjectService; - @Resource - private IPayMailBillService payMailBillService; - @Resource - private ISysBaseAPI sysBaseAPI; - @Resource - private PayMeetingSituationMapper payMeetingSituationMapper; - - /** - * 保存 - */ - @Override - public void add(TbMemberProjectSubitem tbMemberProjectSubitem) { - setDefaultCreateValue(tbMemberProjectSubitem); - - check(tbMemberProjectSubitem); - save(tbMemberProjectSubitem); - } - - /** - * 创建时默认值 - */ - private void setDefaultCreateValue(TbMemberProjectSubitem tbMemberProjectSubitem) { - //实收金额 - tbMemberProjectSubitem.setPaidAmount(BigDecimal.ZERO); - //到账 - tbMemberProjectSubitem.setInAccount(PayProjectCommon.IN_ACCOUNT0); - //开票 - tbMemberProjectSubitem.setMakeInvoice(PayProjectCommon.MAKE_INVOICE0); - //邮寄 - tbMemberProjectSubitem.setMail(PayProjectCommon.MAIL0); - //打包 - tbMemberProjectSubitem.setPack(PayProjectCommon.PACKAGING0); - //提票 - tbMemberProjectSubitem.setTicketCollection(PayProjectCommon.NO); - //会员状态 - tbMemberProjectSubitem.setMemberStatus(MemberStatusEnum.UNPAID_FEES.getValue()); - //缴费状态 - tbMemberProjectSubitem.setPaymentStatus(PaymentStatusEnum.TO_BE_UPLOADED.getCode()); - } - - public void check(TbMemberProjectSubitem tbMemberProjectSubitem){ - String companyId = tbMemberProjectSubitem.getCompanyId(); - String projectId = tbMemberProjectSubitem.getProjectId(); - //String id = tbMemberProjectSubitem.getId(); - 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("会员单位已经存在"); - } - } - - /** - * 更新 - */ - @Override - public void editById(TbMemberProjectSubitem tbMemberProjectSubitem) { - saveOrUpdate(tbMemberProjectSubitem); - } - - /** - * 通过id删除 - */ - @Override - public void deleteById(String id) { - deleteProject(id); - removeById(id); - } - - /** - * 批量删除 - */ - @Override - public void deleteByIds(List ids) { - ids.forEach(p->{ - deleteProject(p); - }); - removeByIds(ids); - } - - - /** - * @Description 删除项目打包关联,临时企业、联系信息 - * @Author lqt - * @Date 2021/9/18 - * @Param id 项目id - * @Return - * @Exception - */ - @Override - public void deleteProject(String id){ - //删除到账 - LambdaQueryWrapper wrapper1 = new LambdaQueryWrapper<>(); - wrapper1.eq(PayPaymentRecord::getProjectId,id); - payPaymentRecordService.remove(wrapper1); - //删除确认收入 - LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); - wrapper.eq(PayConfirmPaymentRecord::getProjectId,id); - payConfirmPaymentRecordService.remove(wrapper); - //删除开票 - LambdaQueryWrapper wrapper2 = new LambdaQueryWrapper<>(); - wrapper2.eq(PayMailBillProject::getProjectId,id); - payMailBillProjectService.remove(wrapper2); - - // 删除合同关联 - LambdaQueryWrapper queryPayIncomeContractAssociated = new LambdaQueryWrapper<>(); - queryPayIncomeContractAssociated.eq(PayIncomeContractAssociated::getProjectId,id); - payIncomeContractAssociatedService.remove(queryPayIncomeContractAssociated); - // 如果已打报,同步删除打包关联 - LambdaUpdateWrapper update = new LambdaUpdateWrapper<>(); - update.eq(PayPackCompanyProject::getProjectId,id); - payPackCompanyProjectService.remove(update); - } - - /** - * 通过id查询 - */ - @Override - public TbMemberProjectSubitem queryById(String id) { - return getById(id); - } - - /** - * 列表查询 - */ - @Override - public List queryList() { - return list(); - } - - @Override - public IPage queryListByCompany(Page page, String companyId, String projectType,Integer pack,String packYear) { - return tbMemberProjectSubitemMapper.queryListByCompany(page, companyId, projectType,pack,packYear); - } - - @Override - public IPage pageList(Page page, QueryWrapper queryWrapper) { - LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); - if (!rolePermissionService.getRolePermission("safeguardStardsMember:search")) { - queryWrapper.eq("tmp.director_id",sysUser.getId()); - } - return baseMapper.pageList(page,queryWrapper); - } - - @Override - public void ticketCollection(String id) { - LambdaUpdateWrapper updateWrapper = new LambdaUpdateWrapper<>(); - updateWrapper.eq(TbMemberProjectSubitem::getId,id); - updateWrapper.set(TbMemberProjectSubitem::getTicketCollection, PayProjectCommon.YES); - this.update(updateWrapper); - } - - /** - * 获得最新的生效数据,没有的话会返回null - * @param companyId - * @return - */ - @Override - public TbMemberProjectSubitem getTakeEffectInfo(String companyId){ - //获得所有生效数据 - List allByCompanyId = tbMemberProjectSubitemMapper.getAllTakeEffectByCompanyId(companyId); - //获取list中年份最大的数据 - Optional max = allByCompanyId.stream().max(Comparator.comparing(TbMemberProjectSubitem::getYear)); - //没有的话会返回null - return max.orElse(null); - } - - @Override - public void editMemberBenefits(EditMemberBenefitsVO editMemberBenefitsVO) { - String id = editMemberBenefitsVO.getId(); - Date effectiveDate = editMemberBenefitsVO.getEffectiveDate(); - Date invalidationDate = editMemberBenefitsVO.getInvalidationDate(); - - TbMemberProjectSubitem memberProjectSubitem = getById(id); - String companyId = memberProjectSubitem.getCompanyId(); - //获得有效数据 - TbMemberProjectSubitem takeEffectInfo = getTakeEffectInfo(companyId); - if (takeEffectInfo == null || !Objects.equals(takeEffectInfo.getId(),id)){ - throw new JeroBootException("只能修改最新生效会员数据"); - } - LambdaUpdateWrapper updateWrapper = new LambdaUpdateWrapper<>(); - updateWrapper.eq(TbMemberProjectSubitem::getId,id) - .set(TbMemberProjectSubitem::getEffectiveDate,effectiveDate) - .set(TbMemberProjectSubitem::getInvalidationDate,invalidationDate); - this.update(updateWrapper); - } - @Override - public void generateValidDate(String id){ - TbMemberProjectSubitem memberProjectSubitem = getById(id); - //如果有有效期就不执行了 - if (memberProjectSubitem.getEffectiveDate() != null){ - return; - } - String companyId = memberProjectSubitem.getCompanyId(); - //获得有效数据 - TbMemberProjectSubitem takeEffectInfo = getTakeEffectInfo(companyId); - DateTime effectiveDate; - LambdaUpdateWrapper updateWrapper = new LambdaUpdateWrapper<>(); - updateWrapper.eq(TbMemberProjectSubitem::getId,id); - DateTime date = DateUtil.date(); - //如果是新会员,或者当前日期大于之前的失效日期 - if (takeEffectInfo == null || DateUtil.compare(date,takeEffectInfo.getInvalidationDate()) > 0){ - //获得当月1日 - effectiveDate = DateUtil.beginOfMonth(date); - // 如果是续费 - }else { - //获取上一个失效日期 - Date previousInvalidationDate = takeEffectInfo.getInvalidationDate(); - //获得失效日期的下个月1日 - effectiveDate = DateUtil.beginOfMonth(DateUtil.date(previousInvalidationDate).offset(DateField.MONTH, 1)); - } - //获得生效日期明年当月月底 - DateTime invalidationDate = DateUtil.endOfMonth(effectiveDate.offset(DateField.YEAR, 1)); - //设置生效失效日期 - updateWrapper.set(TbMemberProjectSubitem::getEffectiveDate,effectiveDate); - updateWrapper.set(TbMemberProjectSubitem::getInvalidationDate,invalidationDate); - //设置会员状态为已缴费 - updateWrapper.set(TbMemberProjectSubitem::getMemberStatus,MemberStatusEnum.PAID.getValue()); - //如果是新会员,生成会员编号 - if (takeEffectInfo == null || memberProjectSubitem.getMemberNo() == null){ - //格式化日期为yyyyMMdd - String dateStr = date.toString(DatePattern.PURE_DATE_PATTERN); - String memberNoPrefix = "CASA" + dateStr; - Integer maxMemberNo = tbMemberProjectSubitemMapper.getMaxMemberNo(memberNoPrefix); - //生成会员编号 - String memberNo = buildMemberNo(memberNoPrefix, maxMemberNo); - updateWrapper.set(TbMemberProjectSubitem::getMemberNo,memberNo); - } - this.update(updateWrapper); - } - - private String buildMemberNo(String prefix, Integer no) { - if (no == null || no <= 0) { - return prefix + "001"; - } - String suffix = no.toString(); - while (suffix.length() < 3) { - suffix = "0" + suffix; - } - return prefix + suffix; - } - - @Override - public void copy(CopyMemberVO copyMemberVO) { - String projectId = copyMemberVO.getProjectId(); - String id = copyMemberVO.getId(); - copyOperation(projectId, id); - } - - /** - * 复制操作 - */ - private void copyOperation(String projectId, String id) { - TbMemberProjectSubitem memberProjectSubitem = this.getById(id); - //查询目标项目是否有当前企业 - memberProjectSubitem.setProjectId(projectId); - this.check(memberProjectSubitem); - //复制成员信息生成新成员 - TbMemberProjectSubitem newMemberProjectSubitem = setCopyValue(memberProjectSubitem); - this.setDefaultCreateValue(newMemberProjectSubitem); - newMemberProjectSubitem.setProjectId(projectId); - this.save(newMemberProjectSubitem); - } - - @Override - public void copyBatch(CopyMemberVO copyMemberVO) { - String projectId = copyMemberVO.getProjectId(); - String ids = copyMemberVO.getIds(); - for (String id : ids.split(",")) { - copyOperation(projectId, id); - } - } - - @Override - public MemberLineChartVO lineChart(Integer startYear, Integer endYear) { - MemberLineChartVO memberLineChartVO = new MemberLineChartVO(); - List byYear = tbMemberProjectSubitemMapper.getByYear(startYear, endYear); - Map map = byYear.stream().collect(Collectors.toMap(MemberLineChartMap::getYear, MemberLineChartMap::getValue)); - List value = new ArrayList<>(); - List year = new ArrayList<>(); - for (int i = startYear; i <= endYear; i++) { - year.add(i); - value.add(map.getOrDefault(i,"0")); - } - memberLineChartVO.setValue(value); - memberLineChartVO.setYear(year); - return memberLineChartVO; - } - - @Override - public List pieChart() { - - List allTakeEffect = tbMemberProjectSubitemMapper.getAllTakeEffect(); - Map> collect = allTakeEffect.stream().collect(Collectors.groupingBy(TbMemberProjectSubitem::getMemberNature)); - List dictModels = sysBaseAPI.queryDictItemsByCode("member_nature"); - List memberPieChartVOList = new ArrayList<>(); - for (DictModel dictModel : dictModels) { - MemberPieChartVO memberPieChartVO = new MemberPieChartVO(); - String value = dictModel.getValue(); - memberPieChartVO.setMemberNature(value); - memberPieChartVO.setValue(collect.getOrDefault(Integer.valueOf(value),new ArrayList<>()).size()+""); - memberPieChartVOList.add(memberPieChartVO); - } - return memberPieChartVOList; - } - - @Override - public IPage pieChartPage(Page page, QueryWrapper queryWrapper) { - return baseMapper.pieChartPage(page,queryWrapper); - } - - @Override - public void dataDownloadPower(QueryAggVO queryAggVO, HttpServletRequest request) { - String meetingId = queryAggVO.getMeetingId(); - String meetingType = queryAggVO.getMeetingType(); - LoginUser loginUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); - String userId = loginUser.getId(); - - String companyId = loginUser.getCompanyId(); - TbMemberProjectSubitem takeEffectInfo = getTakeEffectInfo(companyId); - boolean isNotMember = false; - if (takeEffectInfo == null){ - isNotMember = true; - } - //如果是标准宣贯&&学习培训要判断是否为参会人员 - if ("6".equals(meetingType) || "7".equals(meetingType)) { - LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); - wrapper.eq(PayMeetingSituation::getMeetingId,meetingId); - wrapper.eq(PayMeetingSituation::getCompanyContactId,userId); - Integer count = payMeetingSituationMapper.selectCount(wrapper); - - if (count <= 0 && isNotMember) { - throw new JeroBootException("只有参会人员和有效期内的缴费会员可以下载和预览文件!"); - } - }else if (isNotMember){ - throw new JeroBootException("只有有效期内的缴费会员可以下载和预览文件!"); - } - } - - @Override - public void enableMemberByCompanyName(String companyName) { - PayCompanyManagement company = companyManagementService.getCompanyByName(companyName); - TbMemberProjectSubitem takeEffectInfo = getTakeEffectInfo(company.getId()); - if (takeEffectInfo == null){ - throw new JeroBootException(companyName + "不是有效会员"); - } - } - - private TbMemberProjectSubitem setCopyValue(TbMemberProjectSubitem memberProjectSubitem) { - TbMemberProjectSubitem tbMemberProjectSubitem = new TbMemberProjectSubitem(); - tbMemberProjectSubitem.setMemberNo(memberProjectSubitem.getMemberNo()); - tbMemberProjectSubitem.setCompanyId(memberProjectSubitem.getCompanyId()); - tbMemberProjectSubitem.setCompanyName(memberProjectSubitem.getCompanyName()); - tbMemberProjectSubitem.setMemberNature(memberProjectSubitem.getMemberNature()); - tbMemberProjectSubitem.setMemberType(memberProjectSubitem.getMemberType()); - tbMemberProjectSubitem.setLiaisonManId(memberProjectSubitem.getLiaisonManId()); - tbMemberProjectSubitem.setLiaisonMan(memberProjectSubitem.getLiaisonMan()); - tbMemberProjectSubitem.setEmail(memberProjectSubitem.getEmail()); - tbMemberProjectSubitem.setMobile(memberProjectSubitem.getMobile()); - tbMemberProjectSubitem.setMemberStatus(memberProjectSubitem.getMemberStatus()); - tbMemberProjectSubitem.setRegisterTime(memberProjectSubitem.getRegisterTime()); - tbMemberProjectSubitem.setAmountReceivable(memberProjectSubitem.getAmountReceivable()); - tbMemberProjectSubitem.setEstimatedArrivalDate(memberProjectSubitem.getEstimatedArrivalDate()); - tbMemberProjectSubitem.setInvoiceRequirements(memberProjectSubitem.getInvoiceRequirements()); - tbMemberProjectSubitem.setTicketCollection(memberProjectSubitem.getTicketCollection()); - tbMemberProjectSubitem.setChargeUse(memberProjectSubitem.getChargeUse()); - tbMemberProjectSubitem.setPaymentMethod(memberProjectSubitem.getPaymentMethod()); - tbMemberProjectSubitem.setHeaderName(memberProjectSubitem.getHeaderName()); - tbMemberProjectSubitem.setTaxNumber(memberProjectSubitem.getTaxNumber()); - tbMemberProjectSubitem.setInvoiceAddress(memberProjectSubitem.getInvoiceAddress()); - tbMemberProjectSubitem.setInvoicePhone(memberProjectSubitem.getInvoicePhone()); - tbMemberProjectSubitem.setDepositBank(memberProjectSubitem.getDepositBank()); - tbMemberProjectSubitem.setBankAccount(memberProjectSubitem.getBankAccount()); - tbMemberProjectSubitem.setLinkBankNumber(memberProjectSubitem.getLinkBankNumber()); - tbMemberProjectSubitem.setTaxRate(memberProjectSubitem.getTaxRate()); - tbMemberProjectSubitem.setTax(memberProjectSubitem.getTax()); - tbMemberProjectSubitem.setNoTaxAmount(memberProjectSubitem.getNoTaxAmount()); - tbMemberProjectSubitem.setPostCompanyId(memberProjectSubitem.getPostCompanyId()); - tbMemberProjectSubitem.setPostContactId(memberProjectSubitem.getPostContactId()); - tbMemberProjectSubitem.setAdminAddFlag(memberProjectSubitem.getAdminAddFlag()); - tbMemberProjectSubitem.setContractNum(memberProjectSubitem.getContractNum()); - tbMemberProjectSubitem.setChargeNoticeNo(memberProjectSubitem.getChargeNoticeNo()); - tbMemberProjectSubitem.setChargeNoticeId(memberProjectSubitem.getChargeNoticeId()); - tbMemberProjectSubitem.setInvalidationDate(memberProjectSubitem.getInvalidationDate()); - tbMemberProjectSubitem.setEffectiveDate(memberProjectSubitem.getEffectiveDate()); - tbMemberProjectSubitem.setRemark(memberProjectSubitem.getRemark()); - return tbMemberProjectSubitem; - - } - - -}