add 企业端 标协会员项目成员表

This commit is contained in:
lijiarao
2024-03-18 14:49:54 +08:00
parent 53de5fbae6
commit e93fd2a911
16 changed files with 1181 additions and 1573 deletions
@@ -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<PayCompanyManagement> 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);
@@ -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<TbMemberPro
return Result.OK(pageList);
}
/**
* 企业端 标协会员项目成员表-分页列表查询
*/
@ApiOperation(value = "企业端 标协会员项目成员表-分页列表查询")
@GetMapping(value = "/pageCompany")
public Result<IPage<TbMemberProjectSubitem>> 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<TbMemberProjectSubitem> 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<TbMemberProjectSubitem> page = new Page<>(pageNo, pageSize);
IPage<TbMemberProjectSubitem> pageList = tbMemberProjectSubitemService.queryPageListCompany(page, queryWrapper);
return Result.OK(pageList);
}
/**
* 添加
*/
@@ -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;
}
@@ -51,4 +51,6 @@ public interface TbMemberProjectSubitemMapper extends BaseMapper<TbMemberProject
List<MemberLineChartMap> getByYear(@Param("startYear") Integer startYear, @Param("endYear") Integer endYear);
IPage<TbMemberProjectSubitem> pieChartPage(Page<TbMemberProjectSubitem> page, @Param(Constants.WRAPPER) QueryWrapper<TbMemberProjectSubitem> queryWrapper);
IPage<TbMemberProjectSubitem> queryPageListCompany(Page<TbMemberProjectSubitem> page, @Param(Constants.WRAPPER) QueryWrapper<TbMemberProjectSubitem> queryWrapper);
}
@@ -47,13 +47,15 @@
<result column="post_company_id" property="postCompanyId"/>
<result column="tax" property="tax"/>
<result column="tax_rate" property="taxRate"/>
</resultMap>
<sql id="a">
</sql>
<select id="queryPageListCompany" resultMap="MemberProjectSubitemResultMap">
select pmps.*,pmp.project_name,pmp.particular_year,pmp.director_id as director_name from pay_member_project_subitem pmps
select pmps.*,pmp.project_name,pmp.particular_year,pmp.director_id as director_name
from pay_member_project_subitem pmps
left join pay_member_project pmp on pmps.project_id = pmp.id
${ew.customSqlSegment}
</select>
@@ -132,4 +132,11 @@
GROUP BY company_id) AS t2 ON t2.id = t1.id
${ew.customSqlSegment}
</select>
<select id="queryPageListCompany" resultMap="TbMemberProjectSubitemResultMap">
select tmps.*
from tb_member_project_subitem tmps
LEFT JOIN tb_member_project tmp on tmp.id = tmps.project_id
${ew.customSqlSegment}
</select>
</mapper>
@@ -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<PayMemberProject> {
@Service
@Transactional(rollbackFor = Exception.class)
public class IPayMemberProjectService extends ServiceImpl<PayMemberProjectMapper, PayMemberProject> {
@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<PayMemberProject> 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<PayMemberProject> {
* @param payMemberProject
* @return
*/
void editById(PayMemberProject payMemberProject);
public void editById(PayMemberProject payMemberProject) {
saveOrUpdate(payMemberProject);
}
/**
* 通过id删除
@@ -38,7 +92,15 @@ public interface IPayMemberProjectService extends IService<PayMemberProject> {
* @param id
* @return
*/
void deleteById(String id);
public void deleteById(String id) {
LambdaQueryWrapper<PayMemberProjectSubitem> query = new LambdaQueryWrapper<>();
query.eq(PayMemberProjectSubitem::getProjectId, id);
List<PayMemberProjectSubitem> listPayMemberProjectSubitem = memberProjectSubitemService.list(query);
if(!CollectionUtils.isEmpty(listPayMemberProjectSubitem)) {
throw new JeroBootException("会员项目下存在企业,不可进行删除!");
}
removeById(id);
}
/**
* 批量删除
@@ -46,7 +108,15 @@ public interface IPayMemberProjectService extends IService<PayMemberProject> {
* @param ids
* @return
*/
void deleteByIds(List<String> ids);
public void deleteByIds(List<String> ids) {
LambdaQueryWrapper<PayMemberProjectSubitem> query = new LambdaQueryWrapper<>();
query.in(PayMemberProjectSubitem::getProjectId, ids);
List<PayMemberProjectSubitem> listPayMemberProjectSubitem = memberProjectSubitemService.list(query);
if(!CollectionUtils.isEmpty(listPayMemberProjectSubitem)) {
throw new JeroBootException("会员项目下存在企业,不可进行删除!");
}
removeByIds(ids);
}
/**
* 通过id查询
@@ -54,35 +124,42 @@ public interface IPayMemberProjectService extends IService<PayMemberProject> {
* @param id
* @return
*/
PayMemberProject queryById(String id);
public PayMemberProject queryById(String id) {
return getById(id);
}
/**
* 列表查询
*
* @return
*/
List<PayMemberProject> queryList();
public List<PayMemberProject> queryList() {
return list();
}
/**
* 分页查询
* @param page
* @param queryWrapper
* @return
*/
IPage<PayMemberProject> getPage(Page<PayMemberProject> page, QueryWrapper<PayMemberProject> queryWrapper);
public IPage<PayMemberProject> getPage(Page<PayMemberProject> page, QueryWrapper<PayMemberProject> queryWrapper) {
Page<PayMemberProject> memberProjectPage = baseMapper.selectPage(page, queryWrapper);
List<PayMemberProject> 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<PayMemberProject> queryListByCompany(Page<PayMemberProject> page, String companyId, String projectName, String projectType, Integer pack, String packYear);
void check(String projectId, String permission);
public IPage<PayMemberProject> queryListByCompany(Page<PayMemberProject> 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("权限不足");
}
}
}
}
@@ -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<PayMemberProjectSubitem> {
@Service
@Transactional(rollbackFor = Exception.class)
public class IPayMemberProjectSubitemService extends ServiceImpl<PayMemberProjectSubitemMapper, PayMemberProjectSubitem> {
@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<PayMemberProjectSubitem> 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<PayMemberProjectSubitem> 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<String> 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<String> ids);
@Transactional
public void deleteByIds(List<String> 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<PayPackCompanyProject> 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<PayMemberProjectSubitem> queryList();
public List<PayMemberProjectSubitem> queryList() {
return list();
}
IPage<PayMemberProjectSubitem> queryPageListCompany(Page<PayMemberProjectSubitem> page, QueryWrapper<PayMemberProjectSubitem> queryWrapper);
public IPage<PayMemberProjectSubitem> queryPageListCompany(Page<PayMemberProjectSubitem> page, QueryWrapper<PayMemberProjectSubitem> queryWrapper) {
return baseMapper.queryPageListCompany(page,queryWrapper);
}
List<PayMemberProjectSubitem> queryPageListCompany(QueryWrapper<PayMemberProjectSubitem> queryWrapper);
public List<PayMemberProjectSubitem> queryPageListCompany(QueryWrapper<PayMemberProjectSubitem> queryWrapper) {
return baseMapper.queryPageListCompany(queryWrapper);
}
IPage<PayMemberProjectSubitem> getPage(Page<PayMemberProjectSubitem> page, QueryWrapper<PayMemberProjectSubitem> queryWrapper);
void check(String subitemId, String permission);
public IPage<PayMemberProjectSubitem> getPage(Page<PayMemberProjectSubitem> page, QueryWrapper<PayMemberProjectSubitem> 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("权限不足");
}
}
}
}
@@ -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<TbCertificatePayment> {
@Service
public class ITbCertificatePaymentService extends ServiceImpl<TbCertificatePaymentMapper, TbCertificatePayment> {
/**
* 保存
*
* @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<String> ids);
public void deleteByIds(List<String> ids) {
removeByIds(ids);
}
/**
* 通过id查询
*
* @param id
* @return
*/
TbCertificatePayment queryById(String id);
public TbCertificatePayment queryById(String id) {
return getById(id);
}
/**
* 列表查询
*
* @return
*/
List<TbCertificatePayment> queryList();
public List<TbCertificatePayment> queryList() {
return list();
}
}
@@ -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<TbMemberProject> {
@Service
@Transactional(rollbackFor = Exception.class)
public class ITbMemberProjectService extends ServiceImpl<TbMemberProjectMapper, TbMemberProject> {
@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<TbMemberProject> 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<TbMemberProjectSubitem> query = new LambdaQueryWrapper<>();
query.eq(TbMemberProjectSubitem::getProjectId, id);
List<TbMemberProjectSubitem> listTbMemberProjectSubitem = tbMemberProjectSubitemService.list(query);
if(!CollectionUtils.isEmpty(listTbMemberProjectSubitem)) {
throw new JeroBootException("标协会员项目下存在企业,不可进行删除!");
}
removeById(id);
}
/**
* 批量删除
*
* @param ids
* @return
*/
void deleteByIds(List<String> ids);
public void deleteByIds(List<String> ids) {
LambdaQueryWrapper<TbMemberProjectSubitem> query = new LambdaQueryWrapper<>();
query.in(TbMemberProjectSubitem::getProjectId, ids);
List<TbMemberProjectSubitem> 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<TbMemberProject> queryList();
public List<TbMemberProject> queryList() {
return list();
}
public IPage<TbMemberProject> queryPageList(Page<TbMemberProject> page, QueryWrapper<TbMemberProject> 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<TbMemberProject> queryPageList(Page<TbMemberProject> page, QueryWrapper<TbMemberProject> queryWrapper);
}
@@ -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<TbMemberProjectSubitem> {
@Service
@Transactional(rollbackFor = Exception.class)
public class ITbMemberProjectSubitemService extends ServiceImpl<TbMemberProjectSubitemMapper, TbMemberProjectSubitem> {
@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<TbMemberProjectSubitem> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(TbMemberProjectSubitem::getProjectId, projectId);
wrapper.eq(TbMemberProjectSubitem::getCompanyId, companyId);
//wrapper.ne()
int count = this.count(wrapper);
if (count > 0) {
throw new JeroBootException("会员单位已经存在");
}
}
/**
* 更新
*
* @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<String> ids);
public void deleteByIds(List<String> ids) {
ids.forEach(p->{
deleteProject(p);
});
removeByIds(ids);
}
void deleteProject(String id);
/**
* 通过id查询
*
* @param id
* @return
*/
TbMemberProjectSubitem queryById(String id);
/**
* 列表查询
*
* @return
*/
List<TbMemberProjectSubitem> 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<TbMemberProjectSubitem> queryListByCompany(Page<TbMemberProjectSubitem> page, String companyId, String projectType,Integer pack,String packYear);
public void deleteProject(String id){
//删除到账
LambdaQueryWrapper<PayPaymentRecord> wrapper1 = new LambdaQueryWrapper<>();
wrapper1.eq(PayPaymentRecord::getProjectId,id);
payPaymentRecordService.remove(wrapper1);
//删除确认收入
LambdaQueryWrapper<PayConfirmPaymentRecord> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(PayConfirmPaymentRecord::getProjectId,id);
payConfirmPaymentRecordService.remove(wrapper);
//删除开票
LambdaQueryWrapper<PayMailBillProject> wrapper2 = new LambdaQueryWrapper<>();
wrapper2.eq(PayMailBillProject::getProjectId,id);
payMailBillProjectService.remove(wrapper2);
IPage<TbMemberProjectSubitem> pageList(Page<TbMemberProjectSubitem> page, QueryWrapper<TbMemberProjectSubitem> queryWrapper);
// 删除合同关联
LambdaQueryWrapper<PayIncomeContractAssociated> queryPayIncomeContractAssociated = new LambdaQueryWrapper<>();
queryPayIncomeContractAssociated.eq(PayIncomeContractAssociated::getProjectId,id);
payIncomeContractAssociatedService.remove(queryPayIncomeContractAssociated);
// 如果已打报,同步删除打包关联
LambdaUpdateWrapper<PayPackCompanyProject> 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<TbMemberProjectSubitem> queryList() {
return list();
}
void editMemberBenefits(EditMemberBenefitsVO editMemberBenefitsVO);
public IPage<TbMemberProjectSubitem> queryListByCompany(Page<TbMemberProjectSubitem> page, String companyId, String projectType,Integer pack,String packYear) {
return tbMemberProjectSubitemMapper.queryListByCompany(page, companyId, projectType,pack,packYear);
}
void generateValidDate(String id);
public IPage<TbMemberProjectSubitem> pageList(Page<TbMemberProjectSubitem> page, QueryWrapper<TbMemberProjectSubitem> 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<TbMemberProjectSubitem> 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<TbMemberProjectSubitem> allByCompanyId = tbMemberProjectSubitemMapper.getAllTakeEffectByCompanyId(companyId);
//获取list中年份最大的数据
Optional<TbMemberProjectSubitem> 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<MemberPieChartVO> 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<TbMemberProjectSubitem> 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<TbMemberProjectSubitem> 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<TbMemberProjectSubitem> pieChartPage(Page<TbMemberProjectSubitem> page, QueryWrapper<TbMemberProjectSubitem> 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<MemberLineChartMap> byYear = tbMemberProjectSubitemMapper.getByYear(startYear, endYear);
Map<Integer, String> map = byYear.stream().collect(Collectors.toMap(MemberLineChartMap::getYear, MemberLineChartMap::getValue));
List<String> value = new ArrayList<>();
List<Integer> 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<MemberPieChartVO> pieChart() {
List<TbMemberProjectSubitem> allTakeEffect = tbMemberProjectSubitemMapper.getAllTakeEffect();
Map<Integer, List<TbMemberProjectSubitem>> collect = allTakeEffect.stream().collect(Collectors.groupingBy(TbMemberProjectSubitem::getMemberNature));
List<DictModel> dictModels = sysBaseAPI.queryDictItemsByCode("member_nature");
List<MemberPieChartVO> 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<TbMemberProjectSubitem> pieChartPage(Page<TbMemberProjectSubitem> page, QueryWrapper<TbMemberProjectSubitem> 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<PayMeetingSituation> 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<TbMemberProjectSubitem> queryPageListCompany(Page<TbMemberProjectSubitem> page, QueryWrapper<TbMemberProjectSubitem> queryWrapper) {
return baseMapper.queryPageListCompany(page, queryWrapper);
}
}
@@ -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<PayMemberProjectMapper, PayMemberProject> 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<PayMemberProject> 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<PayMemberProjectSubitem> query = new LambdaQueryWrapper<>();
query.eq(PayMemberProjectSubitem::getProjectId, id);
List<PayMemberProjectSubitem> listPayMemberProjectSubitem = memberProjectSubitemService.list(query);
if(!CollectionUtils.isEmpty(listPayMemberProjectSubitem)) {
throw new JeroBootException("会员项目下存在企业,不可进行删除!");
}
removeById(id);
}
/**
* 批量删除
*
* @param ids
* @return
*/
@Override
public void deleteByIds(List<String> ids) {
LambdaQueryWrapper<PayMemberProjectSubitem> query = new LambdaQueryWrapper<>();
query.in(PayMemberProjectSubitem::getProjectId, ids);
List<PayMemberProjectSubitem> 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<PayMemberProject> queryList() {
return list();
}
@Override
public IPage<PayMemberProject> getPage(Page<PayMemberProject> page, QueryWrapper<PayMemberProject> queryWrapper) {
Page<PayMemberProject> memberProjectPage = baseMapper.selectPage(page, queryWrapper);
List<PayMemberProject> 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<PayMemberProject> queryListByCompany(Page<PayMemberProject> 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("权限不足");
}
}
}
}
@@ -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<PayMemberProjectSubitemMapper, PayMemberProjectSubitem> 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<PayMemberProjectSubitem> 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<PayMemberProjectSubitem> 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<String> 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<String> 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<PayPackCompanyProject> 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<PayMemberProjectSubitem> queryList() {
return list();
}
@Override
public IPage<PayMemberProjectSubitem> queryPageListCompany(Page<PayMemberProjectSubitem> page, QueryWrapper<PayMemberProjectSubitem> queryWrapper) {
return baseMapper.queryPageListCompany(page,queryWrapper);
}
@Override
public List<PayMemberProjectSubitem> queryPageListCompany(QueryWrapper<PayMemberProjectSubitem> queryWrapper) {
return baseMapper.queryPageListCompany(queryWrapper);
}
@Override
public IPage<PayMemberProjectSubitem> getPage(Page<PayMemberProjectSubitem> page, QueryWrapper<PayMemberProjectSubitem> 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("权限不足");
}
}
}
}
@@ -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<TbCertificatePaymentMapper, TbCertificatePayment> 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<String> ids) {
removeByIds(ids);
}
/**
* 通过id查询
*
* @param id
* @return
*/
@Override
public TbCertificatePayment queryById(String id) {
return getById(id);
}
/**
* 列表查询
*
* @return
*/
@Override
public List<TbCertificatePayment> queryList() {
return list();
}
}
@@ -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<TbMemberProjectMapper, TbMemberProject> 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<TbMemberProject> 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<TbMemberProjectSubitem> query = new LambdaQueryWrapper<>();
query.eq(TbMemberProjectSubitem::getProjectId, id);
List<TbMemberProjectSubitem> listTbMemberProjectSubitem = tbMemberProjectSubitemService.list(query);
if(!CollectionUtils.isEmpty(listTbMemberProjectSubitem)) {
throw new JeroBootException("标协会员项目下存在企业,不可进行删除!");
}
removeById(id);
}
/**
* 批量删除
*/
@Override
public void deleteByIds(List<String> ids) {
LambdaQueryWrapper<TbMemberProjectSubitem> query = new LambdaQueryWrapper<>();
query.in(TbMemberProjectSubitem::getProjectId, ids);
List<TbMemberProjectSubitem> 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<TbMemberProject> queryList() {
return list();
}
@Override
public IPage<TbMemberProject> queryPageList(Page<TbMemberProject> page, QueryWrapper<TbMemberProject> 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);
}
}
@@ -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<TbMemberProjectSubitemMapper, TbMemberProjectSubitem> 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<TbMemberProjectSubitem> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(TbMemberProjectSubitem::getProjectId, projectId);
wrapper.eq(TbMemberProjectSubitem::getCompanyId, companyId);
//wrapper.ne()
int count = this.count(wrapper);
if (count > 0) {
throw new JeroBootException("会员单位已经存在");
}
}
/**
* 更新
*/
@Override
public void editById(TbMemberProjectSubitem tbMemberProjectSubitem) {
saveOrUpdate(tbMemberProjectSubitem);
}
/**
* 通过id删除
*/
@Override
public void deleteById(String id) {
deleteProject(id);
removeById(id);
}
/**
* 批量删除
*/
@Override
public void deleteByIds(List<String> 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<PayPaymentRecord> wrapper1 = new LambdaQueryWrapper<>();
wrapper1.eq(PayPaymentRecord::getProjectId,id);
payPaymentRecordService.remove(wrapper1);
//删除确认收入
LambdaQueryWrapper<PayConfirmPaymentRecord> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(PayConfirmPaymentRecord::getProjectId,id);
payConfirmPaymentRecordService.remove(wrapper);
//删除开票
LambdaQueryWrapper<PayMailBillProject> wrapper2 = new LambdaQueryWrapper<>();
wrapper2.eq(PayMailBillProject::getProjectId,id);
payMailBillProjectService.remove(wrapper2);
// 删除合同关联
LambdaQueryWrapper<PayIncomeContractAssociated> queryPayIncomeContractAssociated = new LambdaQueryWrapper<>();
queryPayIncomeContractAssociated.eq(PayIncomeContractAssociated::getProjectId,id);
payIncomeContractAssociatedService.remove(queryPayIncomeContractAssociated);
// 如果已打报,同步删除打包关联
LambdaUpdateWrapper<PayPackCompanyProject> update = new LambdaUpdateWrapper<>();
update.eq(PayPackCompanyProject::getProjectId,id);
payPackCompanyProjectService.remove(update);
}
/**
* 通过id查询
*/
@Override
public TbMemberProjectSubitem queryById(String id) {
return getById(id);
}
/**
* 列表查询
*/
@Override
public List<TbMemberProjectSubitem> queryList() {
return list();
}
@Override
public IPage<TbMemberProjectSubitem> queryListByCompany(Page<TbMemberProjectSubitem> page, String companyId, String projectType,Integer pack,String packYear) {
return tbMemberProjectSubitemMapper.queryListByCompany(page, companyId, projectType,pack,packYear);
}
@Override
public IPage<TbMemberProjectSubitem> pageList(Page<TbMemberProjectSubitem> page, QueryWrapper<TbMemberProjectSubitem> 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<TbMemberProjectSubitem> 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<TbMemberProjectSubitem> allByCompanyId = tbMemberProjectSubitemMapper.getAllTakeEffectByCompanyId(companyId);
//获取list中年份最大的数据
Optional<TbMemberProjectSubitem> 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<TbMemberProjectSubitem> 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<TbMemberProjectSubitem> 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<MemberLineChartMap> byYear = tbMemberProjectSubitemMapper.getByYear(startYear, endYear);
Map<Integer, String> map = byYear.stream().collect(Collectors.toMap(MemberLineChartMap::getYear, MemberLineChartMap::getValue));
List<String> value = new ArrayList<>();
List<Integer> 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<MemberPieChartVO> pieChart() {
List<TbMemberProjectSubitem> allTakeEffect = tbMemberProjectSubitemMapper.getAllTakeEffect();
Map<Integer, List<TbMemberProjectSubitem>> collect = allTakeEffect.stream().collect(Collectors.groupingBy(TbMemberProjectSubitem::getMemberNature));
List<DictModel> dictModels = sysBaseAPI.queryDictItemsByCode("member_nature");
List<MemberPieChartVO> 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<TbMemberProjectSubitem> pieChartPage(Page<TbMemberProjectSubitem> page, QueryWrapper<TbMemberProjectSubitem> 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<PayMeetingSituation> 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;
}
}