@ -1,8 +1,10 @@
package net.lab1024.sa.admin.module.letter.service ;
package net.lab1024.sa.admin.module.letter.service ;
import java.util.Calendar ;
import java.util.List ;
import java.util.List ;
import java.util.stream.Collectors ;
import java.util.stream.Collectors ;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper ;
import net.lab1024.sa.admin.module.business.oa.notice.domain.entity.NoticeEntity ;
import net.lab1024.sa.admin.module.business.oa.notice.domain.entity.NoticeEntity ;
import net.lab1024.sa.admin.module.business.oa.notice.service.NoticeService ;
import net.lab1024.sa.admin.module.business.oa.notice.service.NoticeService ;
import net.lab1024.sa.admin.module.letter.dao.LetterDao ;
import net.lab1024.sa.admin.module.letter.dao.LetterDao ;
@ -11,14 +13,17 @@ import net.lab1024.sa.admin.module.letter.domain.form.LetterAddForm;
import net.lab1024.sa.admin.module.letter.domain.form.LetterQueryForm ;
import net.lab1024.sa.admin.module.letter.domain.form.LetterQueryForm ;
import net.lab1024.sa.admin.module.letter.domain.form.LetterQueryFormNoPage ;
import net.lab1024.sa.admin.module.letter.domain.form.LetterQueryFormNoPage ;
import net.lab1024.sa.admin.module.letter.domain.vo.LetterVO ;
import net.lab1024.sa.admin.module.letter.domain.vo.LetterVO ;
import net.lab1024.sa.admin.module.letter.domain.vo.NoticeBookVO ;
import net.lab1024.sa.admin.module.system.department.domain.entity.DepartmentEntity ;
import net.lab1024.sa.admin.module.system.department.domain.entity.DepartmentEntity ;
import net.lab1024.sa.admin.module.system.department.service.DepartmentService ;
import net.lab1024.sa.admin.module.system.department.service.DepartmentService ;
import net.lab1024.sa.admin.module.system.employee.domain.entity.EmployeeEntity ;
import net.lab1024.sa.admin.module.system.employee.domain.entity.EmployeeEntity ;
import net.lab1024.sa.admin.module.system.employee.service.EmployeeService ;
import net.lab1024.sa.admin.module.system.employee.service.EmployeeService ;
import net.lab1024.sa.admin.module.system.login.domain.RequestEmployee ;
import net.lab1024.sa.admin.module.system.role.domain.vo.RoleVO ;
import net.lab1024.sa.admin.module.system.role.domain.vo.RoleVO ;
import net.lab1024.sa.admin.module.system.role.service.RoleEmployeeService ;
import net.lab1024.sa.admin.module.system.role.service.RoleEmployeeService ;
import net.lab1024.sa.admin.module.system.role.service.RoleService ;
import net.lab1024.sa.admin.module.system.role.service.RoleService ;
import net.lab1024.sa.admin.util.AdminRequestUtil ;
import net.lab1024.sa.admin.util.AdminRequestUtil ;
import net.lab1024.sa.base.common.code.UserErrorCode ;
import net.lab1024.sa.base.common.enumeration.UserTypeEnum ;
import net.lab1024.sa.base.common.enumeration.UserTypeEnum ;
import net.lab1024.sa.base.common.util.SmartBeanUtil ;
import net.lab1024.sa.base.common.util.SmartBeanUtil ;
import net.lab1024.sa.base.common.util.SmartPageUtil ;
import net.lab1024.sa.base.common.util.SmartPageUtil ;
@ -52,16 +57,26 @@ public class LetterService {
private DepartmentService departmentService ;
private DepartmentService departmentService ;
@Resource
@Resource
private RoleEmployeeService roleEmployeeService ;
private RoleEmployeeService roleEmployeeService ;
/ * *
/ * *
* 分页查询
* 分页查询
* /
* /
public PageResult < LetterVO > queryPage ( LetterQueryForm queryForm ) {
public PageResult < LetterVO > queryPage ( LetterQueryForm queryForm ) {
//律师只看到自己,律所看到自己和律所下面的,管理员看全部
String roleCode = getRoleCode ( ) ;
Page < ? > page = SmartPageUtil . convert2PageQuery ( queryForm ) ;
Page < ? > page = SmartPageUtil . convert2PageQuery ( queryForm ) ;
if ( ! UserTypeEnum . CEO . getDesc ( ) . equals ( roleCode ) ) {
queryForm . setUserId ( AdminRequestUtil . getRequestUser ( ) . getUserId ( ) ) ;
}
List < LetterVO > list = letterDao . queryPage ( page , queryForm ) ;
List < LetterVO > list = letterDao . queryPage ( page , queryForm ) ;
//查询用户名称
//查询用户名称
list . forEach ( item - > {
list . forEach ( item - > {
if ( UserTypeEnum . CTO . getDesc ( ) . equals ( item . getLetterType ( ) ) ) {
item . setLetterName ( UserTypeEnum . lx . getDesc ( ) ) ;
} else if ( UserTypeEnum . USER . getDesc ( ) . equals ( item . getLetterType ( ) ) ) {
item . setLetterName ( UserTypeEnum . ls . getDesc ( ) ) ;
}
item . setUserName ( employeeService . queryById ( item . getUserId ( ) ) . getActualName ( ) ) ;
item . setUserName ( employeeService . queryById ( item . getUserId ( ) ) . getActualName ( ) ) ;
item . setLetterName ( noticeService . queryById ( item . getNoticeId ( ) ) . getTitle ( ) ) ;
} ) ;
} ) ;
return SmartPageUtil . convert2PageResult ( page , list ) ;
return SmartPageUtil . convert2PageResult ( page , list ) ;
}
}
@ -73,40 +88,83 @@ public class LetterService {
* @return
* @return
* /
* /
public Boolean isLetter ( Long userId ) {
public Boolean isLetter ( Long userId ) {
//查询当前用户是否签署了承诺书
//获取当前年份
int letter = letterDao . isLetter ( userId ) ;
Calendar cal = Calendar . getInstance ( ) ;
if ( letter > 0 ) {
int currentYear = cal . get ( Calendar . YEAR ) ;
return true ;
String roleCode = getRoleCode ( ) ;
//构建查询条件:按用户ID和当前年份查询
LambdaQueryWrapper < LetterEntity > queryWrapper = new LambdaQueryWrapper < LetterEntity > ( )
. eq ( LetterEntity : : getUserId , userId )
. apply ( "YEAR(create_time) = {0}" , currentYear ) ;
if ( UserTypeEnum . USER . getDesc ( ) . equals ( roleCode ) ) {
//普通律师:只需要签署一份承诺书
List < LetterEntity > letterList = letterDao . selectList ( queryWrapper ) ;
return ! letterList . isEmpty ( ) ;
} else if ( UserTypeEnum . CTO . getDesc ( ) . equals ( roleCode ) ) {
//律所主任:需要签署两份承诺书(USER类型和CTO类型各一份)
List < LetterEntity > letterList = letterDao . selectList ( queryWrapper ) ;
//统计不同类型的承诺书数量
long userTypeCount = letterList . stream ( )
. filter ( letter - > UserTypeEnum . USER . getDesc ( ) . equals ( letter . getLetterType ( ) ) )
. count ( ) ;
long ctoTypeCount = letterList . stream ( )
. filter ( letter - > UserTypeEnum . CTO . getDesc ( ) . equals ( letter . getLetterType ( ) ) )
. count ( ) ;
//两种类型都需要至少一份才能算签约成功
return userTypeCount > 0 & & ctoTypeCount > 0 ;
} else {
//其他角色使用原有逻辑
int letterCount = letterDao . isLetter ( userId ) ;
return letterCount > 0 ;
}
}
return false ;
}
}
/ * *
/ * *
* 新增
* 新增
* /
* /
public Boolean add ( ) {
public String add ( LetterAddForm addForm ) {
Long userId = AdminRequestUtil . getRequestUser ( ) . getUserId ( ) ;
Long userId = AdminRequestUtil . getRequestUser ( ) . getUserId ( ) ;
LetterEntity letterEntity = new LetterEntity ( ) ;
String letterType = addForm . getLetterType ( ) ;
letterEntity . setUserId ( userId ) ;
List < NoticeEntity > list = noticeService . getOne ( ) ;
//查询用户角色
RoleVO roleVO = roleEmployeeService . getRoleIdList ( userId ) . get ( 0 ) ;
NoticeEntity one = new NoticeEntity ( ) ;
if ( UserTypeEnum . USER . getDesc ( ) . equals ( roleVO . getRoleCode ( ) ) ) {
one = list . stream ( ) . filter ( a - > a . getDocumentNumber ( ) . equals ( "001" ) ) . collect ( Collectors . toList ( ) ) . get ( 0 ) ;
} else {
one = list . stream ( ) . filter ( a - > a . getDocumentNumber ( ) . equals ( "002" ) ) . collect ( Collectors . toList ( ) ) . get ( 0 ) ;
}
//获取当前年份
Calendar cal = Calendar . getInstance ( ) ;
int currentYear = cal . get ( Calendar . YEAR ) ;
//检查当前用户在当前年份是否已经上传过相同类型的承诺书
LambdaQueryWrapper < LetterEntity > checkWrapper = new LambdaQueryWrapper < LetterEntity > ( )
. eq ( LetterEntity : : getUserId , userId )
. eq ( LetterEntity : : getLetterType , letterType )
. apply ( "YEAR(create_time) = {0}" , currentYear ) ;
if ( one ! = null ) {
List < LetterEntity > existingLetters = letterDao . selectList ( checkWrapper ) ;
letterEntity . setNoticeId ( one . getNoticeId ( ) ) ;
if ( ! existingLetters . isEmpty ( ) ) {
//已经存在相同类型的承诺书,不允许重复上传
if ( letterType . equals ( UserTypeEnum . USER . getDesc ( ) ) ) {
return UserErrorCode . BOOK_USER_EXIST . getMsg ( ) ;
} else if ( letterType . equals ( UserTypeEnum . CTO . getDesc ( ) ) ) {
return UserErrorCode . BOOK_CTO_EXIST . getMsg ( ) ;
}
}
}
//创建新的承诺书记录
LetterEntity letterEntity = new LetterEntity ( ) ;
letterEntity . setUserId ( userId ) ;
letterEntity . setAttachmentIds ( addForm . getAttachmentIds ( ) ) ;
letterEntity . setLetterType ( letterType ) ;
letterEntity . setFileUrl ( addForm . getFileUrl ( ) ) ;
int insert = letterDao . insert ( letterEntity ) ;
int insert = letterDao . insert ( letterEntity ) ;
if ( insert < = 0 ) {
if ( insert < = 0 ) {
return false ;
return "承诺书上传失败" ;
}
}
return true ;
return UserErrorCode . SUCCESS . getMsg ( ) ;
}
}
public NoticeEntity detail ( Long letterId ) {
public NoticeEntity detail ( Long letterId ) {
@ -164,4 +222,36 @@ public class LetterService {
}
}
return noticeEntity ;
return noticeEntity ;
}
}
public List < NoticeBookVO > queryAllBook ( ) {
String roleCode = getRoleCode ( ) ;
if ( UserTypeEnum . USER . getDesc ( ) . equals ( roleCode ) ) {
return noticeService . queryAllBoolk ( "USER" ) ;
}
return noticeService . queryAllBoolk ( "" ) ;
}
public String getRoleCode ( ) {
try {
RequestEmployee requestUser = AdminRequestUtil . getRequestUser ( ) ;
if ( requestUser = = null ) {
return UserTypeEnum . USER . getDesc ( ) ; // 默认返回普通用户角色
}
List < RoleVO > roleIdList = roleEmployeeService . getRoleIdList ( requestUser . getEmployeeId ( ) ) ;
if ( roleIdList = = null | | roleIdList . isEmpty ( ) ) {
return UserTypeEnum . USER . getDesc ( ) ; // 默认返回普通用户角色
}
RoleVO roleVO = roleIdList . get ( 0 ) ;
if ( roleVO = = null | | roleVO . getRoleCode ( ) = = null ) {
return UserTypeEnum . USER . getDesc ( ) ; // 默认返回普通用户角色
}
return roleVO . getRoleCode ( ) ;
} catch ( Exception e ) {
// 发生异常时返回默认角色
return UserTypeEnum . USER . getDesc ( ) ;
}
}
}
}