Commit bef4d521 authored by huyuchen's avatar huyuchen

Merge remote-tracking branch 'origin/develop'

parents 5ddcf2f4 a2ebb69d
......@@ -16,7 +16,9 @@
*/
package com.yifu.cloud.plus.v1.yifu.archives.entity;
import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.annotation.format.DateTimeFormat;
import com.alibaba.excel.annotation.write.style.HeadFontStyle;
import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.yifu.cloud.plus.v1.yifu.common.core.constant.ExcelAttribute;
......@@ -25,6 +27,7 @@ import com.yifu.cloud.plus.v1.yifu.common.mybatis.base.BaseEntity;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.hibernate.validator.constraints.Length;
import javax.validation.constraints.Max;
import javax.validation.constraints.NotNull;
......
package com.yifu.cloud.plus.v1.yifu.archives.vo;
import com.yifu.cloud.plus.v1.yifu.common.core.constant.ExcelAttribute;
import com.yifu.cloud.plus.v1.yifu.common.core.vo.RowIndex;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import org.hibernate.validator.constraints.Length;
import java.io.Serializable;
/**
* @Author fxj
* @Date 2023/10/17
* @Description
* @Version 1.0
*/
@Data
public class DataPermissionImportVo extends RowIndex implements Serializable {
@ExcelAttribute(name = "登录账号", maxLength = 30,isNotEmpty = true)
@Schema(description = "登录账号")
private String userLoginName;
@ExcelAttribute(name = "项目名称", maxLength = 32,isNotEmpty = false)
@Schema(description = "项目名称")
private String settleDomainName;
@Length(max = 32, message = "项目编码不能超过32个字符")
@ExcelAttribute(name = "项目编码", maxLength = 32,isNotEmpty = true)
@Schema(description = "项目编码")
private String settleDomainNo;
}
package com.yifu.cloud.plus.v1.yifu.archives.vo;
import com.yifu.cloud.plus.v1.yifu.common.core.constant.ExcelAttribute;
import com.yifu.cloud.plus.v1.yifu.common.core.vo.RowIndex;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import org.hibernate.validator.constraints.Length;
import java.io.Serializable;
/**
* @Author fxj
* @Date 2023/10/17
* @Description 社保公积金审核权限VO
* @Version 1.0
*/
@Data
public class SocialAuthHandleImportVo extends RowIndex implements Serializable {
@ExcelAttribute(name = "登录账号", maxLength = 30,isNotEmpty = true)
@Schema(description = "登录账号")
private String userLoginName;
@Length(max = 32, message = "户名称不能超过32个字符")
@ExcelAttribute(name = "户名称", maxLength = 32,isNotEmpty = true)
@Schema(description = "户名称")
private String houseHold;
}
package com.yifu.cloud.plus.v1.yifu.archives.vo;
import com.yifu.cloud.plus.v1.yifu.common.core.constant.ExcelAttribute;
import com.yifu.cloud.plus.v1.yifu.common.core.vo.RowIndex;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import org.hibernate.validator.constraints.Length;
import java.io.Serializable;
/**
* @Author fxj
* @Date 2023/10/17
* @Description 社保公积金审核权限VO
* @Version 1.0
*/
@Data
public class SocialAuthImportVo extends RowIndex implements Serializable {
@ExcelAttribute(name = "登录账号", maxLength = 30,isNotEmpty = true)
@Schema(description = "登录账号")
private String userLoginName;
/**
* 户类型:0社保 1公积金
*/
@Schema(description ="户类型:0社保 1公积金")
@ExcelAttribute(name = "户类型:0社保 1公积金", maxLength = 32,isNotEmpty = true,isDataId = true,readConverterExp = "0=社保,1=公积金")
private String type;
@Length(max = 32, message = "户名称不能超过32个字符")
@ExcelAttribute(name = "户名称", maxLength = 32,isNotEmpty = false)
@Schema(description = "户名称")
private String houseHold;
}
package com.yifu.cloud.plus.v1.yifu.archives.vo;
import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.annotation.write.style.HeadFontStyle;
import com.yifu.cloud.plus.v1.yifu.common.core.constant.ExcelAttribute;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import org.hibernate.validator.constraints.Length;
import java.io.Serializable;
......@@ -53,5 +57,17 @@ public class UpProjectSocialFundVo implements Serializable {
String detailId;
String contactAddress;
String highEducation;
/**
* 学校
*/
@Schema(description = "学校" )
private String schoolName;
/**
* 专业
*/
@Schema(description = "专业" )
private String major;
// 是否更新学历标识
String flag;
}
......@@ -87,6 +87,12 @@
<artifactId>mapper</artifactId>
<version>2.3.0</version>
</dependency>
<dependency>
<groupId>org.apache.shardingsphere</groupId>
<artifactId>sharding-transaction-core</artifactId>
<version>4.1.1</version>
<scope>compile</scope>
</dependency>
</dependencies>
<build>
......
......@@ -9,6 +9,7 @@ import com.yifu.cloud.plus.v1.yifu.archives.service.TCutsomerDataPermissonServic
import com.yifu.cloud.plus.v1.yifu.archives.service.TSettleDomainService;
import com.yifu.cloud.plus.v1.yifu.common.core.constant.CommonConstants;
import com.yifu.cloud.plus.v1.yifu.common.core.util.Common;
import com.yifu.cloud.plus.v1.yifu.common.core.util.ErrorMessage;
import com.yifu.cloud.plus.v1.yifu.common.core.util.R;
import com.yifu.cloud.plus.v1.yifu.common.core.vo.YifuUser;
import com.yifu.cloud.plus.v1.yifu.common.log.annotation.SysLog;
......@@ -16,7 +17,10 @@ import com.yifu.cloud.plus.v1.yifu.common.security.util.SecurityUtils;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.AllArgsConstructor;
import lombok.SneakyThrows;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import java.util.Arrays;
import java.util.List;
......@@ -39,6 +43,7 @@ public class TCutsomerDataPermissonController {
/**
* 简单分页查询
*
* @param page 分页对象
* @param tCutsomerDataPermisson 客户数据权限表
* @return
......@@ -46,11 +51,12 @@ public class TCutsomerDataPermissonController {
@Operation(description = "简单分页查询")
@GetMapping("/page")
public R<IPage<TCutsomerDataPermisson>> getTCutsomerDataPermissonPage(Page<TCutsomerDataPermisson> page, TCutsomerDataPermisson tCutsomerDataPermisson) {
return new R<>(tCutsomerDataPermissonService.getTCutsomerDataPermissonPage(page,tCutsomerDataPermisson));
return new R<>(tCutsomerDataPermissonService.getTCutsomerDataPermissonPage(page, tCutsomerDataPermisson));
}
/**
* 导出list
*
* @param tCutsomerDataPermisson 客户数据权限表
* @return
*/
......@@ -61,11 +67,11 @@ public class TCutsomerDataPermissonController {
}
/**
* @return
* @Author fxj
* @Description 获取实体的权限: type-类型0:客户1:合同2:项目(不传默认2项目)
* @Date 15:20 2022/7/13
* @Param
* @return
**/
@Operation(description = "获取实体的权限:默认项目")
@GetMapping("/getPermissonByTypeAndId")
......@@ -76,43 +82,45 @@ public class TCutsomerDataPermissonController {
}
/**
* @return
* @Author fxj
* @Description 获取实体的权限: type-类型0:客户1:合同2:项目(不传默认2项目)
* @Date 15:21 2022/7/13
* @Param
* @return
**/
@Operation(description = "权限复制 权限同项目分配客服(wxhr:tsettledomain_assign_customerservice)")
@GetMapping("/copy")
public R<String> insertForCopyCutsomerDataPermisson(String[] srcUser, String[] beUser) {
YifuUser user = SecurityUtils.getUser();
R<String> result = tCutsomerDataPermissonService.insertForCopyCutsomerDataPermisson(srcUser, beUser, user);
if(CommonConstants.SUCCESS.equals(result.getCode())){//权限刷新
if (CommonConstants.SUCCESS.equals(result.getCode())) {//权限刷新
settleDomainService.removeSettleCache(user, Arrays.asList(beUser));
}
return result ;
return result;
}
/**
* 通过id查询单条记录
*
* @param id
* @return R
*/
@Operation(description = "id查询")
@GetMapping("/{id}")
public R<TCutsomerDataPermisson> getById(@PathVariable("id") String id){
public R<TCutsomerDataPermisson> getById(@PathVariable("id") String id) {
return new R<>(tCutsomerDataPermissonService.getById(id));
}
/**
* 新增记录
*
* @param tCutsomerDataPermisson
* @return R
*/
@Operation(description = "新增")
@SysLog("新增客户数据权限表")
@PostMapping
public R<String> save(@RequestBody TCutsomerDataPermisson tCutsomerDataPermisson){
public R<String> save(@RequestBody TCutsomerDataPermisson tCutsomerDataPermisson) {
YifuUser user = SecurityUtils.getUser();
settleDomainService.removeSettleCache(user, Arrays.asList(tCutsomerDataPermisson.getUserId()));
if (Common.isNotNull(tCutsomerDataPermisson.getUserId()) && Common.isNotNull(tCutsomerDataPermisson.getSettleDomainId())) {
......@@ -132,6 +140,7 @@ public class TCutsomerDataPermissonController {
/**
* 修改记录
*
* @param tCutsomerDataPermisson
* @return R
*/
......@@ -146,21 +155,35 @@ public class TCutsomerDataPermissonController {
/**
* 通过id删除一条记录
*
* @param id
* @return R
*/
@Operation(description = "删除(tcutsomerdatapermisson_del)")
@SysLog("删除客户数据权限表")
@DeleteMapping("/{id}")
public R<Boolean> removeById(@PathVariable String id){
public R<Boolean> removeById(@PathVariable String id) {
YifuUser user = SecurityUtils.getUser();
TCutsomerDataPermisson tdp = tCutsomerDataPermissonService.getById(id);
if(null == tdp){
if (null == tdp) {
return new R<>(true);
}
//刷新缓存
settleDomainService.removeSettleCache(user, Arrays.asList(tdp.getUserId()));
return new R<>(tCutsomerDataPermissonService.removeById(id));
}
/**
* @Author fxj
* @Description 批量导入项目权限
* @Date 16:59 2023/10/17
* @Param
* @return
**/
@SneakyThrows
@Operation(description = "批量新增项目权限")
@SysLog("批量新增项目权限")
@PostMapping("/importListAdd")
public R<List<ErrorMessage>> importListAdd(@RequestBody MultipartFile file) {
return tCutsomerDataPermissonService.importDiy(file.getInputStream());
}
}
......@@ -24,9 +24,11 @@ import com.yifu.cloud.plus.v1.yifu.archives.entity.TCustomerInfo;
import com.yifu.cloud.plus.v1.yifu.archives.entity.TSettleDomain;
import com.yifu.cloud.plus.v1.yifu.archives.vo.*;
import com.yifu.cloud.plus.v1.yifu.common.core.util.R;
import org.apache.ibatis.annotations.MapKey;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.HashMap;
import java.util.List;
/**
......@@ -111,4 +113,6 @@ public interface TSettleDomainMapper extends BaseMapper<TSettleDomain> {
void changeIssueStatus(@Param("changeIssueStatusVo")ChangeIssueStatusVo changeIssueStatusVo);
List<TSettleDomain> getAllInfoMap();
}
......@@ -4,9 +4,11 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.yifu.cloud.plus.v1.yifu.archives.entity.TCutsomerDataPermisson;
import com.yifu.cloud.plus.v1.yifu.common.core.util.ErrorMessage;
import com.yifu.cloud.plus.v1.yifu.common.core.util.R;
import com.yifu.cloud.plus.v1.yifu.common.core.vo.YifuUser;
import java.io.InputStream;
import java.util.List;
/**
......@@ -43,4 +45,6 @@ public interface TCutsomerDataPermissonService extends IService<TCutsomerDataPer
* @return
**/
R<String> insertForCopyCutsomerDataPermisson(String[] srcUserList, String[] beUser, YifuUser user);
R<List<ErrorMessage>> importDiy(InputStream inputStream);
}
package com.yifu.cloud.plus.v1.yifu.archives.service.impl;
import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.context.AnalysisContext;
import com.alibaba.excel.read.listener.ReadListener;
import com.alibaba.excel.read.metadata.holder.ReadRowHolder;
import com.alibaba.excel.util.ListUtils;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.yifu.cloud.plus.v1.yifu.admin.api.entity.SysUser;
import com.yifu.cloud.plus.v1.yifu.archives.entity.TCutsomerDataPermisson;
import com.yifu.cloud.plus.v1.yifu.archives.entity.TSettleDomain;
import com.yifu.cloud.plus.v1.yifu.archives.mapper.TCutsomerDataPermissonMapper;
import com.yifu.cloud.plus.v1.yifu.archives.mapper.TSettleDomainMapper;
import com.yifu.cloud.plus.v1.yifu.archives.service.TCutsomerDataPermissonService;
import com.yifu.cloud.plus.v1.yifu.archives.vo.DataPermissionImportVo;
import com.yifu.cloud.plus.v1.yifu.common.core.constant.CacheConstants;
import com.yifu.cloud.plus.v1.yifu.common.core.constant.CommonConstants;
import com.yifu.cloud.plus.v1.yifu.common.core.util.Common;
import com.yifu.cloud.plus.v1.yifu.common.core.util.R;
import com.yifu.cloud.plus.v1.yifu.common.core.util.*;
import com.yifu.cloud.plus.v1.yifu.common.core.vo.YifuUser;
import com.yifu.cloud.plus.v1.yifu.common.dapr.config.DaprUpmsProperties;
import com.yifu.cloud.plus.v1.yifu.common.dapr.util.UpmsDaprUtils;
import lombok.AllArgsConstructor;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.apache.shardingsphere.transaction.annotation.ShardingTransactionType;
import org.apache.shardingsphere.transaction.core.TransactionType;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.io.InputStream;
import java.time.LocalDateTime;
import java.util.*;
import java.util.stream.Collectors;
/**
......@@ -32,9 +48,15 @@ import java.util.*;
@Service
@RequiredArgsConstructor
@EnableConfigurationProperties(DaprUpmsProperties.class)
@AllArgsConstructor
@Slf4j
public class TCutsomerDataPermissonServiceImpl extends ServiceImpl<TCutsomerDataPermissonMapper, TCutsomerDataPermisson> implements TCutsomerDataPermissonService {
@Autowired
private UpmsDaprUtils upmsDaprUtils;
@Autowired
private TSettleDomainMapper domainMapper;
@Autowired
private RedisUtil redisUtil;
/**
* 客户数据权限表简单分页查询
*
......@@ -118,4 +140,176 @@ public class TCutsomerDataPermissonServiceImpl extends ServiceImpl<TCutsomerData
public boolean save(TCutsomerDataPermisson cutsomerDataPermisson){
return super.save(cutsomerDataPermisson);
}
/**
* @Author fxj
* @Description 批量导入项目权限
* @Date 16:59 2023/10/17
* @Param
* @return
**/
@Transactional(rollbackFor = Exception.class)
@ShardingTransactionType(TransactionType.BASE)
@Override
public R<List<ErrorMessage>> importDiy(InputStream inputStream) {
List<ErrorMessage> errorMessageList = new ArrayList<>();
ExcelUtil<DataPermissionImportVo> util1 = new ExcelUtil<>(DataPermissionImportVo.class);
List<TSettleDomain> settleDomains = domainMapper.getAllInfoMap();
Map<String, TSettleDomain> domainMap = null;
if (Common.isNotNull(settleDomains)){
domainMap = settleDomains.stream().collect(Collectors.toMap(k->k.getDepartNo(),k->k));
}
if (Common.isEmpty(domainMap)){
domainMap = new HashMap<>();
}
Map<String,SysUser> userMap = new HashMap<>();
Map<String,String> existMap = new HashMap<>();
// 写法2:
// 匿名内部类 不用额外写一个DemoDataListener
// 这里 需要指定读用哪个class去读,然后读取第一个sheet 文件流会自动关闭
try {
Map<String, TSettleDomain> finalDomainMap = domainMap;
EasyExcel.read(inputStream, DataPermissionImportVo.class, new ReadListener<DataPermissionImportVo>() {
/**
* 单次缓存的数据量
*/
public static final int BATCH_COUNT = CommonConstants.BATCH_COUNT;
/**
*临时存储
*/
private List<DataPermissionImportVo> cachedDataList = ListUtils.newArrayListWithExpectedSize(BATCH_COUNT);
@Override
public void invoke(DataPermissionImportVo data, AnalysisContext context) {
ReadRowHolder readRowHolder = context.readRowHolder();
Integer rowIndex = readRowHolder.getRowIndex();
data.setRowIndex(rowIndex+1);
ErrorMessage errorMessage = util1.checkEntity(data, data.getRowIndex());
if (Common.isNotNull(errorMessage)){
errorMessage.setData(data);
errorMessageList.add(errorMessage);
}else {
cachedDataList.add(data);
}
if (cachedDataList.size() >= BATCH_COUNT) {
saveData();
// 存储完成清理 list
cachedDataList = ListUtils.newArrayListWithExpectedSize(BATCH_COUNT);
}
}
@Override
public void doAfterAllAnalysed(AnalysisContext context) {
saveData();
}
/**
* 加上存储数据库
*/
private void saveData() {
log.info("{}条数据,开始存储数据库!", cachedDataList.size());
importEntity(cachedDataList,errorMessageList, finalDomainMap,userMap,existMap);
log.info("存储数据库成功!");
}
}).sheet().doRead();
}catch (Exception e){
log.error(CommonConstants.IMPORT_DATA_ANALYSIS_ERROR,e);
return R.failed(CommonConstants.IMPORT_DATA_ANALYSIS_ERROR);
}finally {
// 清理
domainMap.clear();
}
return judgeAllMessage(errorMessageList);
}
/**
* @Author fxj
* @Description 判断所有返回数据,是否全部为正确的
* @Date 18:01 2023/10/18
* @Param
* @return
**/
private R<List<ErrorMessage>> judgeAllMessage(List<ErrorMessage> errorMessageList) {
if (!errorMessageList.isEmpty() && errorMessageList.stream().noneMatch(e-> e.getColor().equals(CommonConstants.RED))) {
return R.ok();
}
return R.ok(errorMessageList);
}
private void importEntity(List<DataPermissionImportVo> excelVOList,
List<ErrorMessage> errorMessageList,
Map<String,TSettleDomain> domainMap,
Map<String,SysUser> userMap,
Map<String,String> existMap) {
// 执行数据插入操作 组装
TCutsomerDataPermisson permission = null;
SysUser user;
R<SysUser> res;
TSettleDomain domain;
TCutsomerDataPermisson exist;
String temp;
DataPermissionImportVo excel;
for (int i = 0; i < excelVOList.size(); i++) {
excel = excelVOList.get(i);
// 数据合法情况
user = userMap.get(excel.getUserLoginName());
// 用户信息验证
if (Common.isEmpty(user)){
res = upmsDaprUtils.getSimpleUserByLoginName(excel.getUserLoginName());
if (Common.isNotNull(res) && Common.isNotNull(res.getData())){
user = res.getData();
userMap.put(user.getUsername(),user);
}else {
errorMessageList.add(new ErrorMessage(excel.getRowIndex(),CommonConstants.USER_FAIL,excel));
continue;
}
}
if (Common.isEmpty(user.getDeptName())){
errorMessageList.add(new ErrorMessage(excel.getRowIndex(),"对应登录账号无部门信息,请完善后导入",excel));
continue;
}
// 项目信息验证
domain = domainMap.get(excel.getSettleDomainNo());
if (Common.isEmpty(domain)){
errorMessageList.add(new ErrorMessage(excel.getRowIndex(),CommonConstants.SETTLE_DOMAIN_NOT_EXIST,excel));
continue;
}
// 重复校验
temp = existMap.get(excel.getUserLoginName()+CommonConstants.DOWN_LINE_STRING+excel.getSettleDomainNo());
if (Common.isNotNull(temp)){
errorMessageList.add(new ErrorMessage(excel.getRowIndex(),"对应账号的权限已存在,请勿重复导入",excel));
continue;
}else {
exist = baseMapper.selectOne(Wrappers.<TCutsomerDataPermisson>query().lambda()
.eq(TCutsomerDataPermisson::getSettleDomainNo,excel.getSettleDomainNo())
.eq(TCutsomerDataPermisson::getUserLoginName,excel.getUserLoginName())
.last(CommonConstants.LAST_ONE_SQL));
if (Common.isNotNull(exist)){
errorMessageList.add(new ErrorMessage(excel.getRowIndex(),"对应账号的权限已存在,请勿重复导入",excel));
continue;
}
}
// 初始化及新增数据
permission = new TCutsomerDataPermisson();
permission.setType(CommonConstants.ONE_STRING);
permission.setSettleDomainId(domain.getId());
permission.setRemark("批量授权");
permission.setSettleDomainName(domain.getDepartName());
permission.setSettleDomainNo(domain.getDepartNo());
permission.setStatus(CommonConstants.ZERO_STRING);
permission.setUserId(user.getUserId());
permission.setUserDeptName(user.getDeptName());
permission.setUserLoginName(user.getUsername());
permission.setUserNickName(user.getNickname());
insertExcel(permission);
// 加入map 验证当前表单数据是否重复
existMap.put(excel.getUserLoginName()+CommonConstants.DOWN_LINE_STRING+excel.getSettleDomainNo(),excel.getSettleDomainNo());
errorMessageList.add(new ErrorMessage(excel.getRowIndex(),CommonConstants.SAVE_SUCCESS,CommonConstants.GREEN,excel));
// 清理缓存
redisUtil.remove(CacheConstants.WXHR_SETTLE_DOMAIN_VOS_BY_USERID +"_"+user.getUserId());
redisUtil.remove(CacheConstants.WXHR_SETTLE_DOMAIN_NOS_BY_USERID +"_"+user.getUserId());
}
}
/**
* 插入excel bad record
*/
private void insertExcel(TCutsomerDataPermisson entity) {
this.save(entity);
}
}
......@@ -1418,6 +1418,12 @@ public class TEmployeeProjectServiceImpl extends ServiceImpl<TEmployeeProjectMap
if (Common.isNotNull(vo.getHighEducation())) {
employee.setHignEducation(vo.getHighEducation());
}
if (Common.isNotNull(vo.getSchoolName())){
employee.setSchool(vo.getSchoolName());
}
if (Common.isNotNull(vo.getMajor())){
employee.setMajor(vo.getMajor());
}
}
tEmployeeInfoMapper.updateSocialInfoById(employee);
}
......
......@@ -1140,6 +1140,8 @@
<if test="tEmployeeInfo.socialStatus != null">SOCIAL_STATUS=#{tEmployeeInfo.socialStatus},</if>
<if test="tEmployeeInfo.fundStatus != null">FUND_STATUS=#{tEmployeeInfo.fundStatus},</if>
<if test="tEmployeeInfo.hignEducation != null">HIGN_EDUCATION=#{tEmployeeInfo.hignEducation},</if>
<if test="tEmployeeInfo.school != null">SCHOOL=#{tEmployeeInfo.school},</if>
<if test="tEmployeeInfo.major != null">MAJOR=#{tEmployeeInfo.major},</if>
<if test="tEmployeeInfo.contactAddress != null">CONTACT_ADDRESS=#{tEmployeeInfo.contactAddress},</if>
<if test="tEmployeeInfo.isCollege != null">IS_COLLEGE='1',</if>
<if test="tEmployeeInfo.fileProvince != null">a.FILE_PROVINCE=#{tEmployeeInfo.fileProvince},</if>
......
......@@ -510,4 +510,11 @@
set a.ISSUE_STATUS=#{changeIssueStatusVo.issueStatus}
WHERE a.ID=#{changeIssueStatusVo.id}
</update>
<select id="getAllInfoMap" resultMap="tSettleDomainMap">
SELECT
<include refid="Base_Column_List"/>
FROM
t_settle_domain a
where a.DELETE_FLAG = '0'
</select>
</mapper>
......@@ -154,6 +154,8 @@ public interface CacheConstants {
String PAYMENT_PRE_DISPATCH_BATCH_ADD_IMPORT = "payment_pre_dispatch_batch_add_import";
String INSURANCE_BATCH_UPDATE_IMPORT = "insurance_batch_update_import";
String DISPATCH_BATCH_AUDIT = "dispatch_batch_audit";
String DISPATCH_BATCH_HANDLED = "dispatch_batch_handled";
......
......@@ -532,6 +532,8 @@ public interface CommonConstants {
String SETTLE_DOMAIN_GET_ERROR = "获取结算主体信息失败!";
String SETTLE_DOMAIN_NOT_EXIST = "无对应项目信息";
/**
* c端机构节点 code
* @Author hgw
......
......@@ -475,6 +475,10 @@ public class ExcelUtil <T> implements Serializable {
return (String)RedisUtil.redis.opsForValue().get(CacheConstants.AREA_LABEL + c);
}
public String getAreaLabelPublic(String c) {
return (String)RedisUtil.redis.opsForValue().get(CacheConstants.AREA_LABEL + c);
}
private String getAreaValue(String c, String tempStr, ExcelAttribute attr,Integer rowNum, ErrorMessage errorTemp) {
tempStr = String.valueOf(RedisUtil.redis.opsForValue().get(CacheConstants.AREA_VALUE + c));
if (Common.isEmpty(tempStr)){
......
......@@ -90,4 +90,12 @@ public class UpmsDaprUtils {
}
return userR;
}
public R<SysUser> getSimpleUserByLoginName(String loginName) {
R<SysUser> userR = HttpDaprUtil.invokeMethodPost(daprUpmsProperties.getAppUrl(),daprUpmsProperties.getAppId(),"/user/inner/getSimpleUserByLoginName",loginName, SysUser.class, SecurityConstants.FROM_IN);
if (Common.isEmpty(userR)){
return R.failed("获取所有用户数据失败!");
}
return userR;
}
}
......@@ -2,7 +2,10 @@ package com.yifu.cloud.plus.v1.yifu.insurances.controller;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yifu.cloud.plus.v1.yifu.common.core.constant.CacheConstants;
import com.yifu.cloud.plus.v1.yifu.common.core.constant.CommonConstants;
import com.yifu.cloud.plus.v1.yifu.common.core.constant.ResultConstants;
import com.yifu.cloud.plus.v1.yifu.common.core.redis.RedisDistributedLock;
import com.yifu.cloud.plus.v1.yifu.common.core.util.Common;
import com.yifu.cloud.plus.v1.yifu.common.core.util.R;
import com.yifu.cloud.plus.v1.yifu.common.core.vo.YifuUser;
......@@ -310,7 +313,30 @@ public class TInsuranceDetailController {
@PostMapping("/registeredPolicyPremium")
@PreAuthorize("@pms.hasPermission('handle_insure_cost')")
public R<List<InsuranceRegisterParam>> registeredPolicyPremium(@RequestBody @Valid @Size(min = 1,message = "集合不能为空") List<InsuranceRegisterParam> paramList){
YifuUser user = SecurityUtils.getUser();
if (Common.isEmpty(user)){
return R.failed(CommonConstants.USER_FAIL);
}
// 获取redis分布式事务锁
String key = CacheConstants.INSURANCE_BATCH_UPDATE_IMPORT + CommonConstants.DOWN_LINE_STRING + user.getId();
String requestId;
try {
requestId = RedisDistributedLock.getLock(key,"10");
} catch (Exception e) {
throw new RuntimeException(ResultConstants.NO_GETLOCK_DATA+CommonConstants.DOWN_LINE_STRING+e.getMessage());
}
try {
if (Common.isNotNull(requestId)) {
//主动释放锁
return tInsuranceDetailService.registeredPolicyPremium(paramList);
} else {
return R.failed(ResultConstants.NO_GETLOCK_DATA);
}
}finally {
//主动释放锁
RedisDistributedLock.unlock(key, requestId);
}
}
/**
......@@ -324,7 +350,30 @@ public class TInsuranceDetailController {
@PostMapping("/registeredInvoiceNo")
@PreAuthorize("@pms.hasPermission('handle_insure_invoice')")
public R<List<InsuranceRegisterInvoiceNoParam>> registeredInvoiceNo(@RequestBody @Valid @Size(min = 1,message = "集合不能为空") List<InsuranceRegisterInvoiceNoParam> paramList){
YifuUser user = SecurityUtils.getUser();
if (Common.isEmpty(user)){
return R.failed(CommonConstants.USER_FAIL);
}
// 获取redis分布式事务锁
String key = CacheConstants.INSURANCE_BATCH_UPDATE_IMPORT + CommonConstants.DOWN_LINE_STRING + user.getId();
String requestId;
try {
requestId = RedisDistributedLock.getLock(key,"10");
} catch (Exception e) {
throw new RuntimeException(ResultConstants.NO_GETLOCK_DATA+CommonConstants.DOWN_LINE_STRING+e.getMessage());
}
try {
if (Common.isNotNull(requestId)) {
//主动释放锁
return tInsuranceDetailService.registeredInvoiceNo(paramList);
} else {
return R.failed(ResultConstants.NO_GETLOCK_DATA);
}
}finally {
//主动释放锁
RedisDistributedLock.unlock(key, requestId);
}
}
/**
......
......@@ -133,6 +133,12 @@ public class SysMenu extends BaseEntity {
@Schema(description = "部门权限id")
private String deptId;
/**
* 二级指标归属id
*/
@Schema(description = "二级指标归属id")
private String twoLevelId;
/**
* 权限idList
*/
......
......@@ -109,6 +109,14 @@ public interface SysUserPermissionMapper extends BaseMapper<SysUserPermission> {
*/
IPage<SysUserDeptVo> selectDeptVO(Page<SysUserDeptVo> page, @Param("name") String name);
/**
* 根据名称或者编码查询数据
* 二级指标归属权限
* @param name 名称
* @return
*/
IPage<SysUserDeptVo> selectTwoGsVO(Page<SysUserDeptVo> page, @Param("name") String name);
/**
* 根据类型查询字典值
*
......@@ -181,6 +189,14 @@ public interface SysUserPermissionMapper extends BaseMapper<SysUserPermission> {
*/
Integer selectDeptCount(@Param("name") String name);
/**
* 根据名称或者编码查询数据
* 部门&&收入归属权限
* @param name 名称
* @return
*/
Integer selectTwoGsCount(@Param("name") String name);
/**
* @param userId
* @Description: 查找当前用户的所有权限
......
......@@ -163,6 +163,9 @@ public class SysUserPermissionServiceImpl extends ServiceImpl<SysUserPermissionM
} else if (CommonConstants.EIGHT_STRING.equals(searchVo.getType()) || CommonConstants.NINE_STRING.equals(searchVo.getType())) {
//部门&&收入归属权限
iPage = baseMapper.selectDeptVO(page, searchVo.getName());
} else if (CommonConstants.TEN_STRING.equals(searchVo.getType()) ) {
//二级指标归属权限
iPage = baseMapper.selectTwoGsVO(page, searchVo.getName());
} else {
//项目权限
if (Common.isNotNull(user.getId()) && CommonConstants.ZERO_STRING.equals(user.getSystemFlag())) {
......@@ -305,7 +308,8 @@ public class SysUserPermissionServiceImpl extends ServiceImpl<SysUserPermissionM
flag.append(insert.getPermissionType());
flag.append("_");
if (CommonConstants.SIX_STRING.equals(insert.getPermissionType()) ||
CommonConstants.SEVEN_STRING.equals(insert.getPermissionType())) {
CommonConstants.SEVEN_STRING.equals(insert.getPermissionType()) ||
CommonConstants.TEN_STRING.equals(insert.getPermissionType())) {
flag.append(excel.getName());
} else {
flag.append(excel.getCode());
......@@ -317,14 +321,17 @@ public class SysUserPermissionServiceImpl extends ServiceImpl<SysUserPermissionM
uniqueMap.put(flag.toString(), CommonConstants.ONE_STRING);
}
//BU和条线的时候用名称判断,其他用编码判断
//BU、条线、二级指标归属的时候用名称判断,其他用编码判断
//判断此登录名是否已经存在此权限维度
if (CommonConstants.SIX_STRING.equals(insert.getPermissionType())
|| CommonConstants.SEVEN_STRING.equals(insert.getPermissionType())) {
|| CommonConstants.SEVEN_STRING.equals(insert.getPermissionType())
|| CommonConstants.TEN_STRING.equals(insert.getPermissionType())) {
//判断对应维度的名称是否存在
Integer count;
if (CommonConstants.SIX_STRING.equals(insert.getPermissionType())) {
count = baseMapper.selectDictByName(excel.getName(), "bu");
} else if (CommonConstants.TEN_STRING.equals(insert.getPermissionType())) {
count = baseMapper.selectTwoGsCount(excel.getName());
} else {
count = baseMapper.selectDictByName(excel.getName(), "line");
}
......
......@@ -22,6 +22,7 @@
<result property="buId" column="BU_ID"/>
<result property="lineId" column="LINE_ID"/>
<result property="deptId" column="DEPT_ID"/>
<result property="twoLevelId" column="TWO_LEVEL_ID"/>
<result property="createBy" column="CREATE_BY"/>
<result property="updateBy" column="UPDATE_BY"/>
<result property="createName" column="CREATE_NAME"/>
......@@ -50,6 +51,7 @@
a.LINE_ID,
a.DEPT_ID,
a.IS_OPEN,
a.TWO_LEVEL_ID,
a.VIEW_ID,
a.CREATE_TIME,
a.TABLE_NAME,
......
......@@ -207,6 +207,16 @@
</if>
</select>
<select id="selectTwoGsVO" resultMap="nameAndCodeMap">
SELECT
a.fd_3b1235d8f35c6c name
from ekp_793f0c590104b7ebd460 a
where 1 = 1
<if test="name != null and name.trim() != ''">
AND a.fd_3b1235d8f35c6c like concat('%',#{name},'%')
</if>
</select>
<!--根据部门编码查询id-->
<select id="selectSettleByCode" resultType="java.lang.String">
SELECT
......@@ -281,6 +291,13 @@
where a.fd_is_available = '1' and fd_org_type = 2 and a.fd_no = #{name}
</select>
<select id="selectTwoGsCount" resultType="java.lang.Integer">
SELECT
count(1)
from ekp_793f0c590104b7ebd460 a
where a.fd_3b1235d8f35c6c = #{name}
</select>
<!-- 查找当前用户的所有权限 -->
<select id="getUserPermissionByUserId" resultMap="sysUserPermissionMap">
select
......
/*
* Copyright (c) 2018-2025, lengleng All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* Neither the name of the yifu4cloud.com developer nor the names of its
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
* Author: lengleng (wangiegie@gmail.com)
*/
package com.yifu.cloud.plus.v1.yifu.salary.entity;
import com.alibaba.excel.annotation.ExcelProperty;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.yifu.cloud.plus.v1.yifu.common.core.constant.ExcelAttribute;
import com.yifu.cloud.plus.v1.yifu.common.mybatis.base.BaseEntity;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.hibernate.validator.constraints.Length;
import javax.validation.constraints.NotBlank;
/**
* 薪资人员档案变更记录
*
* @author fxj
* @date 2023-10-11 17:48:31
*/
@Data
@TableName("t_salary_emp_mod_log")
@EqualsAndHashCode(callSuper = true)
@Schema(description = "薪资人员档案变更记录")
public class TSalaryEmpModLog extends BaseEntity {
/**
* id
*/
@TableId(type = IdType.ASSIGN_ID)
@ExcelProperty("id")
@Schema(description = "id")
private String id;
/**
* content
*/
@ExcelAttribute(name = "content", maxLength = 50)
@Length(max = 50, message = "content不能超过50个字符")
@ExcelProperty("content")
@Schema(description = "content")
private String content;
/**
* 0编辑、1批量更新、2EKP变更银行卡号
*/
@ExcelAttribute(name = "0编辑、1批量更新、2EKP变更银行卡号", isNotEmpty = true, errorInfo = "0编辑、1批量更新、2EKP变更银行卡号不能为空", maxLength = 1)
@NotBlank(message = "0编辑、1批量更新、2EKP变更银行卡号不能为空")
@Length(max = 1, message = "0编辑、1批量更新、2EKP变更银行卡号不能超过1个字符")
@ExcelProperty("0编辑、1批量更新、2EKP变更银行卡号")
@Schema(description = "0编辑、1批量更新、2EKP变更银行卡号")
private String type;
/**
* idNum
*/
@ExcelAttribute(name = "idNum", maxLength = 20)
@Length(max = 20, message = "idNum不能超过20个字符")
@ExcelProperty("idNum")
@Schema(description = "idNum")
private String idNum;
/**
* parentId
*/
@ExcelAttribute(name = "parentId", maxLength = 32)
@Length(max = 32, message = "parentId不能超过32个字符")
@ExcelProperty("parentId")
@Schema(description = "parentId")
private String parentId;
}
/*
* Copyright (c) 2018-2025, lengleng All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* Neither the name of the yifu4cloud.com developer nor the names of its
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
* Author: lengleng (wangiegie@gmail.com)
*/
package com.yifu.cloud.plus.v1.yifu.salary.vo;
import com.baomidou.mybatisplus.annotation.TableField;
import com.yifu.cloud.plus.v1.yifu.common.core.constant.ExcelAttribute;
import com.yifu.cloud.plus.v1.yifu.salary.entity.TSalaryEmpModLog;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.time.LocalDateTime;
/**
* 薪资人员档案变更记录
*
* @author fxj
* @date 2023-10-11 17:48:31
*/
@Data
public class TSalaryEmpModLogSearchVo extends TSalaryEmpModLog {
/**
* 多选导出或删除等操作
*/
@Schema(description = "选中ID,多个逗号分割")
private String ids;
/**
* 创建时间区间 [开始时间,结束时间]
*/
@Schema(description = "创建时间区间")
private LocalDateTime[] createTimes;
/**
* @Author fxj
* 查询数据起
**/
@Schema(description = "查询limit 开始")
private int limitStart;
/**
* @Author fxj
* 查询数据止
**/
@Schema(description = "查询limit 数据条数")
private int limitEnd;
//开始时间(查询专用)
@ExcelAttribute(name = "创建开始时间")
@TableField(exist = false)
private LocalDateTime createTimeStart;
//截止时间(查询专用)
@ExcelAttribute(name = "创建截止时间")
@TableField(exist = false)
private LocalDateTime createTimeEnd;
}
/*
* Copyright (c) 2018-2025, lengleng All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* Neither the name of the yifu4cloud.com developer nor the names of its
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
* Author: lengleng (wangiegie@gmail.com)
*/
package com.yifu.cloud.plus.v1.yifu.salary.vo;
import com.alibaba.excel.annotation.ExcelProperty;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.yifu.cloud.plus.v1.yifu.common.core.constant.ExcelAttribute;
import com.yifu.cloud.plus.v1.yifu.common.core.vo.RowIndex;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import org.hibernate.validator.constraints.Length;
import javax.validation.constraints.NotBlank;
import java.io.Serializable;
/**
* 薪资人员档案变更记录
*
* @author fxj
* @date 2023-10-11 17:48:31
*/
@Data
public class TSalaryEmpModLogVo extends RowIndex implements Serializable {
/**
* id
*/
@TableId(type = IdType.ASSIGN_ID)
@NotBlank(message = "id 不能为空")
@Length(max = 32, message = "id 不能超过32 个字符")
@ExcelAttribute(name = "id", isNotEmpty = true, errorInfo = "id 不能为空", maxLength = 32)
@Schema(description = "id")
@ExcelProperty("id")
private String id;
/**
* content
*/
@Length(max = 50, message = "content 不能超过50 个字符")
@ExcelAttribute(name = "content", maxLength = 50)
@Schema(description = "content")
@ExcelProperty("content")
private String content;
/**
* 0编辑、1批量更新、2EKP变更银行卡号
*/
@NotBlank(message = "0编辑、1批量更新、2EKP变更银行卡号 不能为空")
@Length(max = 1, message = "0编辑、1批量更新、2EKP变更银行卡号 不能超过1 个字符")
@ExcelAttribute(name = "0编辑、1批量更新、2EKP变更银行卡号", isNotEmpty = true, errorInfo = "0编辑、1批量更新、2EKP变更银行卡号 不能为空", maxLength = 1)
@Schema(description = "0编辑、1批量更新、2EKP变更银行卡号")
@ExcelProperty("0编辑、1批量更新、2EKP变更银行卡号")
private String type;
/**
* idNum
*/
@Length(max = 20, message = "idNum 不能超过20 个字符")
@ExcelAttribute(name = "idNum", maxLength = 20)
@Schema(description = "idNum")
@ExcelProperty("idNum")
private String idNum;
/**
* parentId
*/
@Length(max = 32, message = "parentId 不能超过32 个字符")
@ExcelAttribute(name = "parentId", maxLength = 32)
@Schema(description = "parentId")
@ExcelProperty("parentId")
private String parentId;
}
/*
* Copyright (c) 2018-2025, lengleng All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* Neither the name of the yifu4cloud.com developer nor the names of its
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
* Author: lengleng (wangiegie@gmail.com)
*/
package com.yifu.cloud.plus.v1.yifu.salary.controller;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yifu.cloud.plus.v1.yifu.common.core.util.R;
import com.yifu.cloud.plus.v1.yifu.common.log.annotation.SysLog;
import com.yifu.cloud.plus.v1.yifu.salary.entity.TSalaryEmpModLog;
import com.yifu.cloud.plus.v1.yifu.salary.service.TSalaryEmpModLogService;
import com.yifu.cloud.plus.v1.yifu.salary.vo.TSalaryEmpModLogSearchVo;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.RequiredArgsConstructor;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
* 薪资人员档案变更记录
*
* @author fxj
* @date 2023-10-11 17:48:31
*/
@RestController
@RequiredArgsConstructor
@RequestMapping("/tsalaryempmodlog" )
@Tag(name = "薪资人员档案变更记录管理")
public class TSalaryEmpModLogController {
private final TSalaryEmpModLogService tSalaryEmpModLogService;
/**
* 简单分页查询
* @param page 分页对象
* @param tSalaryEmpModLog 薪资人员档案变更记录
* @return
*/
@Operation(description = "简单分页查询")
@GetMapping("/page")
public R<IPage<TSalaryEmpModLog>> getTSalaryEmpModLogPage(Page<TSalaryEmpModLog> page, TSalaryEmpModLogSearchVo tSalaryEmpModLog) {
return new R<>(tSalaryEmpModLogService.getTSalaryEmpModLogPage(page,tSalaryEmpModLog));
}
/**
* 不分页查询
* @param tSalaryEmpModLog 薪资人员档案变更记录
* @return
*/
@Operation(summary = "不分页查询", description = "不分页查询")
@PostMapping("/noPage" )
public R<List<TSalaryEmpModLog>> getTSalaryEmpModLogNoPage(@RequestBody TSalaryEmpModLogSearchVo tSalaryEmpModLog) {
return R.ok(tSalaryEmpModLogService.noPageDiy(tSalaryEmpModLog));
}
/**
* 通过id查询薪资人员档案变更记录
* @param id id
* @return R
*/
@Operation(summary = "通过id查询", description = "通过id查询:hasPermission('demo_tsalaryempmodlog_get')")
@GetMapping("/{id}" )
@PreAuthorize("@pms.hasPermission('demo_tsalaryempmodlog_get')" )
public R<TSalaryEmpModLog> getById(@PathVariable("id" ) String id) {
return R.ok(tSalaryEmpModLogService.getById(id));
}
/**
* 新增薪资人员档案变更记录
* @param tSalaryEmpModLog 薪资人员档案变更记录
* @return R
*/
@Operation(summary = "新增薪资人员档案变更记录", description = "新增薪资人员档案变更记录:hasPermission('demo_tsalaryempmodlog_add')")
@SysLog("新增薪资人员档案变更记录" )
@PostMapping
public R<Boolean> save(@RequestBody TSalaryEmpModLog tSalaryEmpModLog) {
return R.ok(tSalaryEmpModLogService.save(tSalaryEmpModLog));
}
/**
* 修改薪资人员档案变更记录
* @param tSalaryEmpModLog 薪资人员档案变更记录
* @return R
*/
@Operation(summary = "修改薪资人员档案变更记录", description = "修改薪资人员档案变更记录:hasPermission('demo_tsalaryempmodlog_edit')")
@SysLog("修改薪资人员档案变更记录" )
@PutMapping
public R<Boolean> updateById(@RequestBody TSalaryEmpModLog tSalaryEmpModLog) {
return R.ok(tSalaryEmpModLogService.updateById(tSalaryEmpModLog));
}
/**
* 通过id删除薪资人员档案变更记录
* @param id id
* @return R
*/
@Operation(summary = "通过id删除薪资人员档案变更记录", description = "通过id删除薪资人员档案变更记录:hasPermission('demo_tsalaryempmodlog_del')")
@SysLog("通过id删除薪资人员档案变更记录" )
@DeleteMapping("/{id}" )
public R<Boolean> removeById(@PathVariable String id) {
return R.ok(tSalaryEmpModLogService.removeById(id));
}
}
......@@ -128,7 +128,7 @@ public class TSalaryEmployeeController {
@PutMapping
@PreAuthorize("@pms.hasPermission('salary_tsalaryemployee_edit')")
public R<Boolean> updateById(@RequestBody TSalaryEmployee tSalaryEmployee) {
return R.ok(tSalaryEmployeeService.updateById(tSalaryEmployee));
return tSalaryEmployeeService.updateByIdDiy(tSalaryEmployee);
}
/**
......
/*
* Copyright (c) 2018-2025, lengleng All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* Neither the name of the yifu4cloud.com developer nor the names of its
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
* Author: lengleng (wangiegie@gmail.com)
*/
package com.yifu.cloud.plus.v1.yifu.salary.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yifu.cloud.plus.v1.yifu.salary.entity.TSalaryEmpModLog;
import com.yifu.cloud.plus.v1.yifu.salary.vo.TSalaryEmpModLogSearchVo;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
/**
* 薪资人员档案变更记录
*
* @author fxj
* @date 2023-10-11 17:48:31
*/
@Mapper
public interface TSalaryEmpModLogMapper extends BaseMapper<TSalaryEmpModLog> {
/**
* 薪资人员档案变更记录简单分页查询
* @param tSalaryEmpModLog 薪资人员档案变更记录
* @return
*/
IPage<TSalaryEmpModLog> getTSalaryEmpModLogPage(Page<TSalaryEmpModLog> page, @Param("tSalaryEmpModLog") TSalaryEmpModLogSearchVo tSalaryEmpModLog);
}
/*
* Copyright (c) 2018-2025, lengleng All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* Neither the name of the yifu4cloud.com developer nor the names of its
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
* Author: lengleng (wangiegie@gmail.com)
*/
package com.yifu.cloud.plus.v1.yifu.salary.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.yifu.cloud.plus.v1.yifu.common.core.util.ErrorMessage;
import com.yifu.cloud.plus.v1.yifu.common.core.util.ExcelUtil;
import com.yifu.cloud.plus.v1.yifu.common.core.util.R;
import com.yifu.cloud.plus.v1.yifu.salary.entity.TSalaryEmpModLog;
import com.yifu.cloud.plus.v1.yifu.salary.entity.TSalaryEmployee;
import com.yifu.cloud.plus.v1.yifu.salary.vo.TSalaryEmpModLogSearchVo;
import javax.servlet.http.HttpServletResponse;
import java.io.InputStream;
import java.util.List;
/**
* 薪资人员档案变更记录
*
* @author fxj
* @date 2023-10-11 17:48:31
*/
public interface TSalaryEmpModLogService extends IService<TSalaryEmpModLog> {
/**
* 薪资人员档案变更记录简单分页查询
* @param tSalaryEmpModLog 薪资人员档案变更记录
* @return
*/
IPage<TSalaryEmpModLog> getTSalaryEmpModLogPage(Page<TSalaryEmpModLog> page, TSalaryEmpModLogSearchVo tSalaryEmpModLog);
List<TSalaryEmpModLog> noPageDiy(TSalaryEmpModLogSearchVo searchVo);
void initModLog(TSalaryEmployee newEntity, TSalaryEmployee oldEntity, String type, String userName, ExcelUtil<TSalaryEmployee> util);
}
......@@ -123,4 +123,7 @@ public interface TSalaryEmployeeService extends IService<TSalaryEmployee> {
R updateEmployeeFromEkp(TSalaryEmployeeEkpUpdateVo vo);
List<TSalaryEmpRosterVo> getSalaryEmpRoster(List<String> idCardList);
R<Boolean> updateByIdDiy(TSalaryEmployee tSalaryEmployee);
}
/*
* Copyright (c) 2018-2025, lengleng All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* Neither the name of the yifu4cloud.com developer nor the names of its
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
* Author: lengleng (wangiegie@gmail.com)
*/
package com.yifu.cloud.plus.v1.yifu.salary.service.impl;
import cn.hutool.core.util.ArrayUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.esotericsoftware.minlog.Log;
import com.yifu.cloud.plus.v1.yifu.common.core.constant.CommonConstants;
import com.yifu.cloud.plus.v1.yifu.common.core.util.Common;
import com.yifu.cloud.plus.v1.yifu.common.core.util.ExcelUtil;
import com.yifu.cloud.plus.v1.yifu.common.mybatis.base.BaseEntity;
import com.yifu.cloud.plus.v1.yifu.salary.entity.TSalaryEmpModLog;
import com.yifu.cloud.plus.v1.yifu.salary.entity.TSalaryEmployee;
import com.yifu.cloud.plus.v1.yifu.salary.mapper.TSalaryEmpModLogMapper;
import com.yifu.cloud.plus.v1.yifu.salary.service.TSalaryEmpModLogService;
import com.yifu.cloud.plus.v1.yifu.salary.vo.TSalaryEmpModLogSearchVo;
import lombok.extern.log4j.Log4j2;
import org.springframework.stereotype.Service;
import java.util.List;
/**
* 薪资人员档案变更记录
*
* @author fxj
* @date 2023-10-11 17:48:31
*/
@Log4j2
@Service
public class TSalaryEmpModLogServiceImpl extends ServiceImpl<TSalaryEmpModLogMapper, TSalaryEmpModLog> implements TSalaryEmpModLogService {
/**
* 薪资人员档案变更记录简单分页查询
* @param tSalaryEmpModLog 薪资人员档案变更记录
* @return
*/
@Override
public IPage<TSalaryEmpModLog> getTSalaryEmpModLogPage(Page<TSalaryEmpModLog> page, TSalaryEmpModLogSearchVo tSalaryEmpModLog){
return baseMapper.getTSalaryEmpModLogPage(page,tSalaryEmpModLog);
}
@Override
public List<TSalaryEmpModLog> noPageDiy(TSalaryEmpModLogSearchVo searchVo) {
LambdaQueryWrapper<TSalaryEmpModLog> wrapper = buildQueryWrapper(searchVo);
List<String> idList = Common.getList(searchVo.getIds());
if (Common.isNotNull(idList)){
wrapper.in(TSalaryEmpModLog::getId,idList);
}
if (searchVo.getLimitStart() >= 0 && searchVo.getLimitEnd() > 0){
wrapper.last(" limit "+ searchVo.getLimitStart() +","+ searchVo.getLimitEnd());
}
wrapper.orderByDesc(BaseEntity::getCreateTime);
return baseMapper.selectList(wrapper);
}
/**
* @Author fxj
* @Description 记录变更日志
* @Date 17:59 2023/10/24
* @Param type 0 编辑 1 批量更新 3 EKP 更新
* @return
**/
@Override
public void initModLog(TSalaryEmployee newEntity, TSalaryEmployee oldEntity, String type,String userName,ExcelUtil<TSalaryEmployee> util) {
if (Common.isNotNull(newEntity) && Common.isNotNull(oldEntity)){
TSalaryEmpModLog log = new TSalaryEmpModLog();
log.setIdNum(newEntity.getEmpIdcard());
log.setParentId(newEntity.getId());
log.setType(type);
log.setCreateName(userName);
StringBuilder str = new StringBuilder();
//编辑
if (Common.isEmpty(util)){
util = new ExcelUtil<>(TSalaryEmployee.class);
}
extracted(newEntity, oldEntity, str);
//计税月份
if (Common.isNotNull(newEntity.getTaxMonth()) && !oldEntity.getTaxMonth().equals(newEntity.getTaxMonth())){
str.append("计税月份:");
str.append(oldEntity.getTaxMonth());
str.append("->");
str.append(newEntity.getTaxMonth());
str.append(" ");
}
//开户行省
if (Common.isNotNull(newEntity.getBankProvince())
&& !oldEntity.getBankProvince().equals(newEntity.getBankProvince())){
str.append("开户行省:");
str.append(Common.isEmpty(oldEntity.getBankProvince())?"":util.getAreaLabelPublic(oldEntity.getBankProvince()));
str.append("->");
str.append(Common.isEmpty(newEntity.getBankProvince())?"":util.getAreaLabelPublic(newEntity.getBankProvince()));
str.append(" ");
}
//开户行市
if (Common.isNotNull(newEntity.getBankCity()) && !oldEntity.getBankCity().equals(newEntity.getBankCity())){
str.append("开户行市:");
str.append(Common.isEmpty(oldEntity.getBankCity())?"":util.getAreaLabelPublic(oldEntity.getBankCity()));
str.append("->");
str.append(Common.isEmpty(newEntity.getBankCity())?"":util.getAreaLabelPublic(newEntity.getBankCity()));
str.append(" ");
}
log.setContent(str.toString());
Log.error("薪资人员变更记录表:"+str.toString());
if (Common.isNotNull(log.getContent())){
baseMapper.insert(log);
}
}
}
private void extracted(TSalaryEmployee newEntity, TSalaryEmployee oldEntity, StringBuilder str) {
//姓名
if (Common.isNotNull(newEntity.getEmpName())
&& !oldEntity.getEmpName().equals(newEntity.getEmpName())){
str.append("员工姓名:");
str.append(oldEntity.getEmpName());
str.append("->");
str.append(newEntity.getEmpName());
str.append(" ");
}
//开户行
if (Common.isNotNull(newEntity.getBankName())
&& !oldEntity.getBankName().equals(newEntity.getBankName())){
str.append("开户行:");
str.append(oldEntity.getBankName());
str.append("->");
str.append(newEntity.getBankName());
str.append(" ");
}
//银行卡号
if (Common.isNotNull(newEntity.getBankNo())
&& !oldEntity.getBankNo().equals(newEntity.getBankNo())){
str.append("银行卡号:");
str.append(oldEntity.getBankNo());
str.append("->");
str.append(newEntity.getBankNo());
str.append(" ");
}
//开户行支行
if ((Common.isEmpty(oldEntity.getBankSubName())
&& Common.isNotNull(newEntity.getBankSubName()))
|| (Common.isNotNull(newEntity.getBankSubName())
&& !newEntity.getBankSubName().equals(oldEntity.getBankSubName()))){
str.append("开户行支行:");
str.append(oldEntity.getBankSubName());
str.append("->");
str.append(newEntity.getBankSubName());
str.append(" ");
}
//在职状态
if (Common.isNotNull(newEntity.getFileStatus())
&& !oldEntity.getFileStatus().equals(newEntity.getFileStatus())){
str.append("在职状态:");
str.append(CommonConstants.ZERO_STRING.equals(oldEntity.getFileStatus())?"在职":"离职");
str.append("->");
str.append(CommonConstants.ZERO_STRING.equals(newEntity.getFileStatus())?"在职":"离职");
str.append(" ");
}
//手机号码
if (Common.isNotNull(newEntity.getEmpPhone())
&& !oldEntity.getEmpPhone().equals(newEntity.getEmpPhone())){
str.append("手机号码:");
str.append(oldEntity.getEmpPhone());
str.append("->");
str.append(newEntity.getEmpPhone());
str.append(" ");
}
}
private LambdaQueryWrapper buildQueryWrapper(TSalaryEmpModLogSearchVo entity){
LambdaQueryWrapper<TSalaryEmpModLog> wrapper = Wrappers.lambdaQuery();
if (ArrayUtil.isNotEmpty(entity.getCreateTimes())) {
wrapper.ge(TSalaryEmpModLog::getCreateTime, entity.getCreateTimes()[0])
.le(TSalaryEmpModLog::getCreateTime,
entity.getCreateTimes()[1]);
}
if (Common.isNotNull(entity.getCreateName())){
wrapper.eq(TSalaryEmpModLog::getCreateName,entity.getCreateName());
}
return wrapper;
}
}
......@@ -26,33 +26,40 @@ import com.alibaba.excel.read.listener.ReadListener;
import com.alibaba.excel.read.metadata.holder.ReadRowHolder;
import com.alibaba.excel.util.ListUtils;
import com.alibaba.excel.write.metadata.WriteSheet;
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.esotericsoftware.minlog.Log;
import com.yifu.cloud.plus.v1.check.entity.TCheckBankNo;
import com.yifu.cloud.plus.v1.check.entity.TCheckIdCard;
import com.yifu.cloud.plus.v1.check.entity.TCheckMobile;
import com.yifu.cloud.plus.v1.check.vo.CheckBankNoVo;
import com.yifu.cloud.plus.v1.check.vo.CheckBatchVo;
import com.yifu.cloud.plus.v1.yifu.admin.api.entity.SysUser;
import com.yifu.cloud.plus.v1.yifu.archives.entity.TSettleDomain;
import com.yifu.cloud.plus.v1.yifu.common.core.constant.CacheConstants;
import com.yifu.cloud.plus.v1.yifu.common.core.constant.CommonConstants;
import com.yifu.cloud.plus.v1.yifu.common.core.constant.SecurityConstants;
import com.yifu.cloud.plus.v1.yifu.common.core.util.*;
import com.yifu.cloud.plus.v1.yifu.common.core.vo.YifuUser;
import com.yifu.cloud.plus.v1.yifu.common.dapr.config.DaprCheckProperties;
import com.yifu.cloud.plus.v1.yifu.common.dapr.util.HttpDaprUtil;
import com.yifu.cloud.plus.v1.yifu.common.security.util.SecurityUtils;
import com.yifu.cloud.plus.v1.yifu.salary.entity.TSalaryAccountItem;
import com.yifu.cloud.plus.v1.yifu.salary.entity.TSalaryEmployee;
import com.yifu.cloud.plus.v1.yifu.salary.mapper.TSalaryEmployeeMapper;
import com.yifu.cloud.plus.v1.yifu.salary.service.TBankSetService;
import com.yifu.cloud.plus.v1.yifu.salary.service.TSalaryEmpModLogService;
import com.yifu.cloud.plus.v1.yifu.salary.service.TSalaryEmployeeService;
import com.yifu.cloud.plus.v1.yifu.salary.util.SalaryConstants;
import com.yifu.cloud.plus.v1.yifu.salary.vo.*;
import lombok.extern.log4j.Log4j2;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
......@@ -82,6 +89,9 @@ public class TSalaryEmployeeServiceImpl extends ServiceImpl<TSalaryEmployeeMappe
@Autowired
private TBankSetService tBankSetService;
@Autowired
private TSalaryEmpModLogService logService;
/**
* 薪酬人员表简单分页查询
*
......@@ -531,6 +541,11 @@ public class TSalaryEmployeeServiceImpl extends ServiceImpl<TSalaryEmployeeMappe
* @return: void
**/
public void updateTSalaryEmployee(List<TSalaryEmployeeUpdateVo> excelVOList, List<ErrorMessage> errorMessageList) {
YifuUser user = SecurityUtils.getUser();
if (Common.isEmpty(user)){
errorMessageList.add(new ErrorMessage(CommonConstants.ONE_INT_NEGATE, CommonConstants.USER_FAIL));
return;
}
/// 个性化校验逻辑
TSalaryEmployeeUpdateVo excel;
List<String> idCardList = new ArrayList<>();
......@@ -549,11 +564,15 @@ public class TSalaryEmployeeServiceImpl extends ServiceImpl<TSalaryEmployeeMappe
String areaStr;
boolean curTaxMonth;
Map<String, String> bankMap = tBankSetService.getBankMap(null);
ExcelUtil<TSalaryEmployee> util = new ExcelUtil<>(TSalaryEmployee.class);
TSalaryEmployee old =null;
for (int i = 0; i < excelVOList.size(); i++) {
excel = excelVOList.get(i);
if (excel != null) {
if (Common.isNotNull(excel.getEmpIdcard())) {
emp = empMap.get(excel.getEmpIdcard());
old = new TSalaryEmployee();
BeanUtil.copyProperties(emp,old);
if (Common.isNotNull(emp)) {
curTaxMonth = false;
if (Common.isNotNull(emp.getTaxMonth()) && Common.isNotNull(excel.getTaxMonth()) && emp.getTaxMonth().length()==6) {
......@@ -599,6 +618,8 @@ public class TSalaryEmployeeServiceImpl extends ServiceImpl<TSalaryEmployeeMappe
if (Common.isNotNull(excel.getEmpName())) {
emp.setEmpName(excel.getEmpName());
}
// 变更日志 fxj 2023-10-24
logService.initModLog(old,emp,CommonConstants.ONE_STRING,user.getNickname(),util);
baseMapper.updateById(emp);
if (curTaxMonth) {
errorMessageList.add(new ErrorMessage(excel.getRowIndex(), SalaryConstants.CUR_TAX_INFO));
......@@ -691,6 +712,7 @@ public class TSalaryEmployeeServiceImpl extends ServiceImpl<TSalaryEmployeeMappe
+ "行:-上次代发户未校验【姓名与卡号】,本次校验结果:不匹配。请去薪酬人员查询处更新卡号信息!"));
return false;
}
}
this.saveOrUpdateBatch(empList);
}
......@@ -902,17 +924,17 @@ public class TSalaryEmployeeServiceImpl extends ServiceImpl<TSalaryEmployeeMappe
@Override
@Transactional(rollbackFor = Exception.class)
public R updateEmployeeFromEkp(TSalaryEmployeeEkpUpdateVo vo) {
if (Common.isEmpty(vo.getEmpIdcard())) {
return R.failed(CommonConstants.PARAM_IS_NOT_ERROR);
}
TSalaryEmployee one = baseMapper.selectOne(Wrappers.<TSalaryEmployee>query().lambda()
.eq(TSalaryEmployee::getEmpIdcard, vo.getEmpIdcard())
.last(CommonConstants.LAST_ONE_SQL));
TSalaryEmployee old = new TSalaryEmployee();
BeanUtil.copyProperties(one,old);
if (Common.isNotNull(one)) {
one.setBankNo(vo.getBankNo());
one.setEmpName(vo.getEmpName());
one.setBankName(vo.getBankName());
baseMapper.updateById(one);
logService.initModLog(old,one,CommonConstants.TWO_STRING, "ekp",null);
}
return R.ok();
}
......@@ -930,4 +952,24 @@ public class TSalaryEmployeeServiceImpl extends ServiceImpl<TSalaryEmployeeMappe
}
return null;
}
@Override
public R<Boolean> updateByIdDiy(TSalaryEmployee tSalaryEmployee) {
if (Common.isEmpty(tSalaryEmployee.getId())){
return R.failed(CommonConstants.PARAM_INFO_ERROR);
}
YifuUser user = SecurityUtils.getUser();
if (Common.isEmpty(user)){
return R.failed(CommonConstants.USER_FAIL);
}
// 变更日志 fxj 2023-10-24
TSalaryEmployee old = baseMapper.selectById(tSalaryEmployee.getId());
logService.initModLog(old,tSalaryEmployee,CommonConstants.ZERO_STRING,user.getNickname(),null);
int res = baseMapper.updateById(tSalaryEmployee);
if (res >= CommonConstants.ZERO_INT){
return R.ok();
}else {
return R.failed(CommonConstants.UPDATE_DATA_FAIL);
}
}
}
<?xml version="1.0" encoding="UTF-8"?>
<!--
~
~ Copyright (c) 2018-2025, lengleng All rights reserved.
~
~ Redistribution and use in source and binary forms, with or without
~ modification, are permitted provided that the following conditions are met:
~
~ Redistributions of source code must retain the above copyright notice,
~ this list of conditions and the following disclaimer.
~ Redistributions in binary form must reproduce the above copyright
~ notice, this list of conditions and the following disclaimer in the
~ documentation and/or other materials provided with the distribution.
~ Neither the name of the yifu4cloud.com developer nor the names of its
~ contributors may be used to endorse or promote products derived from
~ this software without specific prior written permission.
~ Author: lengleng (wangiegie@gmail.com)
~
-->
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.yifu.cloud.plus.v1.yifu.salary.mapper.TSalaryEmpModLogMapper">
<resultMap id="tSalaryEmpModLogMap" type="com.yifu.cloud.plus.v1.yifu.salary.entity.TSalaryEmpModLog">
<id property="id" column="id"/>
<result property="content" column="content"/>
<result property="type" column="type"/>
<result property="createBy" column="CREATE_BY"/>
<result property="createName" column="CREATE_NAME"/>
<result property="createTime" column="CREATE_TIME"/>
<result property="updateBy" column="UPDATE_BY"/>
<result property="updateTime" column="UPDATE_TIME"/>
<result property="idNum" column="id_num"/>
<result property="parentId" column="parent_id"/>
</resultMap>
<sql id="Base_Column_List">
a.id,
a.content,
a.type,
a.CREATE_BY,
a.CREATE_NAME,
a.CREATE_TIME,
a.UPDATE_BY,
a.UPDATE_TIME,
a.id_num,
a.parent_id
</sql>
<sql id="tSalaryEmpModLog_where">
<if test="tSalaryEmpModLog != null">
<if test="tSalaryEmpModLog.id != null and tSalaryEmpModLog.id.trim() != ''">
AND a.id = #{tSalaryEmpModLog.id}
</if>
<if test="tSalaryEmpModLog.content != null and tSalaryEmpModLog.content.trim() != ''">
AND a.content like concat('%',#{tSalaryEmpModLog.content},'%')
</if>
<if test="tSalaryEmpModLog.type != null and tSalaryEmpModLog.type.trim() != ''">
AND a.type = #{tSalaryEmpModLog.type}
</if>
<if test="tSalaryEmpModLog.createBy != null and tSalaryEmpModLog.createBy.trim() != ''">
AND a.CREATE_BY = #{tSalaryEmpModLog.createBy}
</if>
<if test="tSalaryEmpModLog.createName != null and tSalaryEmpModLog.createName.trim() != ''">
AND a.CREATE_NAME = #{tSalaryEmpModLog.createName}
</if>
<if test="tSalaryEmpModLog.createTimeStart != null">
AND a.CREATE_TIME <![CDATA[ >= ]]> #{tSalaryEmpModLog.createTimeStart}
</if>
<if test="tSalaryEmpModLog.createTimeEnd != null">
AND a.CREATE_TIME <![CDATA[ <= ]]> #{tSalaryEmpModLog.createTimeEnd}
</if>
<if test="tSalaryEmpModLog.updateBy != null and tSalaryEmpModLog.updateBy.trim() != ''">
AND a.UPDATE_BY = #{tSalaryEmpModLog.updateBy}
</if>
<if test="tSalaryEmpModLog.updateTime != null">
AND a.UPDATE_TIME = #{tSalaryEmpModLog.updateTime}
</if>
<if test="tSalaryEmpModLog.idNum != null and tSalaryEmpModLog.idNum.trim() != ''">
AND a.id_num = #{tSalaryEmpModLog.idNum}
</if>
<if test="tSalaryEmpModLog.parentId != null and tSalaryEmpModLog.parentId.trim() != ''">
AND a.parent_id = #{tSalaryEmpModLog.parentId}
</if>
</if>
</sql>
<!--tSalaryEmpModLog简单分页查询-->
<select id="getTSalaryEmpModLogPage" resultMap="tSalaryEmpModLogMap">
SELECT
<include refid="Base_Column_List"/>
FROM t_salary_emp_mod_log a
<where>
1=1
<include refid="tSalaryEmpModLog_where"/>
</where>
</select>
</mapper>
......@@ -626,6 +626,36 @@ public class TDispatchInfo extends BaseEntity {
@Schema(description = "学历", name = "contractName")
private String educationName;
/**
* 学校
*/
@ExcelAttribute(name = "学校",isNotEmpty = false)
@Length(max = 50, message = "学校不能超过50个字符")
@Schema(description = "学校:派增只做记录" )
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty(value ="学校")
private String schoolName;
/**
* 专业
*/
@ExcelAttribute(name = "专业",isNotEmpty = false)
@Length(max = 50, message = "学校不能超过50个字符")
@Schema(description = "专业:派增只做记录" )
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty(value ="专业")
private String major;
/**
* 首次至缴纳地时间
*/
@ExcelAttribute(name = "首次至缴纳地时间",isNotEmpty = false, isDate = true)
@Length(max = 50, message = "学校不能超过50个字符")
@Schema(description = "首次至缴纳地时间" )
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty(value ="首次至缴纳地时间")
private Date firstPayTime;
/**
* 试用期(单位月)
*/
......
......@@ -955,4 +955,14 @@ public class TSocialInfo extends BaseEntity {
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("个人社保合计")
private BigDecimal personalSocialSum;
/**
* 首次至缴纳地时间
*/
@ExcelAttribute(name = "首次至缴纳地时间",isNotEmpty = false, isDate = true)
@Length(max = 50, message = "学校不能超过50个字符")
@Schema(description = "首次至缴纳地时间" )
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty(value ="首次至缴纳地时间")
private Date firstPayTime;
}
......@@ -4,13 +4,16 @@ import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.annotation.format.DateTimeFormat;
import com.alibaba.excel.annotation.write.style.ContentStyle;
import com.alibaba.excel.annotation.write.style.HeadFontStyle;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.yifu.cloud.plus.v1.yifu.common.core.constant.ExcelAttribute;
import com.yifu.cloud.plus.v1.yifu.common.core.constant.ExcelAttributeConstants;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import org.hibernate.validator.constraints.Length;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
/**
* @Author fxj
......@@ -435,4 +438,33 @@ public class SocialHandleExportVo implements Serializable {
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("是否已导出" )
private String exportSocialFlag;
/**
* 学校
*/
@ExcelAttribute(name = "学校",isNotEmpty = false)
@Schema(description = "学校:派增只做记录" )
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty(value ="学校")
private String schoolName;
/**
* 专业
*/
@ExcelAttribute(name = "专业",isNotEmpty = false)
@Length(max = 50, message = "学校不能超过50个字符")
@Schema(description = "专业:派增只做记录" )
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty(value ="专业")
private String major;
/**
* 首次至缴纳地时间
*/
@DateTimeFormat("yyyy-MM-dd")
@ExcelAttribute(name = "首次至缴纳地时间",isNotEmpty = false,isDate = true)
@Schema(description = "首次至缴纳地时间" )
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty(value ="首次至缴纳地时间")
private Date firstPayTime;
}
......@@ -351,4 +351,37 @@ public class TDispatchAuditExportVo {
@ExcelProperty("个人公积金缴纳比例" )
private BigDecimal personalProvidentPer;
@ExcelAttribute(name = "学历", maxLength = 32)
@Schema(description = "学历", name = "contractName")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("学历")
private String educationName;
/**
* 学校
*/
@ExcelAttribute(name = "学校",isNotEmpty = false)
@Schema(description = "学校:派增只做记录" )
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty(value ="学校")
private String schoolName;
/**
* 专业
*/
@ExcelAttribute(name = "专业",isNotEmpty = false)
@Length(max = 50, message = "学校不能超过50个字符")
@Schema(description = "专业:派增只做记录" )
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty(value ="专业")
private String major;
/**
* 首次至缴纳地时间
*/
@DateTimeFormat("yyyy-MM-dd")
@ExcelAttribute(name = "首次至缴纳地时间",isNotEmpty = false,isDate = true)
@Schema(description = "首次至缴纳地时间" )
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty(value ="首次至缴纳地时间")
private Date firstPayTime;
}
......@@ -280,6 +280,36 @@ public class TDispatchImportVo extends RowIndex implements Serializable {
@ExcelProperty(value ="学历")
private String educationName;
/**
* 学校
*/
@ExcelAttribute(name = "学校",isNotEmpty = false,maxLength = 50)
@Length(max = 50, message = "学校不能超过50个字符")
@Schema(description = "学校:派增只做记录" )
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty(value ="学校")
private String schoolName;
/**
* 专业
*/
@ExcelAttribute(name = "专业",isNotEmpty = false,maxLength = 50)
@Length(max = 50, message = "学校不能超过50个字符")
@Schema(description = "专业:派增只做记录" )
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty(value ="专业")
private String major;
/**
* 首次至缴纳地时间
*/
@ExcelAttribute(name = "首次至缴纳地时间",isNotEmpty = false,isDate = true)
@Length(max = 50, message = "学校不能超过50个字符")
@Schema(description = "首次至缴纳地时间" )
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty(value ="首次至缴纳地时间")
private Date firstPayTime;
/**
* 备案基数
*/
......
......@@ -476,4 +476,38 @@ public class TDispatchInfoExportVo {
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("公积金办理备注" )
private String fundHandleRemark;
@ExcelAttribute(name = "学历", maxLength = 32)
@Schema(description = "学历", name = "contractName")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("学历")
private String educationName;
/**
* 学校
*/
@ExcelAttribute(name = "学校",isNotEmpty = false)
@Schema(description = "学校:派增只做记录" )
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty(value ="学校")
private String schoolName;
/**
* 专业
*/
@ExcelAttribute(name = "专业",isNotEmpty = false)
@Schema(description = "专业:派增只做记录" )
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty(value ="专业")
private String major;
/**
* 首次至缴纳地时间
*/
@DateTimeFormat("yyyy-MM-dd")
@ExcelAttribute(name = "首次至缴纳地时间",isNotEmpty = false,isDate = true)
@Schema(description = "首次至缴纳地时间" )
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty(value ="首次至缴纳地时间")
private Date firstPayTime;
}
......@@ -333,6 +333,106 @@ public class TPaymentInfoNewExportVo extends RowIndex implements Serializable {
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("个人大病金额")
private BigDecimal personalBigmailmentMoney;
/**
* 养老保险合计
*/
@ExcelAttribute(name = "养老保险合计")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("养老保险合计")
private BigDecimal pensionMoneySum;
/**
* 医疗保险合计
*/
@ExcelAttribute(name = "医疗保险合计")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("医疗保险合计")
private BigDecimal medicalMoneySum;
/**
* 失业保险合计
*/
@ExcelAttribute(name = "失业保险合计")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("失业保险合计")
private BigDecimal unemploymentMoneySum;
/**
* 工伤保险合计
*/
@ExcelAttribute(name = "工伤保险合计")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("工伤保险合计")
private BigDecimal injuryMoneySum;
/**
* 生育保险合计
*/
@ExcelAttribute(name = "生育保险合计")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("生育保险合计")
private BigDecimal birthMoneySum;
/**
* 大病保险合计
*/
@ExcelAttribute(name = "大病保险合计")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("大病保险合计")
private BigDecimal bigmailmentMoneySum;
/**
* 养老单位比例
*/
@ExcelAttribute(name = "养老单位比例")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("养老单位比例")
private BigDecimal unitPensionPer;
/**
* 医疗单位比例
*/
@ExcelAttribute(name = "医疗单位比例")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("医疗单位比例")
private BigDecimal unitMedicalPer;
/**
* 失业单位比例
*/
@ExcelAttribute(name = "失业单位比例")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("失业单位比例")
private BigDecimal unitUnemploymentPer;
/**
* 工伤单位比例
*/
@ExcelAttribute(name = "工伤单位比例")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("工伤单位比例")
private BigDecimal unitInjuryPer;
/**
* 生育单位比例
*/
@ExcelAttribute(name = "生育单位比例")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("生育单位比例")
private BigDecimal unitBirthPer;
/**
* 养老个人比例
*/
@ExcelAttribute(name = "养老个人比例")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("养老个人比例")
private BigDecimal personalPensionPer;
/**
* 个人医疗比例
*/
@ExcelAttribute(name = "医疗个人比例")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("医疗个人比例")
private BigDecimal personalMedicalPer;
/**
* 失业个人比例
*/
@ExcelAttribute(name = "失业个人比例")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("失业个人比例")
private BigDecimal personalUnemploymentPer;
/**
* 公积金编号
*/
......
......@@ -411,4 +411,62 @@ public class TPaymentInfoNewVo extends RowIndex implements Serializable {
@Schema(description = "二级指标归属")
private String secondIndicatorBelong ;
/**
* 养老单位比例
*/
@ExcelAttribute(name = "养老单位比例")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("养老单位比例")
private BigDecimal unitPensionPer;
/**
* 医疗单位比例
*/
@ExcelAttribute(name = "医疗单位比例")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("医疗单位比例")
private BigDecimal unitMedicalPer;
/**
* 失业单位比例
*/
@ExcelAttribute(name = "失业单位比例")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("失业单位比例")
private BigDecimal unitUnemploymentPer;
/**
* 工伤单位比例
*/
@ExcelAttribute(name = "工伤单位比例")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("工伤单位比例")
private BigDecimal unitInjuryPer;
/**
* 生育单位比例
*/
@ExcelAttribute(name = "生育单位比例")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("生育单位比例")
private BigDecimal unitBirthPer;
/**
* 养老个人比例
*/
@ExcelAttribute(name = "养老个人比例")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("养老个人比例")
private BigDecimal personalPensionPer;
/**
* 个人医疗比例
*/
@ExcelAttribute(name = "医疗个人比例")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("医疗个人比例")
private BigDecimal personalMedicalPer;
/**
* 失业个人比例
*/
@ExcelAttribute(name = "失业个人比例")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("失业个人比例")
private BigDecimal personalUnemploymentPer;
}
......@@ -19,15 +19,19 @@ package com.yifu.cloud.plus.v1.yifu.social.controller;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yifu.cloud.plus.v1.yifu.common.core.constant.CommonConstants;
import com.yifu.cloud.plus.v1.yifu.common.core.util.ErrorMessage;
import com.yifu.cloud.plus.v1.yifu.common.core.util.R;
import com.yifu.cloud.plus.v1.yifu.common.log.annotation.SysLog;
import com.yifu.cloud.plus.v1.yifu.social.entity.TSocialfundHouseRes;
import com.yifu.cloud.plus.v1.yifu.social.service.TSocialfundHouseResService;
import lombok.SneakyThrows;
import org.springframework.security.access.prepost.PreAuthorize;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import java.util.List;
......@@ -119,4 +123,37 @@ public class TSocialfundHouseResController {
public R<Boolean> removeById(@PathVariable String id) {
return R.ok(tSocialfundHouseResService.removeById(id));
}
/**
* @Author fxj
* @Description 批量导入社保公积金审核权限
* @Date 16:59 2023/10/17
* @Param
* @return
**/
@SneakyThrows
@Operation(description = "批量新增社保公积金审核权限")
@SysLog("批量新增社保公积金审核权限")
@PostMapping("/importListAdd")
public R<List<ErrorMessage>> importListAdd(@RequestBody MultipartFile file) {
return tSocialfundHouseResService.importDiy(file.getInputStream());
}
/**
* @Author fxj
* @Description 批量新增社保|公积金办理权限
* @Date 16:59 2023/10/17
* @Param
* @return
**/
@SneakyThrows
@Operation(description = "批量新增社保|公积金办理权限")
@SysLog("批量新增社保|公积金办理权限")
@PostMapping("/importListAddAll")
public R<List<ErrorMessage>> importListAddAll(@RequestBody MultipartFile file,String type) {
if (CommonConstants.ZERO_STRING.equals(type) && CommonConstants.ONE_STRING.equals(type)){
return R.failed(CommonConstants.PARAM_INFO_ERROR);
}
return tSocialfundHouseResService.importDiyAll(file.getInputStream(),type);
}
}
......@@ -63,4 +63,7 @@ public interface TSocialfundHouseResService extends IService<TSocialfundHouseRes
**/
void deleteHandleUser(SysHouseHoldInfo holdInfo);
R<List<ErrorMessage>> importDiy(InputStream inputStream);
R<List<ErrorMessage>> importDiyAll(InputStream inputStream, String type);
}
......@@ -738,7 +738,7 @@ public class TDispatchInfoServiceImpl extends ServiceImpl<TDispatchInfoMapper, T
if (Common.isNotNull(socialFund) && Common.isNotNull(socialFund.getId())){
forecastLibraryService.updateForecastLibaryByDispatch(null,null,socialFund);
}
// 同步更新人员档案和项目档案的社保公积金状态
// 同步更新人员档案和项目档案的社保公积金状态 学历信息
updateDocSocialFund(social, fund, socialFund,empVoMap,excel);
errorMessageList.add(new ErrorMessage(excel.getRowIndex(), CommonConstants.SAVE_SUCCESS, CommonConstants.GREEN));
......@@ -812,6 +812,7 @@ public class TDispatchInfoServiceImpl extends ServiceImpl<TDispatchInfoMapper, T
}
if(Common.isNotNull(emp)) {
if (Common.isEmpty(emp.getHignEducation())) {
vo.setHighEducation("");
if (excel.getEducationName().equals("文盲")) {
vo.setHighEducation("1");
}
......@@ -845,8 +846,11 @@ public class TDispatchInfoServiceImpl extends ServiceImpl<TDispatchInfoMapper, T
if (excel.getEducationName().equals("中专")) {
vo.setHighEducation("11");
}
else {
vo.setHighEducation("");
if (Common.isNotNull(excel.getSchoolName())){
vo.setSchoolName(excel.getSchoolName());
}
if (Common.isNotNull(excel.getMajor())){
vo.setMajor(excel.getMajor());
}
}
}
......@@ -1320,6 +1324,9 @@ public class TDispatchInfoServiceImpl extends ServiceImpl<TDispatchInfoMapper, T
dispatch.setBelongUnit(excel.getCustomerId());
dispatch.setBelongUnitName(excel.getCustomerName());
dispatch.setEducationName(excel.getEducationName());
dispatch.setSchoolName(excel.getSchoolName());
dispatch.setMajor(excel.getMajor());
dispatch.setFirstPayTime(excel.getFirstPayTime());
dispatch.setIdCardProvince(excel.getIdCardProvince());
dispatch.setIdCardCity(excel.getIdCardCity());
dispatch.setIdCardTown(excel.getIdCardTown());
......@@ -1598,6 +1605,7 @@ public class TDispatchInfoServiceImpl extends ServiceImpl<TDispatchInfoMapper, T
social.setHandleStatus(CommonConstants.ZERO_STRING);
social.setDeleteFlag(CommonConstants.ZERO_STRING);
social.setTrustRemark(excel.getTrustRemark());
social.setFirstPayTime(excel.getFirstPayTime());
List<Date> lstDate = new ArrayList<>();
if (Common.isNotNull(excel.getPensionStart())) {
lstDate.add(excel.getPensionStart());
......@@ -2125,6 +2133,8 @@ public class TDispatchInfoServiceImpl extends ServiceImpl<TDispatchInfoMapper, T
emp.setEmpPhone(excel.getEmpMobile());
emp.setEmpRegisType(excel.getEmpRegisType());
emp.setHignEducation(excel.getEducationName());
emp.setMajor(excel.getMajor());
emp.setSchool(excel.getSchoolName());
emp.setContractStatus(CommonConstants.ZERO_INT);
emp.setDeleteFlag(CommonConstants.ZERO_STRING);
emp.setFileSource(CommonConstants.ONE_STRING);
......
......@@ -99,6 +99,10 @@
<result property="createTime" column="CREATE_TIME"/>
<result property="orderId" column="ORDER_ID"/>
<result property="schoolName" column="SCHOOL_NAME"/>
<result property="major" column="MAJOR"/>
<result property="firstPayTime" column="FIRST_PAY_TIME"/>
</resultMap>
<resultMap id="dispatchPageMap" type="com.yifu.cloud.plus.v1.yifu.social.vo.TDispatchInfoPageVo" extends="tDispatchInfoMap">
<result property="providentHouseholdName" column="PROVIDENT_HOUSEHOLD_NAME"/>
......@@ -163,6 +167,11 @@
<result property="unitWorkInjuryCardinal" column="UNIT_WORK_INJURY_CARDINAL"/>
<result property="unitBirthCardinal" column="UNIT_BIRTH_CARDINAL"/>
<result property="empMobile" column="EMP_MOBILE"/>
<result property="educationName" column="EDUCATION_NAME"/>
<result property="schoolName" column="SCHOOL_NAME"/>
<result property="major" column="MAJOR"/>
<result property="firstPayTime" column="FIRST_PAY_TIME"/>
</resultMap>
<resultMap id="fundSupplementaryMap" type="com.yifu.cloud.plus.v1.yifu.social.vo.FundSupplementaryExportVo">
......@@ -327,6 +336,11 @@
<result property="personalProvidentCardinal" column="PERSONAL_PROVIDENT_CARDINAL"/>
<result property="unitProvidentPer" column="UNIT_PROVIDENT_PER"/>
<result property="personalProvidentPer" column="PERSONAL_PROVIDENT_PER"/>
<result property="educationName" column="EDUCATION_NAME"/>
<result property="schoolName" column="SCHOOL_NAME"/>
<result property="major" column="MAJOR"/>
<result property="firstPayTime" column="FIRST_PAY_TIME"/>
</resultMap>
<sql id="Base_Column_List">
......@@ -403,7 +417,10 @@
a.ID_CARD_TOWN,
a.ID_CARD_ADDRESS,
a.APPLY_NO,
a.ORDER_ID
a.ORDER_ID,
a.SCHOOL_NAME,
a.MAJOR,
a.FIRST_PAY_TIME
</sql>
<sql id="tDispatchInfo_where">
<if test="tDispatchInfo != null">
......@@ -934,7 +951,11 @@
c.PROVIDENT_HOUSEHOLD_NAME,
c.UNIT_PROVIDENG_CARDINAL,
c.UNIT_PROVIDENT_PER,
a.EMP_MOBILE
a.EMP_MOBILE,
a.EDUCATION_NAME,
a.SCHOOL_NAME,
a.MAJOR,
a.FIRST_PAY_TIME
from t_dispatch_info a
left join t_social_info s on s.id=a.SOCIAL_ID
......@@ -991,7 +1012,11 @@
c.PROVIDENT_START,
c.PERSONAL_PROVIDENT_CARDINAL,
c.UNIT_PROVIDENT_PER,
c.PERSONAL_PROVIDENT_PER
c.PERSONAL_PROVIDENT_PER,
a.EDUCATION_NAME,
a.SCHOOL_NAME,
a.MAJOR,
a.FIRST_PAY_TIME
from t_dispatch_info a
left join t_social_info b on a.SOCIAL_ID = b.ID
left join t_provident_fund c on a.FUND_ID = C.ID
......@@ -1075,6 +1100,9 @@
<result property="birthStart" column="BIRTH_START"/>
<result property="bigailmentStart" column="BIGAILMENT_START"/>
<result property="exportSocialFlag" column="EXPORT_SOCIAL_FLAG"/>
<result property="schoolName" column="SCHOOL_NAME"/>
<result property="major" column="MAJOR"/>
<result property="firstPayTime" column="FIRST_PAY_TIME"/>
</resultMap>
<resultMap id="fundHandleMap" type="com.yifu.cloud.plus.v1.yifu.social.vo.FundHandleExportVo">
......@@ -1160,7 +1188,10 @@
s.PERSONAL_BIGAILMENT_MONEY,
a.TRUST_REMARK,
a.REDUCE_REASON,
'1' as EXPORT_SOCIAL_FLAG
'1' as EXPORT_SOCIAL_FLAG,
a.SCHOOL_NAME,
a.MAJOR,
a.FIRST_PAY_TIME
FROM t_dispatch_info a
left join t_social_info s on a.SOCIAL_ID = s.id
<include refid="where_getSocialRecordRoster"/>
......
......@@ -302,6 +302,14 @@
<result property="socialFundPersonalSum" column="SOCIAL_FUND_PERSONAL_SUM"/>
<result property="keyGroup" column="keyGroup"/>
<result property="secondIndicatorBelong" column="SECOND_INDICATOR_BELONG"/>
<result property="unitPensionPer" column="UNIT_PENSION_PER"/>
<result property="unitMedicalPer" column="UNIT_MEDICAL_PER"/>
<result property="unitUnemploymentPer" column="UNIT_UNEMPLOYMENT_PER"/>
<result property="unitInjuryPer" column="UNIT_INJURY_PER"/>
<result property="unitBirthPer" column="UNIT_BIRTH_PER"/>
<result property="personalPensionPer" column="PERSONAL_PENSION_PER"/>
<result property="personalMedicalPer" column="PERSONAL_MEDICAL_PER"/>
<result property="personalUnemploymentPer" column="PERSONAL_UNEMPLOYMENT_PER"/>
</resultMap>
<resultMap id="tPaymentInfoNewExportMap" type="com.yifu.cloud.plus.v1.yifu.social.vo.TPaymentInfoNewExportVo">
......@@ -351,6 +359,20 @@
<result property="personalProvidentSum" column="PERSONAL_PROVIDENT_SUM"/>
<result property="keyGroup" column="keyGroup"/>
<result property="secondIndicatorBelong" column="SECOND_INDICATOR_BELONG"/>
<result property="unitPensionPer" column="UNIT_PENSION_PER"/>
<result property="unitMedicalPer" column="UNIT_MEDICAL_PER"/>
<result property="unitUnemploymentPer" column="UNIT_UNEMPLOYMENT_PER"/>
<result property="unitInjuryPer" column="UNIT_INJURY_PER"/>
<result property="unitBirthPer" column="UNIT_BIRTH_PER"/>
<result property="personalPensionPer" column="PERSONAL_PENSION_PER"/>
<result property="personalMedicalPer" column="PERSONAL_MEDICAL_PER"/>
<result property="personalUnemploymentPer" column="PERSONAL_UNEMPLOYMENT_PER"/>
<result property="pensionMoneySum" column="PENSION_MONEY_SUM"/>
<result property="medicalMoneySum" column="MEDICAL_MONEY_SUM"/>
<result property="unemploymentMoneySum" column="UNEMPLOYMENT_MONEY_SUM"/>
<result property="injuryMoneySum" column="INJURY_MONEY_SUM"/>
<result property="birthMoneySum" column="BIRTH_MONEY_SUM"/>
<result property="bigmailmentMoneySum" column="BIGMAILMENT_MONEY_SUM"/>
</resultMap>
<sql id="Base_Column_List">
a.ID,
......@@ -1302,7 +1324,15 @@
k.PROVIDENT_PERCENT,
k.SOCIAL_FUND_PERSONAL_SUM,
k.UNIT_SOCIAL_FUND_SUM,
k.UNIT_PROVIDENT_SUM
k.UNIT_PROVIDENT_SUM,
k.UNIT_PENSION_PER,
k.UNIT_MEDICAL_PER,
k.UNIT_UNEMPLOYMENT_PER,
k.UNIT_INJURY_PER,
k.UNIT_BIRTH_PER,
k.PERSONAL_PENSION_PER,
k.PERSONAL_MEDICAL_PER,
k.PERSONAL_UNEMPLOYMENT_PER
from (
select
w.keyGroup,
......@@ -1352,7 +1382,15 @@
SUM( w.PROVIDENT_PERCENT ) AS PROVIDENT_PERCENT,
ifnull(SUM( w.SOCIAL_SECURITY_PERSONAL_SUM ),0) + ifnull(SUM( w.PERSONAL_PROVIDENT_SUM ),0) AS SOCIAL_FUND_PERSONAL_SUM,
ifnull(SUM( w.UNIT_SOCIAL_SUM ),0) + ifnull(SUM( w.UNIT_PROVIDENT_SUM ),0) AS UNIT_SOCIAL_FUND_SUM,
SUM( w.UNIT_PROVIDENT_SUM ) AS UNIT_PROVIDENT_SUM
SUM( w.UNIT_PROVIDENT_SUM ) AS UNIT_PROVIDENT_SUM,
MAX(w.UNIT_PENSION_PER) as UNIT_PENSION_PER,
MAX(w.UNIT_MEDICAL_PER) as UNIT_MEDICAL_PER,
MAX(w.UNIT_UNEMPLOYMENT_PER) as UNIT_UNEMPLOYMENT_PER,
MAX(w.UNIT_INJURY_PER) as UNIT_INJURY_PER,
MAX(w.UNIT_BIRTH_PER) as UNIT_BIRTH_PER,
MAX(w.PERSONAL_PENSION_PER) as PERSONAL_PENSION_PER,
MAX(w.PERSONAL_MEDICAL_PER) as PERSONAL_MEDICAL_PER,
MAX(w.PERSONAL_UNEMPLOYMENT_PER) as PERSONAL_UNEMPLOYMENT_PER
FROM (
(SELECT
CONCAT( a.EMP_IDCARD, '_', a.SOCIAL_PAY_MONTH, '_', a.SOCIAL_CREATE_MONTH, '_', a.SETTLE_DOMAIN_CODE ) AS keyGroup,
......@@ -1400,7 +1438,15 @@
a.UNIT_PROVIDENT_SET,
a.PROVIDENT_PERCENT,
a.PERSONAL_PROIDENT_SET,
a.UNIT_PROVIDENT_SUM
a.UNIT_PROVIDENT_SUM,
if(null = a.UNIT_PENSION_MONEY,'',round(SUM(a.UNIT_PENSION_MONEY)/MAX(a.UNIT_PENSION_SET),4)) as UNIT_PENSION_PER,
if(null = a.UNIT_MEDICAL_MONEY,'',round(SUM(a.UNIT_MEDICAL_MONEY)/MAX(a.UNIT_MEDICAL_SET),4)) as UNIT_MEDICAL_PER,
if(null = a.UNIT_UNEMPLOYMENT_MONEY,'',round(SUM(a.UNIT_UNEMPLOYMENT_MONEY)/MAX(a.UNIT_UNEMPLOYMENT_SET),4)) as UNIT_UNEMPLOYMENT_PER,
if(null = a.UNIT_INJURY_MONEY,'',round(SUM(a.UNIT_INJURY_MONEY)/MAX(a.UNIT_INJURY_SET),4)) as UNIT_INJURY_PER,
if(null = a.UNIT_BIRTH_MONEY,'',round(SUM(a.UNIT_BIRTH_MONEY)/MAX(a.UNIT_BIRTH_SET),4)) as UNIT_BIRTH_PER,
if(null = a.PERSONAL_PENSION_MONEY,'',round(SUM(a.PERSONAL_PENSION_MONEY)/MAX(a.UNIT_PENSION_SET),4)) as PERSONAL_PENSION_PER,
if(null = a.PERSONAL_MEDICAL_MONEY,'',round(SUM(a.PERSONAL_MEDICAL_MONEY)/MAX(a.UNIT_MEDICAL_SET),4)) as PERSONAL_MEDICAL_PER,
if(null = a.PERSONAL_UNEMPLOYMENT_MONEY,'',round(SUM(a.PERSONAL_UNEMPLOYMENT_MONEY)/MAX(a.UNIT_UNEMPLOYMENT_SET),4)) as PERSONAL_UNEMPLOYMENT_PER
FROM t_payment_info a
<where>
IFNULL(a.SOCIAL_ID,'1') != '1'
......@@ -1455,7 +1501,15 @@
a.UNIT_PROVIDENT_SET,
a.PROVIDENT_PERCENT,
a.PERSONAL_PROIDENT_SET,
SUM( a.UNIT_PROVIDENT_SUM ) AS UNIT_PROVIDENT_SUM
SUM( a.UNIT_PROVIDENT_SUM ) AS UNIT_PROVIDENT_SUM,
'' as UNIT_PENSION_PER,
'' as UNIT_MEDICAL_PER,
'' as UNIT_UNEMPLOYMENT_PER,
'' as UNIT_INJURY_PER,
'' as UNIT_BIRTH_PER,
'' as PERSONAL_PENSION_PER,
'' as PERSONAL_MEDICAL_PER,
'' as PERSONAL_UNEMPLOYMENT_PER
FROM t_payment_info a
<where>
IFNULL(a.FUND_ID,'1') != '1'
......@@ -1554,6 +1608,20 @@
c.PERSONAL_MEDICAL_MONEY,
c.PERSONAL_UNEMPLOYMENT_MONEY,
c.PERSONAL_BIGMAILMENT_MONEY,
c.PENSION_MONEY_SUM,
c.MEDICAL_MONEY_SUM,
c.UNEMPLOYMENT_MONEY_SUM,
c.INJURY_MONEY_SUM,
c.BIRTH_MONEY_SUM,
c.BIGMAILMENT_MONEY_SUM,
c.UNIT_PENSION_PER,
c.UNIT_MEDICAL_PER,
c.UNIT_UNEMPLOYMENT_PER,
c.UNIT_INJURY_PER,
c.UNIT_BIRTH_PER,
c.PERSONAL_PENSION_PER,
c.PERSONAL_MEDICAL_PER,
c.PERSONAL_UNEMPLOYMENT_PER,
c.PROVIDENT_NO AS PROVIDENT_NO,
c.PERSONAL_PROIDENT_SET,
c.UNIT_PROVIDENT_SET,
......@@ -1602,6 +1670,20 @@
w.PERSONAL_MEDICAL_MONEY,
w.PERSONAL_UNEMPLOYMENT_MONEY,
w.PERSONAL_BIGMAILMENT_MONEY,
w.PENSION_MONEY_SUM,
w.MEDICAL_MONEY_SUM,
w.UNEMPLOYMENT_MONEY_SUM,
w.INJURY_MONEY_SUM,
w.BIRTH_MONEY_SUM,
w.BIGMAILMENT_MONEY_SUM,
w.UNIT_PENSION_PER,
w.UNIT_MEDICAL_PER,
w.UNIT_UNEMPLOYMENT_PER,
w.UNIT_INJURY_PER,
w.UNIT_BIRTH_PER,
w.PERSONAL_PENSION_PER,
w.PERSONAL_MEDICAL_PER,
w.PERSONAL_UNEMPLOYMENT_PER,
MAX( w.PROVIDENT_NO ) AS PROVIDENT_NO,
MAX( w.PERSONAL_PROIDENT_SET ) AS PERSONAL_PROIDENT_SET,
SUM( w.UNIT_PROVIDENT_SET ) AS UNIT_PROVIDENT_SET,
......@@ -1650,6 +1732,20 @@
SUM( a.PERSONAL_MEDICAL_MONEY ) AS PERSONAL_MEDICAL_MONEY,
SUM( a.PERSONAL_UNEMPLOYMENT_MONEY ) AS PERSONAL_UNEMPLOYMENT_MONEY,
SUM( a.PERSONAL_BIGMAILMENT_MONEY ) AS PERSONAL_BIGMAILMENT_MONEY,
SUM( a.UNIT_PENSION_MONEY + a.PERSONAL_PENSION_MONEY) as PENSION_MONEY_SUM,
SUM( a.UNIT_MEDICAL_MONEY + a.PERSONAL_MEDICAL_MONEY) as MEDICAL_MONEY_SUM,
SUM( a.UNIT_UNEMPLOYMENT_MONEY + a.PERSONAL_UNEMPLOYMENT_MONEY) as UNEMPLOYMENT_MONEY_SUM,
SUM( a.UNIT_INJURY_MONEY) as INJURY_MONEY_SUM,
SUM( a.UNIT_BIRTH_MONEY) as BIRTH_MONEY_SUM,
SUM( a.UNIT_BIGMAILMENT_MONEY + a.PERSONAL_BIGMAILMENT_MONEY) as BIGMAILMENT_MONEY_SUM,
if(null = a.UNIT_PENSION_MONEY,'',round(SUM(a.UNIT_PENSION_MONEY)/MAX(a.UNIT_PENSION_SET),4)) as UNIT_PENSION_PER,
if(null = a.UNIT_MEDICAL_MONEY,'',round(SUM(a.UNIT_MEDICAL_MONEY)/MAX(a.UNIT_MEDICAL_SET),4)) as UNIT_MEDICAL_PER,
if(null = a.UNIT_UNEMPLOYMENT_MONEY,'',round(SUM(a.UNIT_UNEMPLOYMENT_MONEY)/MAX(a.UNIT_UNEMPLOYMENT_SET),4)) as UNIT_UNEMPLOYMENT_PER,
if(null = a.UNIT_INJURY_MONEY,'',round(SUM(a.UNIT_INJURY_MONEY)/MAX(a.UNIT_INJURY_SET),4)) as UNIT_INJURY_PER,
if(null = a.UNIT_BIRTH_MONEY,'',round(SUM(a.UNIT_BIRTH_MONEY)/MAX(a.UNIT_BIRTH_SET),4)) as UNIT_BIRTH_PER,
if(null = a.PERSONAL_PENSION_MONEY,'',round(SUM(a.PERSONAL_PENSION_MONEY)/MAX(a.UNIT_PENSION_SET),4)) as PERSONAL_PENSION_PER,
if(null = a.PERSONAL_MEDICAL_MONEY,'',round(SUM(a.PERSONAL_MEDICAL_MONEY)/MAX(a.UNIT_MEDICAL_SET),4)) as PERSONAL_MEDICAL_PER,
if(null = a.PERSONAL_UNEMPLOYMENT_MONEY,'',round(SUM(a.PERSONAL_UNEMPLOYMENT_MONEY)/MAX(a.UNIT_UNEMPLOYMENT_SET),4)) as PERSONAL_UNEMPLOYMENT_PER,
a.PROVIDENT_NO,
a.UNIT_PROVIDENT_SET,
a.PROVIDENT_PERCENT,
......@@ -1705,6 +1801,20 @@
a.PERSONAL_MEDICAL_MONEY,
a.PERSONAL_UNEMPLOYMENT_MONEY,
a.PERSONAL_BIGMAILMENT_MONEY,
'' as PENSION_MONEY_SUM,
'' as MEDICAL_MONEY_SUM,
'' as UNEMPLOYMENT_MONEY_SUM,
'' as INJURY_MONEY_SUM,
'' as BIRTH_MONEY_SUM,
'' as BIGMAILMENT_MONEY_SUM,
'' as UNIT_PENSION_PER,
'' as UNIT_MEDICAL_PER,
'' as UNIT_UNEMPLOYMENT_PER,
'' as UNIT_INJURY_PER,
'' as UNIT_BIRTH_PER,
'' as PERSONAL_PENSION_PER,
'' as PERSONAL_MEDICAL_PER,
'' as PERSONAL_UNEMPLOYMENT_PER,
a.PROVIDENT_NO,
a.UNIT_PROVIDENT_SET,
a.PROVIDENT_PERCENT,
......
......@@ -134,6 +134,8 @@
<result property="upperLimit" column="UPPER_LIMIT"/>
<result property="unitSocialSum" column="UNIT_SOCIAL_SUM"/>
<result property="personalSocialSum" column="PERSONAL_SOCIAL_SUM"/>
<result property="firstPayTime" column="FIRST_PAY_TIME"/>
</resultMap>
<sql id="Base_Column_List">
a.ID,
......@@ -236,7 +238,8 @@
a.UPDATE_TIME,
a.PAY_POLICY,
a.LOWER_LIMIT,
a.UPPER_LIMIT,a.UNIT_SOCIAL_SUM,a.PERSONAL_SOCIAL_SUM
a.UPPER_LIMIT,a.UNIT_SOCIAL_SUM,a.PERSONAL_SOCIAL_SUM,
a.FIRST_PAY_TIME
</sql>
<sql id="tSocialInfo_where">
<if test="tSocialInfo != null">
......
......@@ -415,6 +415,12 @@ public class UserController {
return userService.getById(userId);
}
@Inner
@PostMapping(value = {"/inner/getSimpleUserByLoginName"})
public SysUser getSimpleUserByLoginName(@RequestBody String loginName) {
return userService.getOne(Wrappers.<SysUser>query().lambda().eq(SysUser::getUsername,loginName).last(CommonConstants.LAST_ONE_SQL));
}
/**
* @param nickName 用户名称
* @return 上级部门用户列表
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment