普通项目,工作组项目添加权限

This commit is contained in:
梁琦涛
2021-10-19 14:30:01 +08:00
parent 9bed1cac68
commit c0df36f321
9 changed files with 133 additions and 23 deletions
@@ -2,6 +2,10 @@ package com.jero.common.common;
public class RoleCommon {
/**
* 项目负责人
*/
public final static String XMFZR = "xmfzr";
/**
* 财务人员
*/
@@ -18,6 +18,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.jero.common.api.vo.Result;
import com.jero.common.aspect.annotation.AutoLog;
import com.jero.common.common.ProjectCommon;
import com.jero.common.common.RoleCommon;
import com.jero.common.service.ProjectDetailService;
import com.jero.common.system.api.ISysBaseAPI;
import com.jero.common.system.base.controller.JeroController;
@@ -129,6 +130,11 @@ public class PayCommonProjectController extends JeroController<PayCommonProject,
payCommonProject.setContactsTemporaryName(oConvertUtils.replaceAllPercent(payCommonProject.getContactsTemporaryName()));
}
LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
if(Objects.equals(sysUser.getRoleCode(),RoleCommon.XMFZR)){
payCommonProject.setPrincipal(sysUser.getId());
}
Page<PayCommonProject> page = new Page<PayCommonProject>(pageNo, pageSize);
IPage<PayCommonProject> pageList = payCommonProjectService.queryPageList(page, payCommonProject, paymentDate);
if(!CollectionUtils.isEmpty(pageList.getRecords())){
@@ -365,6 +371,8 @@ public class PayCommonProjectController extends JeroController<PayCommonProject,
return Result.OK("编辑成功!");
}
/**
* 通过id删除
*
@@ -11,6 +11,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.jero.common.api.vo.Result;
import com.jero.common.aspect.annotation.AutoLog;
import com.jero.common.common.RoleCommon;
import com.jero.common.exception.JeroBootException;
import com.jero.common.system.base.controller.JeroController;
import com.jero.common.system.query.QueryGenerator;
@@ -75,18 +76,22 @@ public class PayWorkingGroupController extends JeroController<PayWorkingGroup, I
if(!StringUtils.isBlank(payWorkingGroup.getWorkingGroupProject()) && payWorkingGroup.getWorkingGroupProject().length() > 50){
return Result.error("工作组项目长度不能大于50个字符");
}
LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
if(Objects.equals(sysUser.getRoleCode(), RoleCommon.XMFZR)){
payWorkingGroup.setPrincipalA(sysUser.getId());
payWorkingGroup.setPrincipalB(sysUser.getId());
}
Page<PayWorkingGroupVO> page = new Page<PayWorkingGroupVO>(pageNo, pageSize);
if(!StringUtils.isBlank(payWorkingGroup.getWorkingGroupProject())){
payWorkingGroup.setWorkingGroupProject(oConvertUtils.replaceAllPercent(payWorkingGroup.getWorkingGroupProject()));
}
IPage<PayWorkingGroupVO> pageList = payWorkingGroupService.queryPageList(page, payWorkingGroup);
if(!Objects.isNull(pageList)){
LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
List<PayWorkingGroupVO> listPayWorkingGroupVO = pageList.getRecords();
if(!CollectionUtils.isEmpty(listPayWorkingGroupVO)){
setPayWorkingGroupSubItem(listPayWorkingGroupVO);
listPayWorkingGroupVO.forEach(p->{
if(Objects.equals(p.getPrincipalIdB(),sysUser.getId())){
if(Objects.equals(sysUser.getRoleCode(), RoleCommon.XMFZR) && Objects.equals(p.getPrincipalIdB(),sysUser.getId())){
p.setCheckoutOperation(PayProjectCommon.CHECKOUT_OPERATION2);
}else{
p.setCheckoutOperation(PayProjectCommon.CHECKOUT_OPERATION1);
@@ -308,6 +313,17 @@ public class PayWorkingGroupController extends JeroController<PayWorkingGroup, I
if(!StringUtils.isBlank(msg)){
return Result.error(msg.toString());
}
if(StringUtils.isEmpty(payWorkingGroup.getId())){
return Result.error("工作组id不能为空!");
}
PayWorkingGroup payWorkingGroupOld = payWorkingGroupService.getById(payWorkingGroup.getId());
if(Objects.isNull(payWorkingGroupOld)){
return Result.error(payWorkingGroupOld.getWorkingGroupProject() + "工作组不存在!");
}
LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
if(Objects.equals(sysUser.getRoleCode(), RoleCommon.XMFZR) && !Objects.equals(payWorkingGroupOld.getPrincipalA(),sysUser.getId())){
return Result.error(payWorkingGroupOld.getWorkingGroupProject() + "工作组项目不可操作!");
}
try {
// 编辑保存前再次校验来款项目是否存在
LambdaQueryWrapper<PayWorkingGroup> queryWrapper = new LambdaQueryWrapper<>();
@@ -202,4 +202,9 @@ public class PayCommonProject implements Serializable {
@TableField(exist = false)
@ApiModelProperty(value = "收入合同处新增标识 flag = 1")
private String flag;
/**
* 负责人(权限查询)
*/
@TableField(exist = false)
private String principal;
}
@@ -5,6 +5,7 @@ import java.math.BigDecimal;
import java.util.Date;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
@@ -141,4 +142,14 @@ public class PayWorkingGroup implements Serializable {
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
@ApiModelProperty(value = "更新时间")
private Date updateTime;
/**
* 负责人A(用于权限查询)
*/
@TableField(exist = false)
private String principalA;
/**
* 负责人B(用于权限查询)
*/
@TableField(exist = false)
private String principalB;
}
@@ -64,6 +64,9 @@
<if test="payCommonProject.year != null and payCommonProject.year != ''">
AND year = #{payCommonProject.year}
</if>
<if test="payCommonProject.principal != null and payCommonProject.principal != ''">
AND pcp.principal_id = #{payCommonProject.principal}
</if>
</where>
GROUP BY pcp.id ORDER BY pcp.create_time DESC
</select>
@@ -35,6 +35,9 @@
<if test="payWorkingGroup.year != null and payWorkingGroup.year != ''">
AND year = #{payWorkingGroup.year}
</if>
<if test="payWorkingGroup.principalA != null and payWorkingGroup.principalA != '' and payWorkingGroup.principalB != null and payWorkingGroup.principalB != ''">
AND (principal_id_a = #{payWorkingGroup.principalA} OR principal_id_b = #{payWorkingGroup.principalB})
</if>
</where>
ORDER BY create_time DESC
</select>
@@ -6,11 +6,15 @@ 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.common.ProjectCommon;
import com.jero.common.common.RoleCommon;
import com.jero.common.exception.JeroBootException;
import com.jero.common.service.ContractCreateProjectSendMessageService;
import com.jero.common.service.ProjectDetailService;
import com.jero.common.system.vo.LoginUser;
import com.jero.common.vo.ProjectStatusVO;
import com.jero.contract.entity.PayIncomeContract;
import com.jero.contract.entity.PayIncomeContractAssociated;
import com.jero.contract.service.IPayIncomeContractAssociatedService;
import com.jero.contract.service.IPayIncomeContractService;
import com.jero.modules.system.entity.SysUser;
import com.jero.modules.system.service.ISysUserService;
@@ -25,7 +29,9 @@ import com.jero.temporary.entity.PayContactsManagementTemporary;
import com.jero.temporary.service.IPayCompanyManagementTemporaryService;
import com.jero.temporary.service.IPayContactsManagementTemporaryService;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.shiro.SecurityUtils;
import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.transaction.annotation.Transactional;
@@ -60,6 +66,9 @@ public class PayCommonProjectServiceImpl extends ServiceImpl<PayCommonProjectMap
private ProjectDetailService projectDetailService;
@Resource
private ContractCreateProjectSendMessageService contractCreateProjectSendMessageService;
@Resource
private IPayIncomeContractAssociatedService payIncomeContractAssociatedService;
@@ -119,7 +128,11 @@ public class PayCommonProjectServiceImpl extends ServiceImpl<PayCommonProjectMap
public void editPayCommonProject(PayCommonProject payCommonProject) {
PayCommonProject payCommonProjectOld = payCommonProjectService.getById(payCommonProject);
if(Objects.isNull(payCommonProjectOld)){
throw new JeroBootException("项目不存在!");
throw new JeroBootException(payCommonProjectOld.getChargeProject() + "项目不存在!");
}
LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
if(Objects.equals(sysUser.getRoleCode(),RoleCommon.XMFZR) && !Objects.equals(sysUser.getId(),payCommonProjectOld.getPrincipalId())){
throw new JeroBootException(payCommonProjectOld.getChargeProject() + "项目不可操作!");
}
// 项目为打包状态 || 到账!=0 || 开票!=0 || 邮寄!=0
if(!Objects.equals(payCommonProject.getChargeCompanyId(),payCommonProjectOld.getChargeCompanyId())
@@ -212,7 +225,10 @@ public class PayCommonProjectServiceImpl extends ServiceImpl<PayCommonProjectMap
if(StringUtils.isBlank(id)){
throw new JeroBootException("id不能为空!");
}
deleteProject(id);
StringBuilder msg = deleteProject(id);
if(!StringUtils.isEmpty(msg)){
throw new JeroBootException(msg.toString());
}
payCommonProjectService.removeById(id);
}
@@ -223,11 +239,18 @@ public class PayCommonProjectServiceImpl extends ServiceImpl<PayCommonProjectMap
throw new JeroBootException("id不能为空!");
}
String[] s = ids.split(",");
StringBuilder msg = new StringBuilder();
for (String s1 : s) {
if(StringUtils.isBlank(s1)){
throw new JeroBootException("id不能为空!");
}
deleteProject(s1);
StringBuilder sb = deleteProject(s1);
if(!StringUtils.isEmpty(sb)){
msg.append(sb);
}
}
if(!StringUtils.isEmpty(msg)){
throw new JeroBootException(msg.toString());
}
this.payCommonProjectService.removeByIds(Arrays.asList(ids.split(",")));
}
@@ -245,23 +268,32 @@ public class PayCommonProjectServiceImpl extends ServiceImpl<PayCommonProjectMap
* @Return
* @Exception
*/
private void deleteProject(String id){
private StringBuilder deleteProject(String id){
StringBuilder sb = new StringBuilder();
PayCommonProject payCommonProject = payCommonProjectService.getById(id);
// 项目负责人权限最底层,其他任何权限都可直接操作,不需要认证当前项目是否为项目负责人
LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
if(Objects.equals(sysUser.getRoleCode(),RoleCommon.XMFZR) && !Objects.equals(payCommonProject.getPrincipalId(), sysUser.getId())){
sb.append(payCommonProject.getChargeProject() + "项目没有删除权限!<br/>");
}
if(!StringUtils.isEmpty(sb)){
return sb;
}
// 到账!=0
if(!Objects.equals(payCommonProject.getInAccount(),PayProjectCommon.IN_ACCOUNT0)){
throw new JeroBootException("项目已有到账信息不可删除!");
sb.append(payCommonProject.getChargeProject() + "项目已有到账信息不可删除!<br/>");
}else if(!Objects.equals(payCommonProject.getMakeInvoice(),PayProjectCommon.MAKE_INVOICE0)){// 开票!=0
sb.append(payCommonProject.getChargeProject() + "项目已有开票信息不可删除!<br/>");
}else if(!Objects.equals(payCommonProject.getMail(),PayProjectCommon.MAIL0)){// 邮寄!=0
sb.append(payCommonProject.getChargeProject() + "项目已有邮寄信息不可删除!<br/>");
}
// 开票!=0
if(!Objects.equals(payCommonProject.getMakeInvoice(),PayProjectCommon.MAKE_INVOICE0)){
throw new JeroBootException("项目已有开票信息不可删除!");
}
// 邮寄!=0
if(!Objects.equals(payCommonProject.getMail(),PayProjectCommon.MAIL0)){
throw new JeroBootException("项目已有邮寄信息不可删除!");
}
// 校验项目是否已关联合同 抛异常
payIncomeContractService.getPayIncomeContractAssociated(Collections.singletonList(payCommonProject.getId()));
LambdaQueryWrapper<PayIncomeContractAssociated> queryPayIncomeContractAssociated = new LambdaQueryWrapper<>();
queryPayIncomeContractAssociated.eq(PayIncomeContractAssociated::getProjectId,id);
List<PayIncomeContractAssociated> listPayIncomeContractAssociated = payIncomeContractAssociatedService.list(queryPayIncomeContractAssociated);
if(!CollectionUtils.isEmpty(listPayIncomeContractAssociated)){
sb.append(payCommonProject.getChargeProject() + "项目已关联合同不可删除!<br/>");
}
// 如果已打报,同步删除打包关联
LambdaUpdateWrapper<PayPackCompanyProject> update = new LambdaUpdateWrapper<>();
update.eq(PayPackCompanyProject::getProjectId,payCommonProject.getId());
@@ -269,6 +301,7 @@ public class PayCommonProjectServiceImpl extends ServiceImpl<PayCommonProjectMap
// 删除企业联系人临时数据
payCompanyManagementTemporaryService.removeById(payCommonProject.getChargeCompanyTemporaryId());
payContactsManagementTemporaryService.removeByIds(Arrays.asList(payCommonProject.getContactsTemporaryId(),payCommonProject.getMailContactsTemporaryId()));
return sb;
}
/**
@@ -4,7 +4,10 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
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.api.vo.Result;
import com.jero.common.common.RoleCommon;
import com.jero.common.exception.JeroBootException;
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;
@@ -18,6 +21,7 @@ import com.jero.project.mapper.PayWorkingGroupMapper;
import com.jero.statistics.entity.*;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.shiro.SecurityUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@@ -73,12 +77,20 @@ public class PayWorkingGroupServiceImpl extends ServiceImpl<PayWorkingGroupMappe
@Override
@Transactional
public void deleteById(String id) {
PayWorkingGroup payWorkingGroupOld = payWorkingGroupService.getById(id);
LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
if(Objects.equals(sysUser.getRoleCode(), RoleCommon.XMFZR) && !Objects.equals(payWorkingGroupOld.getPrincipalA(),sysUser.getId())){
throw new JeroBootException(payWorkingGroupOld.getWorkingGroupProject() + "工作组项目不可操作!");
}
LambdaQueryWrapper<PayWorkingGroupSubItem> query = new LambdaQueryWrapper<>();
query.eq(PayWorkingGroupSubItem::getWorkingGroupId,id);
List<PayWorkingGroupSubItem> listPayWorkingGroupSubItem = payWorkingGroupSubItemService.list(query);
if(!CollectionUtils.isEmpty(listPayWorkingGroupSubItem)) {
throw new JeroBootException("工作组下存在企业,不可进行删除!");
throw new JeroBootException(payWorkingGroupOld.getWorkingGroupProject() + "工作组下存在企业,不可进行删除!");
}
payWorkingGroupService.removeById(id);
LambdaUpdateWrapper<PayWorkingGroupSubItem> updatePayWorkingGroupSubItem = new LambdaUpdateWrapper<>();
updatePayWorkingGroupSubItem.eq(PayWorkingGroupSubItem::getWorkingGroupId,id);
@@ -88,11 +100,26 @@ public class PayWorkingGroupServiceImpl extends ServiceImpl<PayWorkingGroupMappe
@Override
@Transactional
public void deleteByIds(List<String> ids) {
LambdaQueryWrapper<PayWorkingGroupSubItem> query = new LambdaQueryWrapper<>();
query.in(PayWorkingGroupSubItem::getWorkingGroupId, ids);
List<PayWorkingGroupSubItem> listPayWorkingGroupSubItem = payWorkingGroupSubItemService.list(query);
if(!CollectionUtils.isEmpty(listPayWorkingGroupSubItem)) {
throw new JeroBootException("工作组下存在企业,不可进行删除!");
StringBuilder sb = new StringBuilder();
StringBuilder sb1 = new StringBuilder();
ids.forEach(p->{
PayWorkingGroup payWorkingGroupOld = payWorkingGroupService.getById(p);
LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
if(Objects.equals(sysUser.getRoleCode(), RoleCommon.XMFZR) && !Objects.equals(payWorkingGroupOld.getPrincipalA(),sysUser.getId())){
sb.append(payWorkingGroupOld.getWorkingGroupProject() + "工作组项目不可操作!<br/>");
}
LambdaQueryWrapper<PayWorkingGroupSubItem> query = new LambdaQueryWrapper<>();
query.eq(PayWorkingGroupSubItem::getWorkingGroupId, p);
List<PayWorkingGroupSubItem> listPayWorkingGroupSubItem = payWorkingGroupSubItemService.list(query);
if(!CollectionUtils.isEmpty(listPayWorkingGroupSubItem)) {
sb1.append(payWorkingGroupOld.getWorkingGroupProject() + "工作组下存在企业,不可进行删除!<br/");
}
});
if(!StringUtils.isEmpty(sb)){
throw new JeroBootException(sb.toString());
}
if(!StringUtils.isEmpty(sb1)){
throw new JeroBootException(sb1.toString());
}
payWorkingGroupService.removeByIds(ids);
LambdaUpdateWrapper<PayWorkingGroupSubItem> updatePayWorkingGroupSubItem = new LambdaUpdateWrapper<>();