1、移除无用post岗位代码;2、发票管理单元测试完善,优惠活动单测覆盖率异常修复;

This commit is contained in:
gaoqr
2025-12-16 16:27:25 +08:00
parent bdeb0366f9
commit 010678724d
19 changed files with 1310 additions and 274 deletions
@@ -61,7 +61,7 @@ public class UserProfileController {
DeptDO dept = user.getDeptId() != null ? deptService.getDept(user.getDeptId()) : null;
// 获得社交用户信息
List<SocialUserDO> socialUsers = socialService.getSocialUserList(user.getId(), UserTypeEnum.ADMIN.getValue());
return success(UserConvert.INSTANCE.convert(user, userRoles, dept, null, socialUsers));
return success(UserConvert.INSTANCE.convert(user, userRoles, dept, socialUsers));
}
@PutMapping("/update")
@@ -10,7 +10,6 @@ import com.cf.imes.module.system.controller.admin.user.vo.user.UserExportRespVO;
import com.cf.imes.module.system.controller.admin.user.vo.user.UserRespVO;
import com.cf.imes.module.system.controller.admin.user.vo.user.UserSimpleRespVO;
import com.cf.imes.module.system.dal.dataobject.dept.DeptDO;
import com.cf.imes.module.system.dal.dataobject.dept.PostDO;
import com.cf.imes.module.system.dal.dataobject.permission.RoleDO;
import com.cf.imes.module.system.dal.dataobject.social.SocialUserDO;
import com.cf.imes.module.system.dal.dataobject.user.AdminUserDO;
@@ -59,11 +58,10 @@ public interface UserConvert {
}
default UserProfileRespVO convert(AdminUserDO user, List<RoleDO> userRoles,
DeptDO dept, List<PostDO> posts, List<SocialUserDO> socialUsers) {
DeptDO dept, List<SocialUserDO> socialUsers) {
UserProfileRespVO userVO = BeanUtils.toBean(user, UserProfileRespVO.class);
userVO.setRoles(BeanUtils.toBean(userRoles, RoleSimpleRespVO.class));
userVO.setDept(BeanUtils.toBean(dept, DeptSimpleRespVO.class));
// userVO.setPosts(BeanUtils.toBean(posts, PostSimpleRespVO.class));
userVO.setSocialUsers(BeanUtils.toBean(socialUsers, UserProfileRespVO.SocialUser.class));
return userVO;
}
@@ -1,51 +0,0 @@
package com.cf.imes.module.system.dal.dataobject.dept;
import com.cf.imes.framework.common.enums.CommonStatusEnum;
import com.cf.imes.framework.mybatis.core.dataobject.BaseDO;
import com.baomidou.mybatisplus.annotation.KeySequence;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.cf.imes.framework.organ.core.db.OrganBaseDO;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
* 岗位表
*
* @author ruoyi
*/
@TableName("system_post")
@KeySequence("system_post_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
@Data
@EqualsAndHashCode(callSuper = true)
public class PostDO extends OrganBaseDO {
/**
* 岗位序号
*/
@TableId
private Long id;
/**
* 岗位名称
*/
private String name;
/**
* 岗位编码
*/
private String code;
/**
* 岗位排序
*/
private Integer sort;
/**
* 状态
*
* 枚举 {@link CommonStatusEnum}
*/
private Integer status;
/**
* 备注
*/
private String remark;
}
@@ -1,40 +0,0 @@
package com.cf.imes.module.system.dal.dataobject.dept;
import com.cf.imes.framework.mybatis.core.dataobject.BaseDO;
import com.cf.imes.module.system.dal.dataobject.user.AdminUserDO;
import com.baomidou.mybatisplus.annotation.KeySequence;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
* 用户和岗位关联
*
* @author ruoyi
*/
@TableName("system_user_post")
@KeySequence("system_user_post_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
@Data
@EqualsAndHashCode(callSuper = true)
public class UserPostDO extends BaseDO {
/**
* 自增主键
*/
@TableId
private Long id;
/**
* 用户 ID
*
* 关联 {@link AdminUserDO#getId()}
*/
private Long userId;
/**
* 角色 ID
*
* 关联 {@link PostDO#getId()}
*/
private Long postId;
}
@@ -1,82 +0,0 @@
package com.cf.imes.module.system.dal.mysql.dept;
import com.cf.imes.framework.common.pojo.PageResult;
import com.cf.imes.framework.mybatis.core.mapper.BaseMapperX;
import com.cf.imes.framework.mybatis.core.query.LambdaQueryWrapperX;
import com.cf.imes.framework.organ.core.context.OrganContextHolder;
import com.cf.imes.framework.security.core.LoginUser;
import com.cf.imes.framework.security.core.util.SecurityFrameworkUtils;
import com.cf.imes.module.system.controller.admin.dept.vo.post.PostPageReqVO;
import com.cf.imes.module.system.dal.dataobject.dept.PostDO;
import org.apache.ibatis.annotations.Mapper;
import java.util.Collection;
import java.util.List;
import java.util.Objects;
@Mapper
public interface PostMapper extends BaseMapperX<PostDO> {
default List<PostDO> selectList(Collection<Long> ids, Collection<Integer> statuses, Long organId) {
return selectList(new LambdaQueryWrapperX<PostDO>()
.eqIfPresent(PostDO::getOrganId, organId)
.inIfPresent(PostDO::getId, ids)
.inIfPresent(PostDO::getStatus, statuses));
}
default PageResult<PostDO> selectPage(PostPageReqVO reqVO) {
LambdaQueryWrapperX<PostDO> lambdaQueryWrapperX = new LambdaQueryWrapperX<>();
LoginUser loginUser = SecurityFrameworkUtils.getLoginUser();
assert loginUser != null;
Boolean isSupAdmin = loginUser.getIsSupAdmin();
if(isSupAdmin && !Objects.isNull(reqVO.getOrganId())) {
lambdaQueryWrapperX.eqIfPresent(PostDO::getOrganId, reqVO.getOrganId());
}else{
lambdaQueryWrapperX.eqIfPresent(PostDO::getOrganId, loginUser.getOrganId());
}
lambdaQueryWrapperX.likeIfPresent(PostDO::getCode, reqVO.getCode())
.likeIfPresent(PostDO::getName, reqVO.getName())
.eqIfPresent(PostDO::getStatus, reqVO.getStatus());
if (reqVO.getOrder() == null) {
lambdaQueryWrapperX.orderByDesc(PostDO::getSort);
} else {
if (reqVO.getOrder().equals("ascend")) {
switch (reqVO.getField()) {
case "name" -> lambdaQueryWrapperX.orderByAsc(PostDO::getName);
case "code" -> lambdaQueryWrapperX.orderByAsc(PostDO::getCode);
case "sort" -> lambdaQueryWrapperX.orderByAsc(PostDO::getSort);
case "status" -> lambdaQueryWrapperX.orderByAsc(PostDO::getStatus);
case "create_time" -> lambdaQueryWrapperX.orderByAsc(PostDO::getCreateTime);
default -> {
// default不排序
}
}
} else if (reqVO.getOrder().equals("descend")) {
switch (reqVO.getField()) {
case "name" -> lambdaQueryWrapperX.orderByDesc(PostDO::getName);
case "code" -> lambdaQueryWrapperX.orderByDesc(PostDO::getCode);
case "sort" -> lambdaQueryWrapperX.orderByDesc(PostDO::getSort);
case "status" -> lambdaQueryWrapperX.orderByDesc(PostDO::getStatus);
case "create_time" -> lambdaQueryWrapperX.orderByDesc(PostDO::getCreateTime);
default -> {
// default不排序
}
}
}
}
return selectPage(reqVO, lambdaQueryWrapperX);
}
default PostDO selectByName(String name) {
return selectOne(PostDO::getName, name, PostDO::getOrganId, OrganContextHolder.getOrganId());
}
default PostDO selectByCode(String code) {
return selectOne(PostDO::getCode, code, PostDO::getOrganId, OrganContextHolder.getOrganId());
}
}
@@ -1,32 +0,0 @@
package com.cf.imes.module.system.dal.mysql.dept;
import com.cf.imes.framework.mybatis.core.mapper.BaseMapperX;
import com.cf.imes.framework.mybatis.core.query.LambdaQueryWrapperX;
import com.cf.imes.module.system.dal.dataobject.dept.UserPostDO;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import org.apache.ibatis.annotations.Mapper;
import java.util.Collection;
import java.util.List;
@Mapper
public interface UserPostMapper extends BaseMapperX<UserPostDO> {
default List<UserPostDO> selectListByUserId(Long userId) {
return selectList(UserPostDO::getUserId, userId);
}
default void deleteByUserIdAndPostId(Long userId, Collection<Long> postIds) {
delete(new LambdaQueryWrapperX<UserPostDO>()
.eq(UserPostDO::getUserId, userId)
.in(UserPostDO::getPostId, postIds));
}
default List<UserPostDO> selectListByPostIds(Collection<Long> postIds) {
return selectList(UserPostDO::getPostId, postIds);
}
default void deleteByUserId(Long userId) {
delete(Wrappers.lambdaUpdate(UserPostDO.class).eq(UserPostDO::getUserId, userId));
}
}
@@ -2,7 +2,6 @@ package com.cf.imes.module.system.service.funds.incomeandexpense;
import com.cf.imes.module.system.dal.dataobject.incomeandexpense.IncomeExpenseDetailsDO;
import com.cf.imes.module.system.dal.mysql.incomeandexpense.IncomeExpenseDetailsMapper;
import com.cf.imes.module.system.service.organ.OrganService;
import jakarta.annotation.Resource;
import org.springframework.stereotype.Service;
@@ -17,9 +16,6 @@ public class IncomeExpenseServiceImpl implements IncomeExpenseService {
@Resource
private IncomeExpenseDetailsMapper incomeExpenseDetailsMapper;
@Resource
private OrganService organService;
@Override
public Long createDetail(IncomeExpenseDetailsDO incomeExpenseDetailsDO) {
incomeExpenseDetailsMapper.insert(incomeExpenseDetailsDO);
@@ -7,7 +7,6 @@ import cn.hutool.core.util.ObjectUtil;
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
import com.cf.imes.framework.common.exception.ServiceException;
import com.cf.imes.framework.common.exception.enums.GlobalErrorCodeConstants;
import com.cf.imes.framework.common.pojo.PageResult;
@@ -220,11 +219,12 @@ public class InvoiceServiceImpl implements InvoiceService {
@Override
@Transactional(rollbackFor = Exception.class)
public void applyInvoice(InvoiceRecordsReqVO reqVO) {
Long organId = SecurityFrameworkUtils.getUserOrganId();
LoginUser loginUser = SecurityFrameworkUtils.getLoginUser();
if (loginUser == null) {
throw new ServiceException(GlobalErrorCodeConstants.UNAUTHORIZED);
}
Long organId = loginUser.getOrganId();
List<Long> purchaseRecordId = reqVO.getPurchaseRecordId();
// 查询发票抬头
InvoiceTitleInfoDO invoiceTitleInfoDO = invoiceTitleInfoMapper.selectOne(new LambdaQueryWrapper<InvoiceTitleInfoDO>()
@@ -240,7 +240,7 @@ public class InvoiceServiceImpl implements InvoiceService {
// 查询可开票金额:余额支付+扫码支付
BigDecimal invoicableAmount = purchaseRecordMapper.getInvoicableAmount(organId, purchaseRecordId);
// 可开票金额不能为0
AssertUtils.isTrue(ObjectUtils.isNull(invoicableAmount) || invoicableAmount.compareTo(BigDecimal.ZERO) == 0, INVOICE_AMOUNT_ZERO_ERROR);
AssertUtils.isTrue(invoicableAmount.compareTo(BigDecimal.ZERO) == 0, INVOICE_AMOUNT_ZERO_ERROR);
// 更新购买记录表的发票状态
int update = purchaseRecordMapper.update(new LambdaUpdateWrapper<PurchaseRecordDO>()
@@ -300,17 +300,15 @@ public class InvoiceServiceImpl implements InvoiceService {
.in(PurchaseRecordDO::getId, purchaseIdList));
List<InvoicePurchaseRecord> invoicePurchaseRecords = new ArrayList<>();
if (CollUtil.isNotEmpty(purchaseRecordDOS)) {
for (PurchaseRecordDO purchaseRecordDO : purchaseRecordDOS) {
InvoicePurchaseRecord invoicePurchaseRecord = new InvoicePurchaseRecord();
invoicePurchaseRecord.setPurchaseRecordId(purchaseRecordDO.getId());
invoicePurchaseRecord.setProductName(purchaseRecordDO.getProductName());
invoicePurchaseRecord.setTradeType(TradeTypeEnum.PRODUCT.getCode());
invoicePurchaseRecord.setInvoicableAmount(purchaseRecordDO.getTotalAmount());
invoicePurchaseRecord.setTotalAmount(purchaseRecordDO.getTotalAmount());
invoicePurchaseRecord.setCreateTime(purchaseRecordDO.getCreateTime());
invoicePurchaseRecords.add(invoicePurchaseRecord);
}
for (PurchaseRecordDO purchaseRecordDO : purchaseRecordDOS) {
InvoicePurchaseRecord invoicePurchaseRecord = new InvoicePurchaseRecord();
invoicePurchaseRecord.setPurchaseRecordId(purchaseRecordDO.getId());
invoicePurchaseRecord.setProductName(purchaseRecordDO.getProductName());
invoicePurchaseRecord.setTradeType(TradeTypeEnum.PRODUCT.getCode());
invoicePurchaseRecord.setInvoicableAmount(purchaseRecordDO.getTotalAmount());
invoicePurchaseRecord.setTotalAmount(purchaseRecordDO.getTotalAmount());
invoicePurchaseRecord.setCreateTime(purchaseRecordDO.getCreateTime());
invoicePurchaseRecords.add(invoicePurchaseRecord);
}
// 解压发票抬头