Commit 98a949d3 authored by fangxinjiang's avatar fangxinjiang

Merge branch 'MVP1.7.3' into MVP-1.7.3-shuiyou

# Conflicts:
#	yifu-social/yifu-social-api/src/main/java/com/yifu/cloud/plus/v1/yifu/social/entity/TSocialDeadlineInfo.java
#	yifu-social/yifu-social-biz/src/main/resources/mapper/TSocialDeadlineInfoMapper.xml
parents 1102dd7b 7e631b2b
......@@ -59,11 +59,11 @@ public class TAttaInfo extends BaseEntity {
/**
* 关系类型(0客户附件1联系人附件2跟进记录附件3合同附件4合同归档附件5报价单6招投标7业务评估8二维码9身份证 10 户口本
* ;21(预入职申明签名);22(预入职确认签名);23(预入职pdf文件);0(最高教育经历);2(执业资格证书);24 身份证国徽
* 25 户口本本人页26学信27预入职其他附件
* 25 户口本本人页26学信27预入职其他附件28户配置
*/
@NotBlank(message = "关系类型不能为空")
@Length(max = 2, message = "关系类型不能超过2个字符")
@Schema(description = "关系类型(0客户附件1联系人附件2跟进记录附件3合同附件4合同归档附件5报价单6招投标7业务评估8二维码9身份证 10 户口本;21(预入职申明签名);22(预入职确认签名);23(预入职pdf文件);0(最高教育经历);2(执业资格证书);24 身份证国徽 25 户口本本人页26学信)")
@Schema(description = "关系类型(0客户附件1联系人附件2跟进记录附件3合同附件4合同归档附件5报价单6招投标7业务评估8二维码9身份证 10 户口本;21(预入职申明签名);22(预入职确认签名);23(预入职pdf文件);0(最高教育经历);2(执业资格证书);24 身份证国徽 25 户口本本人页26学信28户配置)")
private String relationType;
/**
* 实体id和关系类型共同确定附件所属(9、10、21、22、23、24、25存项目档案id,0、2、26存附属表id)
......
package com.yifu.cloud.plus.v1.yifu.archives.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.yifu.cloud.plus.v1.yifu.common.mybatis.base.BaseEntity;
......
......@@ -17,10 +17,12 @@
package com.yifu.cloud.plus.v1.yifu.archives.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.yifu.cloud.plus.v1.yifu.common.mybatis.base.BaseEntity;
import io.swagger.v3.oas.annotations.media.Schema;
import jdk.nashorn.internal.ir.annotations.Ignore;
import lombok.Data;
import lombok.EqualsAndHashCode;
......@@ -251,6 +253,7 @@ public class TCustomerInfo extends BaseEntity {
@Schema(description = "账户余额")
private BigDecimal balance;
@TableField(exist = false)
private List<String> customerIds;
}
package com.yifu.cloud.plus.v1.yifu.archives.vo;
import com.baomidou.mybatisplus.annotation.TableField;
import com.yifu.cloud.plus.v1.yifu.archives.entity.TCompleteMonitor;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
......@@ -42,4 +43,10 @@ public class TCompleteMonitorSearchVo extends TCompleteMonitor {
@Schema(description = "查询limit 数据条数")
private int limitEnd;
@Schema(description = "在项人数区间开始")
private Integer inusePersonNumStart;
@Schema(description = "在项人数区间结束")
private Integer inusePersonNumEnd;
}
......@@ -16,6 +16,7 @@
*/
package com.yifu.cloud.plus.v1.yifu.archives.vo;
import com.baomidou.mybatisplus.annotation.TableField;
import com.yifu.cloud.plus.v1.yifu.archives.entity.TRiskMonitor;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
......@@ -49,4 +50,12 @@ public class TRiskMonitorSearchVo extends TRiskMonitor {
@Schema(description = "查询limit 数据条数")
private int limitEnd;
@Schema(description = "在项人数区间开始")
@TableField(exist = false)
private Integer projectNumStart;
@Schema(description = "在项人数区间结束")
@TableField(exist = false)
private Integer projectNumEnd;
}
......@@ -57,15 +57,15 @@ public class TCompleteMonitorController {
/**
* 简单分页查询
* @param page 分页对象
* @param tCompleteMonitor 档案完整度监控
* @param searchVo 档案完整度监控
* @return
*/
@Operation(description = "简单分页查询")
@GetMapping("/page")
public R<IPage<TCompleteMonitor>> getTCompleteMonitorPage(Page<TCompleteMonitor> page, TCompleteMonitor tCompleteMonitor) {
public R<IPage<TCompleteMonitor>> getTCompleteMonitorPage(Page<TCompleteMonitor> page, TCompleteMonitorSearchVo searchVo) {
YifuUser user = SecurityUtils.getUser();
menuUtil.setAuthSql(user, tCompleteMonitor);
return new R<>(tCompleteMonitorService.getTCompleteMonitorPage(page,tCompleteMonitor));
menuUtil.setAuthSql(user, searchVo);
return new R<>(tCompleteMonitorService.getTCompleteMonitorPage(page,searchVo));
}
/**
......
......@@ -40,7 +40,7 @@ public interface TCompleteMonitorMapper extends BaseMapper<TCompleteMonitor> {
* @param tCompleteMonitor 档案完整度监控
* @return
*/
IPage<TCompleteMonitor> getTCompleteMonitorPage(Page<TCompleteMonitor> page, @Param("tCompleteMonitor") TCompleteMonitor tCompleteMonitor);
IPage<TCompleteMonitor> getTCompleteMonitorPage(Page<TCompleteMonitor> page, @Param("tCompleteMonitor") TCompleteMonitorSearchVo tCompleteMonitor);
/**
......
......@@ -24,7 +24,7 @@ public interface TCompleteMonitorService extends IService<TCompleteMonitor> {
* @param tCompleteMonitor 档案完整度监控
* @return
*/
IPage<TCompleteMonitor> getTCompleteMonitorPage(Page<TCompleteMonitor> page, TCompleteMonitor tCompleteMonitor);
IPage<TCompleteMonitor> getTCompleteMonitorPage(Page<TCompleteMonitor> page, TCompleteMonitorSearchVo tCompleteMonitor);
/**
* @Description: 详情
......
......@@ -88,7 +88,7 @@ public class TCompleteMonitorServiceImpl extends ServiceImpl<TCompleteMonitorMap
* @return
*/
@Override
public IPage<TCompleteMonitor> getTCompleteMonitorPage(Page<TCompleteMonitor> page, TCompleteMonitor tCompleteMonitor){
public IPage<TCompleteMonitor> getTCompleteMonitorPage(Page<TCompleteMonitor> page, TCompleteMonitorSearchVo tCompleteMonitor){
return baseMapper.getTCompleteMonitorPage(page,tCompleteMonitor);
}
......@@ -465,8 +465,8 @@ public class TCompleteMonitorServiceImpl extends ServiceImpl<TCompleteMonitorMap
ExcelWriterSheetBuilder writeSheet;
List<TMainExportAllVO> listWork;
Map<String, TMainExportAllVO> mapWork;
List<TMainExportAllVO> listContract;
Map<String, TMainExportAllVO> mapContract;
// List<TMainExportAllVO> listContract;
// Map<String, TMainExportAllVO> mapContract;
List<TMainExportAllVO> listEducation;
Map<String, TMainExportAllVO> mapEducation;
List<TMainExportAllVO> listBad;
......@@ -492,25 +492,25 @@ public class TCompleteMonitorServiceImpl extends ServiceImpl<TCompleteMonitorMap
for (TMainExportAllVO vo : list) {
empIdList.add(vo.getMainId());
}
listContract = baseMapper.getTEmpMainAllListByContract(empIdList);
// listContract = baseMapper.getTEmpMainAllListByContract(empIdList);
listEducation = baseMapper.getTEmpMainAllListByEducation(empIdList);
listBad = baseMapper.getTEmpMainAllListByBad(empIdList);
listDisability = baseMapper.getTEmpMainAllListByDisability(empIdList);
listWork = baseMapper.getTEmpMainAllListByWork(empIdList);
listFamily = baseMapper.getTEmpMainAllListByFamily(empIdList);
listProfessional = baseMapper.getTEmpMainAllListByProfessional(empIdList);
mapContract = new HashMap<>();
// mapContract = new HashMap<>();
mapEducation = new HashMap<>();
mapBad = new HashMap<>();
mapDisability = new HashMap<>();
mapWork = new HashMap<>();
mapFamily = new HashMap<>();
mapProfessional = new HashMap<>();
if (listContract != null && !listContract.isEmpty()) {
for (TMainExportAllVO vo : listContract) {
mapContract.putIfAbsent(vo.getMainId(), vo);
}
}
// if (listContract != null && !listContract.isEmpty()) {
// for (TMainExportAllVO vo : listContract) {
// mapContract.putIfAbsent(vo.getMainId(), vo);
// }
// }
if (listEducation != null && !listEducation.isEmpty()) {
for (TMainExportAllVO vo : listEducation) {
mapEducation.putIfAbsent(vo.getMainId(), vo);
......@@ -518,7 +518,7 @@ public class TCompleteMonitorServiceImpl extends ServiceImpl<TCompleteMonitorMap
}
if (listBad != null && !listBad.isEmpty()) {
for (TMainExportAllVO vo : listBad) {
mapEducation.putIfAbsent(vo.getMainId(), vo);
mapBad.putIfAbsent(vo.getMainId(), vo);
}
}
if (listDisability != null && !listDisability.isEmpty()) {
......@@ -542,14 +542,14 @@ public class TCompleteMonitorServiceImpl extends ServiceImpl<TCompleteMonitorMap
}
}
for (TMainExportAllVO vo : list) {
temp = mapContract.get(vo.getMainId());
if (temp != null) {
vo.setField26(temp.getField26());
vo.setField27(temp.getField27());
vo.setField28(temp.getField28());
vo.setField29(temp.getField29());
vo.setField30(temp.getField30());
}
// temp = mapContract.get(vo.getMainId());
// if (temp != null) {
// vo.setField26(temp.getField26());
// vo.setField27(temp.getField27());
// vo.setField28(temp.getField28());
// vo.setField29(temp.getField29());
// vo.setField30(temp.getField30());
// }
temp = mapEducation.get(vo.getMainId());
if (temp != null) {
vo.setField36(temp.getField36());
......
......@@ -91,7 +91,6 @@ public class TEmployeeContractInfoServiceImpl extends ServiceImpl<TEmployeeContr
private final TEmployeeInfoMapper tEmployeeInfoMapper;
private final TEmployeeProjectService tEmployeeProjectService;
private final TSettleDomainService tSettleDomainService;
private final TCustomerInfoService tCustomerInfoService;
private final TAttaInfoService tAttaInfoService;
private final TEmployeeContractAuditService tEmployeeContractAuditService;
private final TEmployeeLogService tEmployeeLogService;
......@@ -467,13 +466,8 @@ public class TEmployeeContractInfoServiceImpl extends ServiceImpl<TEmployeeContr
if (Common.isEmpty(tEmployeeContractInfo.getSubjectDepart())) {
tEmployeeContractInfo.setSubjectDepart(settleDomain.getDepartName());
tEmployeeContractInfo.setDeptNo(settleDomain.getDepartNo());
}
if (null != settleDomain.getCustomerId() && Common.isEmpty(tEmployeeContractInfo.getSubjectUnit())) {
TCustomerInfo customerInfo = tCustomerInfoService.getById(settleDomain.getCustomerId());
if (null != customerInfo) {
tEmployeeContractInfo.setSubjectUnit(customerInfo.getCustomerName());
tEmployeeContractInfo.setUnitNo(customerInfo.getCustomerCode());
}
tEmployeeContractInfo.setSubjectUnit(settleDomain.getCustomerName());
tEmployeeContractInfo.setUnitNo(settleDomain.getCustomerNo());
}
}
}
......
......@@ -84,6 +84,12 @@
</if>
<if test="tCompleteMonitor.afterIsComplete != null and tCompleteMonitor.afterIsComplete.trim() != ''">
AND a.AFTER_IS_COMPLETE = #{tCompleteMonitor.afterIsComplete}
</if>
<if test="tCompleteMonitor.inusePersonNumStart != null">
AND a.INUSE_PERSON_NUM <![CDATA[ >= ]]> #{tCompleteMonitor.inusePersonNumStart}
</if>
<if test="tCompleteMonitor.inusePersonNumEnd != null">
AND a.INUSE_PERSON_NUM <![CDATA[ <= ]]> #{tCompleteMonitor.inusePersonNumEnd}
</if>
<if test="tCompleteMonitor.authSql != null and tCompleteMonitor.authSql.trim() != ''">
${tCompleteMonitor.authSql}
......@@ -348,6 +354,7 @@
,e.FILE_PROVINCE field20,e.FILE_CITY field71,e.FILE_TOWN field72,if(e.status=0,'草稿','已审核') field21
,e.CONTACT_ADDRESS field22,p.UNIT_NAME field23,p.DEPT_NAME field24,p.DEPT_NO field64
,concat(p.BUSINESS_PRIMARY_TYPE,'-',ifnull(p.BUSINESS_SECOND_TYPE,''),'-',ifnull(p.BUSINESS_THIRD_TYPE,'')) field25
,p.CONTRACT_TYPE field26,p.WORKING_HOURS field27,p.POST field28,p.ENJOIN_DATE field29,p.TRY_PERIOD field30
,p.EMP_LABEL field31
,ec.EMP_NAME field32,ec.RELATION_TYPE field33,ec.ADDRESS field34,ec.TEL field35
,if(e.IS_COLLEGE=0,'否','是') field39
......
......@@ -157,6 +157,12 @@
<if test="tRiskMonitor.riskType != null and tRiskMonitor.riskType.trim() != ''">
AND a.RISK_TYPE regexp #{tRiskMonitor.riskType}
</if>
<if test="tRiskMonitor.projectNumStart != null">
AND a.PROJECT_NUM <![CDATA[ >= ]]> #{tRiskMonitor.projectNumStart}
</if>
<if test="tRiskMonitor.projectNumEnd != null">
AND a.PROJECT_NUM <![CDATA[ <= ]]> #{tRiskMonitor.projectNumEnd}
</if>
<if test="tRiskMonitor.authSql != null and tRiskMonitor.authSql.trim() != ''">
${tRiskMonitor.authSql}
</if>
......
......@@ -68,6 +68,21 @@ public class UpmsDaprUtils {
return allUserVoR;
}
/**
* @Author fxj
* @Description 获取所有用户数据
* @Date 17:57 2022/8/16
* @Param
* @return
**/
public R<AllUserNaVo> getAllUserIds() {
R<AllUserNaVo> allUserVoR = HttpDaprUtil.invokeMethodPost(daprUpmsProperties.getAppUrl(),daprUpmsProperties.getAppId(),"/user/inner/getAllUserIdDTO","", AllUserNaVo.class, SecurityConstants.FROM_IN);
if (Common.isEmpty(allUserVoR)){
return R.failed("获取所有用户数据失败!");
}
return allUserVoR;
}
/**
* @Author fxj
* @Description 获取指定用户名对应用户IDs
......
dapr.upms.appUrl=http://yifu-upms.qas-mvp.svc.cluster.local:3500/v1.0/invoke/
#\u6D4B\u8BD5\u73AF\u5883
#\u67E5\u8BE2\u5730\u5740\u6559\u7A0B\uFF1A cd home/data/nginx-mvp-image/mvp/
# vim Default.conf
# \u627E\u5230\u5BF9\u5E94\u7684\u670D\u52A1\u5730\u5740
#dapr.upms.appUrl=http://yifu-auth.qas-mvp.svc.cluster.local:3500/v1.0/invoke/
#\u672C\u5730
dapr.upms.appUrl=http://localhost:4500/v1.0/invoke/
dapr.upms.appId=yifu-upms
dapr.upms.appPort=4000
dapr.upms.httpPort=4500
dapr.upms.grpcPort=54000
dapr.upms.metricsPort=9490
#\u6D4B\u8BD5\u73AF\u5883
#dapr.check.appUrl=http://yifu-check.qas-mvp.svc.cluster.local:3500/v1.0/invoke/
#\u6D4B\u8BD5\u73AF\u5883
dapr.check.appUrl=http://yifu-check.qas-mvp.svc.cluster.local:3500/v1.0/invoke/
#\u672C\u5730
dapr.check.appUrl=http://localhost:3522/v1.0/invoke/
dapr.check.appId=yifu-check
dapr.check.appPort=5022
dapr.check.httpPort=3522
dapr.check.grpcPort=52022
dapr.check.metricsPort=9292
#\u6D4B\u8BD5\u73AF\u5883
dapr.archives.appUrl=http://yifu-archives.qas-mvp.svc.cluster.local:3500/v1.0/invoke/
dapr.archives.appUrl=http://localhost:3501/v1.0/invoke/
dapr.archives.appId=yifu-archives
dapr.archives.appPort=5001
dapr.archives.httpPort=3501
dapr.archives.grpcPort=52001
dapr.archives.metricsPort=9091
#\u6D4B\u8BD5\u73AF\u5883
dapr.salary.appUrl=http://yifu-salary.qas-mvp.svc.cluster.local:3500/v1.0/invoke/
dapr.salary.appId=yifu-salary
#\u6D4B\u8BD5\u73AF\u5883
dapr.social.appUrl=http://yifu-social.qas-mvp.svc.cluster.local:3500/v1.0/invoke/
dapr.social.appUrl=http://localhost:3502/v1.0/invoke/
dapr.social.appId=yifu-social
#\u6D4B\u8BD5\u73AF\u5883-\u5546\u9669\u670D\u52A1
dapr.insurances.appUrl=http://yifu-insurances.qas-mvp.svc.cluster.local:3500/v1.0/invoke/
dapr.social.appPort=5002
dapr.social.httpPort=3502
dapr.social.grpcPort=52002
dapr.social.metricsPort=9092
dapr.salary.appUrl=http://localhost:3503/v1.0/invoke/
dapr.salary.appId=yifu-salary
dapr.salary.appPort=5003
dapr.salary.httpPort=3503
dapr.salary.grpcPort=52003
dapr.salary.metricsPort=9093
dapr.job.appUrl=http://localhost:3504/v1.0/invoke/
dapr.job.appId=yifu-job
dapr.job.appPort=5004
dapr.job.httpPort=3504
dapr.job.grpcPort=52004
dapr.job.metricsPort=9094
dapr.insurances.appUrl=http://localhost:3505/v1.0/invoke/
dapr.insurances.appId=yifu-insurances
#\u6D4B\u8BD5\u73AF\u5883-B\u7AEF\u670D\u52A1
dapr.business.appUrl=http://yifu-business.qas-mvp.svc.cluster.local:3500/v1.0/invoke/
dapr.business.appId=yifu-business
dapr.insurances.appPort=5005
dapr.insurances.httpPort=3505
dapr.insurances.grpcPort=52005
dapr.insurances.metricsPort=9095
#\u6D4B\u8BD5\u73AF\u5883-\u6D88\u606F\u63D0\u9192\u670D\u52A1
dapr.msg.appUrl=http://yifu-msg.qas-mvp.svc.cluster.local:3500/v1.0/invoke/
dapr.msg.appId=yifu-msg
dapr.codegen.appUrl=http://localhost:5006/v1.0/invoke/
dapr.codegen.appId=yifu-codegen
dapr.codegen.appPort=8000
dapr.codegen.httpPort=5006
dapr.codegen.grpcPort=58000
dapr.codegen.metricsPort=9890
#\u6D4B\u8BD5\u73AF\u5883-EKP\u6743\u9650
dapr.permission.appUrl=http://yifu-permission.qas-mvp.svc.cluster.local:3500/v1.0/invoke/
dapr.permission.appUrl=http://localhost:3507/v1.0/invoke/
dapr.permission.appId=yifu-permission
dapr.permission.appPort=5027
dapr.permission.httpPort=3507
dapr.permission.grpcPort=52007
dapr.permission.metricsPort=9097
#\u6D4B\u8BD5\u73AF\u5883-EKP
dapr.ekp.appUrl=http://yifu-ekp.qas-mvp.svc.cluster.local:3500/v1.0/invoke/
dapr.ekp.appUrl=http://localhost:3508/v1.0/invoke/
dapr.ekp.appId=yifu-ekp
dapr.ekp.appPort=5077
dapr.ekp.httpPort=3508
dapr.ekp.grpcPort=52008
dapr.ekp.metricsPort=9098
#\u6D4B\u8BD5\u73AF\u5883-\u85AA\u8D44\u670D\u52A1
#dapr.salary.appUrl=http://yifu-salary.qas-mvp.svc.cluster.local:3500/v1.0/invoke/
#dapr.salary.appId=yifu-salary
......
......@@ -73,8 +73,8 @@ spring:
activate:
on-profile: test
redis:
host: 192.168.1.65
port: 22379
host: 127.0.0.1
port: 6379
password: '@yf_2017'
datasource:
type: com.zaxxer.hikari.HikariDataSource
......
......@@ -554,9 +554,7 @@
</if>
<where>
a.DELETE_FLAG = 0
/*and not EXISTS (
select 1 from t_dept_see d where a.DEPT_NO = d.DEPT_NO and d.CAN_SEE = 1
)*/
<include refid="tSalaryAccount_where"/>
<if test="deptNos != null and deptNos.size>0">
AND a.DEPT_NO not in
......@@ -877,9 +875,7 @@
left join sys_area ap on ap.id=a.BANK_PROVINCE
left join sys_area ac on ac.id=a.BANK_CITY
<where>
a.DELETE_FLAG = 0 and not EXISTS (
select 1 from t_dept_see d where a.DEPT_NO = d.DEPT_NO and d.CAN_SEE = 1
)
a.DELETE_FLAG = 0
<include refid="where_export"/>
<if test="searchVo.authSql != null and searchVo.authSql.trim() != ''">
${searchVo.authSql}
......@@ -1067,9 +1063,7 @@
t_salary_account_hro_2021 a
</if>
<where>
a.DELETE_FLAG = 0 and not EXISTS (
select 1 from t_dept_see d where a.DEPT_NO = d.DEPT_NO and d.CAN_SEE = 1
)
a.DELETE_FLAG = 0
<include refid="where_export"/>
<if test="searchVo.authSql != null and searchVo.authSql.trim() != ''">
${searchVo.authSql}
......@@ -1529,9 +1523,7 @@
left join sys_area ac on ac.id=a.BANK_CITY
<where>
a.DELETE_FLAG = 0
/*and not EXISTS (
select 1 from t_dept_see d where a.DEPT_NO = d.DEPT_NO and d.CAN_SEE = 1
)*/
<include refid="where_export"/>
<if test="deptNos != null and deptNos.size>0">
AND a.DEPT_NO not in
......@@ -1564,9 +1556,7 @@
</if>
<where>
a.DELETE_FLAG = 0
/*and not EXISTS (
select 1 from t_dept_see d where a.DEPT_NO = d.DEPT_NO and d.CAN_SEE = 1
)*/
<include refid="where_export"/>
<if test="deptNos != null and deptNos.size>0">
AND a.DEPT_NO not in
......
/*
* 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.social.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 io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import org.hibernate.validator.constraints.Length;
import javax.validation.constraints.NotBlank;
/**
* 系统限制配置表
*
* @author hgw
* @date 2024-09-24 17:39:57
*/
@Data
@TableName("sys_config_limit")
@Schema(description = "系统限制配置表")
public class SysConfigLimit {
/**
* id
*/
@TableId(type = IdType.ASSIGN_ID)
@ExcelProperty("id")
@Schema(description = "id")
private String id;
/**
* 限制键
*/
@ExcelAttribute(name = "限制键", isNotEmpty = true, errorInfo = "限制键不能为空", maxLength = 32)
@NotBlank(message = "限制键不能为空")
@Length(max = 32, message = "限制键不能超过32个字符")
@ExcelProperty("限制键")
@Schema(description = "限制键")
private String configKey;
/**
* 限制值
*/
@ExcelAttribute(name = "限制值", isNotEmpty = true, errorInfo = "限制值不能为空")
@NotBlank(message = "限制值不能为空")
@ExcelProperty("限制值")
@Schema(description = "限制值")
private Integer configValue;
/**
* 备注
*/
@ExcelAttribute(name = "备注", maxLength = 255)
@Length(max = 255, message = "备注不能超过255个字符")
@ExcelProperty("备注")
@Schema(description = "备注")
private String remark;
}
......@@ -203,6 +203,60 @@ public class SysHouseHoldInfo extends BaseEntity {
@ExcelProperty("公积金承办银行")
private String fundBank;
/**
* 手机号
*/
@ExcelAttribute(name = "手机号", maxLength = 50)
@Schema(description ="手机号")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("手机号")
private String phone;
/**
* 社保-登录账户
*/
@ExcelAttribute(name = "社保-登录账户" )
@Schema(description ="社保-登录账户")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("社保-登录账户")
private String socialAccount;
/**
* 社保-登录密码
*/
@ExcelAttribute(name = "社保-登录密码" )
@Schema(description ="社保-登录密码")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("社保-登录密码")
private String socialPassword;
/**
* 医保-登录账户
*/
@ExcelAttribute(name = "医保-登录账户" )
@Schema(description ="医保-登录账户")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("医保-登录账户")
private String mediclAccount;
/**
* 医保-登录密码
*/
@ExcelAttribute(name = "医保-登录密码" )
@Schema(description ="医保-登录密码")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("医保-登录密码")
private String mediclPassword;
/**
* 是否配置公章
*/
@ExcelAttribute(name = "是否配置公章" )
@Schema(description ="是否配置公章")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("是否配置公章")
private String isSign;
/**
* 自动化配置状态 0 启用 1 禁用
*/
......@@ -221,4 +275,16 @@ public class SysHouseHoldInfo extends BaseEntity {
@TableField(exist = false)
private String handleUserDeptName;
/**
* 附件Id
*/
@TableField(exist = false)
private String attaId;
/**
* 印章附件
*/
@TableField(exist = false)
private TAttaInfo atta;
}
package com.yifu.cloud.plus.v1.yifu.social.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.yifu.cloud.plus.v1.yifu.common.mybatis.base.BaseEntity;
import io.swagger.v3.oas.annotations.media.Schema;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.hibernate.validator.constraints.Length;
import javax.validation.constraints.NotBlank;
/**
* @Author fxj
* @Description 附件信息表
* @Date 11:07 2022/6/22
**/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("t_atta_info")
@Tag(name = "附件信息表")
public class TAttaInfo extends BaseEntity {
private static final long serialVersionUID = 1L;
/**
* 主键
*/
@TableId(type = IdType.ASSIGN_ID)
@Schema(description = "主键")
private String id;
/**
* 资源名称
*/
@NotBlank(message = "资源名称不能为空")
@Length(max = 50, message = "资源名称不能超过50个字符")
@Schema(description = "资源名称")
private String attaName;
/**
* 资源地址
*/
@NotBlank(message = "资源地址不能为空")
@Length(max = 100, message = "资源地址不能超过100个字符")
@Schema(description = "资源地址")
private String attaSrc;
/**
* 资源大小
*/
@Schema(description = "资源大小")
private Long attaSize;
/**
* 资源类型
*/
@Length(max = 10, message = "资源类型不能超过10个字符")
@Schema(description = "资源类型")
private String attaType;
/**
* 关系类型(0客户附件1联系人附件2跟进记录附件3合同附件4合同归档附件5报价单6招投标7业务评估8二维码9身份证 10 户口本
* ;21(预入职申明签名);22(预入职确认签名);23(预入职pdf文件);0(最高教育经历);2(执业资格证书);24 身份证国徽
* 25 户口本本人页26学信27预入职其他附件28户配置
*/
@NotBlank(message = "关系类型不能为空")
@Length(max = 2, message = "关系类型不能超过2个字符")
@Schema(description = "关系类型(0客户附件1联系人附件2跟进记录附件3合同附件4合同归档附件5报价单6招投标7业务评估8二维码9身份证 10 户口本;21(预入职申明签名);22(预入职确认签名);23(预入职pdf文件);0(最高教育经历);2(执业资格证书);24 身份证国徽 25 户口本本人页26学信28户配置)")
private String relationType;
/**
* 实体id和关系类型共同确定附件所属(9、10、21、22、23、24、25存项目档案id,0、2、26存附属表id)
*/
@NotBlank(message = "实体id和关系类型共同确定附件所属不能为空")
@Length(max = 32, message = "实体id和关系类型共同确定附件所属不能超过32个字符")
@Schema(description = "实体id和关系类型共同确定附件所属")
private String domainId;
/**
* 地址URL
*/
@Length(max = 100, message = "地址URL不能超过100个字符")
@Schema(description = "地址URL")
@TableField(exist = false)
private String attaUrl;
/**
* 附件变更类型:0 新增 1 更新 2 删除 3 不变 档案编辑附件时需要告知后端是增加还是减少
*/
@TableField(exist = false)
private String handleType;
/**
* 其他分租名称
*/
@TableField(exist = false)
private String groupName;
}
......@@ -597,6 +597,13 @@ public class TPaymentInfo extends BaseEntity {
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("个人公积金基数")
private BigDecimal personalProidentSet;
/**
* 个人公积金比例
*/
@ExcelAttribute(name = "个人公积金比例")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("个人公积金比例")
private BigDecimal personalProvidentPercent;
/**
* 个人公积金费用
*/
......
......@@ -134,7 +134,7 @@ public class FundHandleExportVo implements Serializable {
@ExcelAttribute(name = "公积金起缴日期", errorInfo = "公积金起缴日期不能为空",needExport = true)
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("公积金起缴日期" )
private LocalDateTime providentStart;
private String providentStart;
/**
......
......@@ -145,4 +145,12 @@ public class SocialHandleSearchVo extends TDispatchInfo {
@ExcelProperty("医生大反馈" )
@ExcelIgnore
private String ysdRemark;
/**
* 社保ID
*/
@TableField(exist = false)
@Schema(description ="社保ID")
@ExcelIgnore
private String socialId;
}
......@@ -475,15 +475,34 @@ public class TDispatchImportVo extends RowIndex implements Serializable {
private BigDecimal providentCardinal;
/**
* 公积金比例
* 单位公积金比例(原‘公积金比例’)
*/
@ExcelAttribute(name = "公积金比例" )
@Schema(description = "公积金比例" )
@ExcelAttribute(name = "单位公积金缴纳比例" )
@Schema(description = "单位公积金缴纳比例" )
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("公积金比例" )
@ExcelProperty("单位公积金缴纳比例" )
private BigDecimal providentPer;
/**
* 个人公积金缴纳比例
*/
@ExcelAttribute(name = "个人公积金缴纳比例" )
@Schema(description = "个人公积金缴纳比例" )
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("个人公积金缴纳比例" )
private BigDecimal personalProvidentPer;
/**
* 公积金单位个人比例是否一致 0 是 1 否
*/
@ExcelAttribute(name = "公积金单位个人比例是否一致" ,isDataId = true,readConverterExp = "0=是,1=否")
@Schema(description = "公积金单位个人比例是否一致" )
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("公积金单位个人比例是否一致" )
private String perFlag ;
/**
* 委托备注
*/
......
......@@ -295,14 +295,23 @@ public class TDispatchInfoExportVo {
private BigDecimal unitProvidengCardinal;
/**
* 公积金缴纳比例
* 单位公积金缴纳比例(原:公积金缴纳比例)
*/
@ExcelAttribute(name = "公积金缴纳比例" )
@Schema(description = "公积金缴纳比例" )
@ExcelAttribute(name = "单位公积金缴纳比例" )
@Schema(description = "单位公积金缴纳比例" )
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("公积金缴纳比例" )
@ExcelProperty("单位公积金缴纳比例" )
private BigDecimal unitProvidentPer;
/**
* 个人公积金缴纳比例
*/
@ExcelAttribute(name = "个人公积金缴纳比例" )
@Schema(description = "个人公积金缴纳比例" )
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("个人公积金缴纳比例" )
private BigDecimal personalProvidentPer;
/**
* 养老基数
*/
......
......@@ -432,6 +432,14 @@ public class TPaymentInfoBatchVo {
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("个人公积金基数")
private BigDecimal personalProidentSet;
/**
* 个人公积金比例
*/
@ExcelAttribute(name = "个人公积金比例")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("个人公积金比例")
private BigDecimal personalProvidentPercent;
/**
* 个人公积金缴费
*/
......
......@@ -377,6 +377,13 @@ public class TPaymentInfoExportVo extends RowIndex implements Serializable {
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("个人公积金基数")
private BigDecimal personalProidentSet;
/**
* 个人公积金比例
*/
@ExcelAttribute(name = "个人公积金比例")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("个人公积金比例")
private BigDecimal personalProvidentPercent;
/**
* 个人公积金费用
*/
......
......@@ -468,6 +468,13 @@ public class TPaymentInfoNewExportVo extends RowIndex implements Serializable {
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("个人公积金基数")
private BigDecimal personalProidentSet;
/**
* 个人公积金比例
*/
@ExcelAttribute(name = "个人公积金比例")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("个人公积金比例")
private BigDecimal personalProvidentPercent;
/**
* 个人公积金费用
*/
......
......@@ -578,6 +578,15 @@ public class TPaymentInfoVo extends RowIndex implements Serializable {
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty(value = "公积金单边比例", converter = BigDecimalConverter.class)
private BigDecimal providentPercent;
/**
* 单位公积金比例-- 兼用多比例 实际使用值 providentPercent
*/
@ExcelAttribute(name = "单位公积金比例", isFloat = true,max = "100.00")
@Schema(description ="单位公积金比例")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty(value = "单位公积金比例", converter = BigDecimalConverter.class)
private BigDecimal unitProvidentPercent;
/**
* 公积金单边金额
*/
......@@ -586,6 +595,15 @@ public class TPaymentInfoVo extends RowIndex implements Serializable {
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty(value = "公积金单边金额", converter = BigDecimalConverter.class)
private BigDecimal unitProvidentSum;
/**
* 单位公积金金额--兼容多比例 实际使用值 unitProvidentSum
*/
@ExcelAttribute(name = "单位公积金金额", isFloat = true,max = "999999999.99", min= -999999999)
@Schema(description ="单位公积金金额")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty(value = "单位公积金金额", converter = BigDecimalConverter.class)
private BigDecimal unitProvidentFee;
/**
* 个人公积金基数
*/
......@@ -594,13 +612,23 @@ public class TPaymentInfoVo extends RowIndex implements Serializable {
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty(value = "个人公积金基数", converter = BigDecimalConverter.class)
private BigDecimal personalProidentSet;
/**
* 个人公积金比例
*/
@ExcelAttribute(name = "个人公积金比例", isFloat = true,max = "100.00")
@Schema(description ="个人公积金比例")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty(value = "个人公积金比例", converter = BigDecimalConverter.class)
private BigDecimal personalProvidentPercent;
/**
* 个人公积金费用
*/
@ExcelAttribute(name = "个人公积金费用")
@Schema(description ="个人公积金费用")
@ExcelAttribute(name = "个人公积金金额")
@Schema(description ="个人公积金金额")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty(value = "个人公积金费用", converter = BigDecimalConverter.class)
@ExcelProperty(value = "个人公积金金额", converter = BigDecimalConverter.class)
private BigDecimal personalProvidentSum;
/**
* 创建者
......
/*
* 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.social.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;
/**
* 社保户批量导出
*
* @author huych
* @date 2024-12-5 11:38:05
*/
@Data
public class TSocialHouseholdExportVo implements Serializable {
@ExcelAttribute(name = "账户性质" )
@Schema(description = "账户性质")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("账户性质")
private String type;
/**
* 员工姓名
*/
@Length(max = 50, message = "户名不能超过50个字符")
@ExcelAttribute(name = "户名", maxLength = 50,isNotEmpty = true)
@Schema(description = "户名")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty(value = "户名")
private String name;
/**
* 缴纳地所在省
*/
@Length(max = 50, message = "缴纳地所在省不能超过32个字符")
@ExcelAttribute(name = "缴纳地所在省", maxLength = 50,isNotEmpty = true, isArea = true, parentField = "")
@Schema(description = "缴纳地所在省")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty(value = "缴纳地所在省")
private String province;
/**
* 缴纳地所在市
*/
@Length(max = 50, message = "缴纳地所在市不能超过50个字符")
@ExcelAttribute(name = "缴纳地所在市", maxLength = 50,isNotEmpty = true, isArea = true, parentField = "province")
@Schema(description = "缴纳地所在市")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty(value = "缴纳地所在市")
private String city;
/**
* 缴纳地所在县
*/
@Length(max = 50, message = "缴纳地所在县不能超过50个字符")
@ExcelAttribute(name = "缴纳地所在县", maxLength = 50, isArea = true, parentField = "city")
@Schema(description = "缴纳地所在县")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty(value = "缴纳地所在县")
private String town;
/**
* 所属机构
*/
@ExcelAttribute(name = "所属机构", maxLength = 50,isNotEmpty = true)
@Schema(description ="所属机构")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("所属机构")
private String organName;
/**
* 审核人
*/
@ExcelAttribute(name = "审核人", maxLength = 50,isNotEmpty = true )
@Schema(description ="审核人")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("审核人")
private String auditUserName;
/**
* 办理人
*/
@ExcelAttribute(name = "办理人", maxLength = 50,isNotEmpty = true )
@Schema(description ="办理人")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("办理人")
private String handleUserName;
/**
* 手机号
*/
@ExcelAttribute(name = "手机号", maxLength = 50,isNotEmpty = true )
@Schema(description ="手机号")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("手机号")
private String phone;
/**
* 类型 0 独立户 1 自由户
*/
@ExcelAttribute(name = "户类型", maxLength = 3,isNotEmpty = true)
@Schema(description ="户类型")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("户类型")
private String houseType;
/**
* 单位编号
*/
@ExcelAttribute(name = "单位编号" )
@Schema(description ="单位编号")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("单位编号")
private String customerNo;
/**
* 单位统一信用代码
*/
@ExcelAttribute(name = "单位统一信用代码" )
@Schema(description ="单位统一信用代码")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("单位统一信用代码")
private String unitCreditCode;
/**
* 社保-登录账户
*/
@ExcelAttribute(name = "社保-登录账户" )
@Schema(description ="社保-登录账户")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("社保-登录账户")
private String socialAccount;
/**
* 社保-登录密码
*/
@ExcelAttribute(name = "社保-登录密码" )
@Schema(description ="社保-登录密码")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("社保-登录密码")
private String socialPassword;
/**
* 医保-登录账户
*/
@ExcelAttribute(name = "医保-登录账户" )
@Schema(description ="医保-登录账户")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("医保-登录账户")
private String mediclAccount;
/**
* 医保-登录密码
*/
@ExcelAttribute(name = "医保-登录密码" )
@Schema(description ="医保-登录密码")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("医保-登录密码")
private String mediclPassword;
@ExcelAttribute(name = "是否配置公章" )
@Schema(description ="是否配置公章")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("是否配置公章")
private String isSign;
/**
* 自动化配置状态 0 是 1 否
*/
@ExcelAttribute(name = "是否自动办理" )
@Schema(description ="是否自动办理")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("是否自动办理")
private String autoStatus;
}
/*
* 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.social.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 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 huych
* @date 2024-12-5 11:38:05
*/
@Data
public class TSocialHouseholdInsertVo extends RowIndex implements Serializable {
@Schema(description = "账户性质")
@ExcelAttribute(name = "账户性质", isExport = false)
private String type;
/**
* 员工姓名
*/
@Length(max = 50, message = "户名不能超过50个字符")
@ExcelAttribute(name = "户名", maxLength = 50,isNotEmpty = true)
@Schema(description = "户名")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty(value = "户名")
private String name;
/**
* 缴纳地所在省
*/
@Length(max = 50, message = "缴纳地所在省不能超过32个字符")
@ExcelAttribute(name = "缴纳地所在省", maxLength = 50,isNotEmpty = true, isArea = true, parentField = "")
@Schema(description = "缴纳地所在省")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty(value = "缴纳地所在省")
private String province;
/**
* 缴纳地所在市
*/
@Length(max = 50, message = "缴纳地所在市不能超过50个字符")
@ExcelAttribute(name = "缴纳地所在市", maxLength = 50,isNotEmpty = true, isArea = true, parentField = "province")
@Schema(description = "缴纳地所在市")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty(value = "缴纳地所在市")
private String city;
/**
* 缴纳地所在县
*/
@Length(max = 50, message = "缴纳地所在县不能超过50个字符")
@ExcelAttribute(name = "缴纳地所在县", maxLength = 50, isArea = true, parentField = "city")
@Schema(description = "缴纳地所在县")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty(value = "缴纳地所在县")
private String town;
/**
* 所属机构
*/
@ExcelAttribute(name = "所属机构", maxLength = 50,isNotEmpty = true)
@Schema(description ="所属机构")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("所属机构")
private String organName;
/**
* 审核人
*/
@ExcelAttribute(name = "审核人", maxLength = 50,isNotEmpty = true )
@Schema(description ="审核人")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("审核人")
private String auditUserName;
/**
* 办理人
*/
@ExcelAttribute(name = "办理人", maxLength = 50,isNotEmpty = true )
@Schema(description ="办理人")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("办理人")
private String handleUserName;
/**
* 手机号
*/
@ExcelAttribute(name = "手机号", maxLength = 50,isNotEmpty = true,isInteger = true )
@Schema(description ="手机号")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("手机号")
private Integer phone;
/**
* 类型 0 独立户 1 自由户
*/
@ExcelAttribute(name = "户类型", maxLength = 3,isNotEmpty = true)
@Schema(description ="户类型")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("户类型")
private String houseType;
/**
* 单位编号
*/
@ExcelAttribute(name = "单位编号" )
@Schema(description ="单位编号")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("单位编号")
private String customerNo;
/**
* 单位统一信用代码
*/
@ExcelAttribute(name = "单位统一信用代码" )
@Schema(description ="单位统一信用代码")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("单位统一信用代码")
private String unitCreditCode;
/**
* 社保-登录账户
*/
@ExcelAttribute(name = "社保-登录账户" )
@Schema(description ="社保-登录账户")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("社保-登录账户")
private String socialAccount;
/**
* 社保-登录密码
*/
@ExcelAttribute(name = "社保-登录密码" )
@Schema(description ="社保-登录密码")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("社保-登录密码")
private String socialPassword;
/**
* 医保-登录账户
*/
@ExcelAttribute(name = "医保-登录账户" )
@Schema(description ="医保-登录账户")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("医保-登录账户")
private String mediclAccount;
/**
* 医保-登录密码
*/
@ExcelAttribute(name = "医保-登录密码" )
@Schema(description ="医保-登录密码")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("医保-登录密码")
private String mediclPassword;
/**
* 自动化配置状态 0 是 1 否
*/
@ExcelAttribute(name = "是否自动办理" )
@Schema(description ="是否自动办理")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("是否自动办理")
private String autoStatus;
@Schema(description ="是否配置公章")
@ExcelAttribute(name = "是否配置公章", isExport = false)
private String isSign;
}
/*
* 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.social.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 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 huych
* @date 2024-12-5 11:38:05
*/
@Data
public class TSocialHouseholdUpdateVo extends RowIndex implements Serializable {
/**
* 员工姓名
*/
@Length(max = 50, message = "户名不能超过50个字符")
@ExcelAttribute(name = "户名", maxLength = 50,isNotEmpty = true)
@Schema(description = "户名")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty(value = "户名")
private String name;
/**
* 缴纳地所在省
*/
@Length(max = 32, message = "不能超过32个字符")
@ExcelAttribute(name = "缴纳地所在省", maxLength = 32, isArea = true, parentField = "")
@Schema(description = "缴纳地所在省")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty(value = "缴纳地所在省")
private String province;
/**
* 缴纳地所在市
*/
@Length(max = 32, message = "不能超过32个字符")
@ExcelAttribute(name = "缴纳地所在市", maxLength = 32, isArea = true, parentField = "province")
@Schema(description = "缴纳地所在市")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty(value = "缴纳地所在市")
private String city;
/**
* 缴纳地所在县
*/
@Length(max = 32, message = "不能超过32个字符")
@ExcelAttribute(name = "缴纳地所在县", maxLength = 32, isArea = true, parentField = "city")
@Schema(description = "缴纳地所在县")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty(value = "缴纳地所在县")
private String town;
/**
* 所属机构
*/
@ExcelAttribute(name = "所属机构", maxLength = 50)
@Schema(description ="所属机构")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("所属机构")
private String organName;
/**
* 审核人
*/
@ExcelAttribute(name = "审核人", maxLength = 50)
@Schema(description ="审核人")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("审核人")
private String auditUserName;
/**
* 办理人
*/
@ExcelAttribute(name = "办理人", maxLength = 50)
@Schema(description ="办理人")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("办理人")
private String handleUserName;
/**
* 手机号
*/
@ExcelAttribute(name = "手机号", maxLength = 50,isInteger = true)
@Schema(description ="手机号")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("手机号")
private Integer phone;
/**
* 类型 0 独立户 1 自由户
*/
@ExcelAttribute(name = "户类型", maxLength = 3)
@Schema(description ="户类型")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("户类型")
private String houseType;
/**
* 单位编号
*/
@ExcelAttribute(name = "单位编号" )
@Schema(description ="单位编号")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("单位编号")
private String customerNo;
/**
* 单位统一信用代码
*/
@ExcelAttribute(name = "单位统一信用代码" )
@Schema(description ="单位统一信用代码")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("单位统一信用代码")
private String unitCreditCode;
/**
* 社保-登录账户
*/
@ExcelAttribute(name = "社保-登录账户" )
@Schema(description ="社保-登录账户")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("社保-登录账户")
private String socialAccount;
/**
* 社保-登录密码
*/
@ExcelAttribute(name = "社保-登录密码" )
@Schema(description ="社保-登录密码")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("社保-登录密码")
private String socialPassword;
/**
* 医保-登录账户
*/
@ExcelAttribute(name = "医保-登录账户" )
@Schema(description ="医保-登录账户")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("医保-登录账户")
private String mediclAccount;
/**
* 医保-登录密码
*/
@ExcelAttribute(name = "医保-登录密码" )
@Schema(description ="医保-登录密码")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("医保-登录密码")
private String mediclPassword;
/**
* 自动化配置状态 0 是 1 否
*/
@ExcelAttribute(name = "是否自动办理", maxLength = 1,isNotEmpty = true)
@Schema(description ="是否自动办理")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("是否自动办理")
private String autoStatus;
}
......@@ -98,6 +98,29 @@
<artifactId>yifu-common-ekp</artifactId>
<version>1.0.0</version>
</dependency>
<!-- Apache POI -->
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>5.2.3</version> <!-- 使用最新版本 -->
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>5.2.3</version>
</dependency>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.12.0</version>
</dependency>
<dependency>
<groupId>spire.xls</groupId>
<artifactId>spire.xls</artifactId>
<version>5.3.0</version>
<type>jar</type>
</dependency>
</dependencies>
<build>
......
package com.yifu.cloud.plus.v1.yifu.social.constants;
/**
* @author huych
* @description 户配置相关
* @date 2024/12/9
*/
public class HouseConfigConstants {
public static final String HOUSE_TYPE_ONE = "自有户";
public static final String HOUSE_TYPE_TWO = "独立户";
public static final String ERROR_SAME_HOUSE = "模板中已存在相同户名的数据";
public static final String ERROR_NOT_EXIT = "未找到对应账户性质、户名的配置";
public static final String ERROR_IS_EXIT = "对应账户性质、户名的配置已存在";
public static final String ERROR_TEMPLATE_ONE = "户类型只能是【自有户】或者【独立户】";
public static final String ERROR_TEMPLATE_TWO = "是否自动办理,选择是时,社保和医保信息必须填写其中一个";
public static final String ERROR_TEMPLATE_THREE = "是否自动办理只能为【是】或者【否】";
public static final String ERROR_TEMPLATE_FOUR = "未找到对应的审核人或办理人的人员信息";
public static final String ERROR_TEMPLATE_FIVE = "社保账户,社保密码和医保账户,医保密码的账号和密码必须都填写或者都不填写";
public static final String ERROR_TEMPLATE_SIX = "省市的信息需要填写完善!";
public static final String SUCESS = "成功";
}
package com.yifu.cloud.plus.v1.yifu.social.controller;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
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.OSSUtil;
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.vo.SalaryAttaVo;
import com.yifu.cloud.plus.v1.yifu.social.entity.TAttaInfo;
import com.yifu.cloud.plus.v1.yifu.social.service.FileUploadService;
import com.yifu.cloud.plus.v1.yifu.social.service.TAttaInfoService;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.extern.slf4j.Slf4j;
import org.apache.poi.ss.formula.functions.T;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import java.io.IOException;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;
/**
* @author fang
* 文件上传接口
*/
@RestController
@RequestMapping("/fileUpload")
@Tag(name = "文件上传接口")
@Slf4j
public class FileUploadController {
@Autowired
private OSSUtil ossUtil;
@Autowired
private TAttaInfoService tAttaInfoService;
@Autowired
private FileUploadService fileUploadService;
/**
* @Author fxj
* @Description
* @Date 13:49 2022/6/17
* @Param
* @return
**/
@Operation(description = "OSS文件上传接口" +
"@ApiImplicitParam(name = \"file\", value = \"Form文件上传\", required = true, dataType = \"__file\", paramType = \"form\"),\n" +
"\t\t\t@ApiImplicitParam(name = \"filePath\", value = \"文件上传路径\", required = false, dataType = \"String\", paramType = \"form\"),\n" +
"\t\t\t@ApiImplicitParam(name = \"type\", value = \"关系类型(0员工附件-学历 1 员工附件-伤残 2.员工附件-职业 3.员工附件-不良记录 4.员工附件-合同;5收入证明)\", required = true, dataType = \"int\", paramType = \"form\"),\n" +
"\t\t\t@ApiImplicitParam(name = \"domain\", value = \"实体id(传入就插入对应关系,用于编辑)\", required = false, paramType = \"form\")\n" +
"\t")
/*@ApiImplicitParams({
@ApiImplicitParam(name = "file", value = "Form文件上传", required = true, dataType = "__file", paramType = "form"),
@ApiImplicitParam(name = "filePath", value = "文件上传路径", required = false, dataType = "String", paramType = "form"),
@ApiImplicitParam(name = "type", value = "关系类型(0客户附件1联系人附件2跟进记录附件3合同附件4合同归档附件5报价单6招标信息7业务评估8电子档案)", required = true, dataType = "int", paramType = "form"),
@ApiImplicitParam(name = "domain", value = "实体id(传入就插入对应关系,用于编辑)", required = false, paramType = "form")
})*/
@PostMapping(value = "/ossUploadFile")
public R<T> uploadImg(@RequestBody MultipartFile file, String filePath, Integer type, String domain) throws IOException {
return fileUploadService.uploadAsso(file,filePath,type,domain,CommonConstants.ZERO_STRING);
}
/**
* @Author hgw
* @Description 改编自ossUploadFile接口,改变了回传信息——专为预入职微信端使用——忽略了token,其余人慎用
* @Date 13:49 2022/6/17
* @Param relationTypeSub 预入职其他附件的子类型
* @return
**/
@Operation(description = "OSS文件上传接口" +
"@ApiImplicitParam(name = \"file\", value = \"Form文件上传\", required = true, dataType = \"__file\", paramType = \"form\"),\n" +
"\t\t\t@ApiImplicitParam(name = \"filePath\", value = \"文件上传路径\", required = false, dataType = \"String\", paramType = \"form\"),\n" +
"\t\t\t@ApiImplicitParam(name = \"type\", value = \"关系类型(0员工附件-学历 1 员工附件-伤残 2.员工附件-职业 3.员工附件-不良记录 4.员工附件-合同;5收入证明)\", required = true, dataType = \"int\", paramType = \"form\"),\n" +
"\t\t\t@ApiImplicitParam(name = \"domain\", value = \"实体id(传入就插入对应关系,用于编辑)\", required = false, paramType = \"form\")\n" +
"\t")
@PostMapping(value = "/uploadFileReturnAtta")
public R<T> uploadFileReturnAtta(@RequestBody MultipartFile file, String filePath, Integer type, String domainId) throws IOException {
return fileUploadService.uploadAsso(file,filePath,type,domainId,CommonConstants.ONE_STRING);
}
/**
* @Author fxj
* @Description
* @Date 13:51 2022/6/17
* @Param
* @return
**/
@Operation(description = "附件删除")
@SysLog("附件删除")
@DeleteMapping("/ossFileDelete/{id}")
public R<Boolean> ossFileDelete(@PathVariable String id) {
try {
TAttaInfo attaInfo = tAttaInfoService.getById(id);
if (null == attaInfo) {
return R.failed("无对应附件信息");
}
if (tAttaInfoService.removeById(id)) {
ossUtil.deleteObject(null, attaInfo.getAttaSrc());
return R.ok(null,"删除成功!");
}
} catch (Exception e) {
log.error("附件删除异常:" + e.getMessage());
return R.failed("附件删除异常!");
}
return R.ok(null,"删除失败!");
}
/**
* 获取附件下载地址
*
* @param id
* @return
* @Author fxj
* @Date 2019-08-16
* @param id domainId
**/
@Operation(description = "附件预览下载地址 type:关系类型(0员工附件-学历 1 员工附件-伤残 2.员工附件-职业")
@GetMapping("/ossFileUrl/{id}")
public R<List<TAttaInfo>> ossFileUrl(@PathVariable String id) {
List<TAttaInfo> attas = tAttaInfoService.list(Wrappers.<TAttaInfo>query().lambda().eq(TAttaInfo::getDomainId,id));
if (Common.isEmpty(attas)) {
return new R<>(attas);
}
for (TAttaInfo atta:attas){
URL url = ossUtil.getObjectUrl(null, atta.getAttaSrc());
atta.setAttaUrl(url.toString().replace("http","https"));
}
return new R<>(attas);
}
/**
* 获取附件
* @author hgw
* @return R
*/
@Operation(summary = "获取薪资原表附件--EKP调用接口", description = "获取薪资原表附件--EKP调用接口")
@SysLog("获取薪资原表附件--EKP调用接口")
@GetMapping("/getAttaListBySalaryId")
public R<List<SalaryAttaVo>> getAttaListBySalaryId(@RequestParam String salaryId) {
List<SalaryAttaVo> voList = new ArrayList<>();
List<TAttaInfo> attaList = tAttaInfoService.list(Wrappers.<TAttaInfo>query().lambda()
.eq(TAttaInfo::getRelationType,11)
.eq(TAttaInfo::getDomainId,salaryId));
if (attaList != null && !attaList.isEmpty()) {
SalaryAttaVo vo;
URL url;
for (TAttaInfo a : attaList){
url = ossUtil.getObjectUrl(null, a.getAttaSrc());
vo = new SalaryAttaVo();
vo.setAttaName(a.getAttaName());
vo.setAttaUrl(url.toString().replace("http","https"));
voList.add(vo);
}
}
return R.ok(voList);
}
}
......@@ -23,6 +23,7 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers;
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.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.log.annotation.SysLog;
import com.yifu.cloud.plus.v1.yifu.social.entity.SysHouseHoldInfo;
......@@ -30,9 +31,12 @@ import com.yifu.cloud.plus.v1.yifu.social.service.SysHouseHoldInfoService;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.RequiredArgsConstructor;
import lombok.SneakyThrows;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletResponse;
import java.util.List;
......@@ -93,7 +97,7 @@ public class SysHouseHoldInfoController {
@Operation(summary = "通过id查询", description = "通过id查询:hasPermission('demo_syshouseholdinfo_get')")
@GetMapping("/{id}" )
public R<SysHouseHoldInfo> getById(@PathVariable("id" ) String id) {
return R.ok(sysHouseHoldInfoService.getById(id));
return sysHouseHoldInfoService.getByIdAtta(id);
}
/**
......@@ -210,4 +214,47 @@ public class SysHouseHoldInfoController {
return R.ok(1);
}
/**
* 批量新增社保户配置数据
*
* @author huyc
* @date 2024-12-5 10:18:05
**/
@SneakyThrows
@Operation(description = "批量新增社保户配置数据 hasPermission('syshouseholdinfo_batch_add')")
@SysLog("批量新增社保户配置数据")
@PostMapping("/importListAdd")
@PreAuthorize("@pms.hasPermission('syshouseholdinfo_batch_add')")
public R<List<ErrorMessage>> importListAdd(@RequestBody MultipartFile file){
return sysHouseHoldInfoService.importListAdd(file.getInputStream());
}
/**
* 批量更新社保户配置数据
*
* @author huyc
* @date 2024-12-5 10:18:05
**/
@SneakyThrows
@Operation(description = "批量更新社保户配置数据 hasPermission('syshouseholdinfo_batch_update')")
@SysLog("批量更新社保户配置数据")
@PostMapping("/importListUpdate")
@PreAuthorize("@pms.hasPermission('syshouseholdinfo_batch_add')")
public R<List<ErrorMessage>> importListUpdate(@RequestBody MultipartFile file){
return sysHouseHoldInfoService.importListUpdate(file.getInputStream());
}
/**
* 导出社保户配置数据
*
* @author huyc
* @date 2024-12-5 11:32:08
**/
@Operation(description = "导出社保户配置数据")
@PostMapping("/export")
@PreAuthorize("@pms.hasPermission('syshouseholdinfo_export')")
public void export(HttpServletResponse response, @RequestBody SysHouseHoldInfo sysHouseHoldInfo) {
sysHouseHoldInfoService.listExport(response,sysHouseHoldInfo);
}
}
......@@ -50,6 +50,7 @@ import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;
......@@ -886,4 +887,21 @@ public class TDispatchInfoController {
searchVo.setCreateBy(user.getId());
tDispatchInfoService.doexportFundInfoOne(response,searchVo);
}
/**
* @Author fxj
* @Description 导出花名册
* @Date 14:02 2024/12/10
* @Param
* @return
**/
@PostMapping("/doExportRoster")
@Operation(description = "导出花名册")
@SysLog("导出花名册")
public R<URL> doExportRoster(@RequestParam("socialId") String socialId, @RequestParam("type") String type,@RequestParam("unitCreditCode")String unitCreditCode) {
return tDispatchInfoService.doExportRoster(socialId,type,unitCreditCode);
}
}
......@@ -15,7 +15,6 @@ package com.yifu.cloud.plus.v1.yifu.social.controller;/*
* Author: lengleng (wangiegie@gmail.com)
*/
import cn.hutool.core.date.LocalDateTimeUtil;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
......@@ -53,8 +52,6 @@ import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletResponse;
import java.text.ParseException;
import java.time.LocalDateTime;
import java.util.List;
......@@ -298,7 +295,42 @@ public class TPaymentInfoController {
}
try {
if (Common.isNotNull(requestId)) {
return tPaymentInfoService.batchImportPaymentFundInfo(file.getInputStream());
return tPaymentInfoService.batchImportPaymentFundInfo(file.getInputStream(),0);
} else {
return R.failed(ResultConstants.NO_GETLOCK_DATA);
}
}finally {
//主动释放锁
RedisDistributedLock.unlock(key, requestId);
}
}
/**
* 导入公积金-多比例
*
* @author huyc
* @date 2022-07-27
**/
@SneakyThrows
@Operation(description = "导入公积金-多比例 hasPermission('social_tpaymentinfo_batchImport')")
@SysLog("导入公积金-多比例")
@PostMapping("/batchImportPaymentFundInfoNew")
@PreAuthorize("@pms.hasPermission('social_tpaymentinfo_batchImport')")
public R<List<ErrorDetailVO>> importListFundNew(@RequestBody MultipartFile file) {
YifuUser user = SecurityUtils.getUser();
if (Common.isEmpty(user)){
return R.failed(CommonConstants.USER_FAIL);
}
// 获取redis分布式事务锁
String key = CacheConstants.PAYMENT_FUND_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 tPaymentInfoService.batchImportPaymentFundInfo(file.getInputStream(),1);
} else {
return R.failed(ResultConstants.NO_GETLOCK_DATA);
}
......@@ -307,7 +339,6 @@ public class TPaymentInfoController {
RedisDistributedLock.unlock(key, requestId);
}
}
/**
* 缴费库 批量导出
*
......
package com.yifu.cloud.plus.v1.yifu.social.mapper;/*
* 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)
*/
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.yifu.cloud.plus.v1.yifu.archives.entity.SysConfigLimit;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
/**
* 系统限制配置表
*
* @author hgw
* @date 2024-09-24 17:39:57
*/
@Mapper
public interface SysConfigLimitMapper extends BaseMapper<SysConfigLimit> {
/**
* 系统限制配置表简单分页查询
*
* @param configKey 键
* @return
*/
Integer getSysConfigLimitByKey(@Param("configKey") String configKey);
}
......@@ -21,9 +21,12 @@ 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.social.entity.SysHouseHoldInfo;
import com.yifu.cloud.plus.v1.yifu.social.vo.TSocialHouseholdExportVo;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* 社保户公积金户数据
*
......@@ -45,4 +48,18 @@ public interface SysHouseHoldInfoMapper extends BaseMapper<SysHouseHoldInfo> {
* @return
*/
IPage<SysHouseHoldInfo> getAllSingleSocailPage(Page<SysHouseHoldInfo> page);
/**
* 查询导出的数量
* @param sysHouseHoldInfo
* @return
*/
long selectExportCount(@Param("sysHouseHoldInfo") SysHouseHoldInfo sysHouseHoldInfo);
/**
* 查询导出的集合
* @param sysHouseHoldInfo
* @return
*/
List<TSocialHouseholdExportVo> selectExportList(@Param("sysHouseHoldInfo") SysHouseHoldInfo sysHouseHoldInfo);
}
package com.yifu.cloud.plus.v1.yifu.social.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.social.entity.TAttaInfo;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.time.LocalDateTime;
import java.util.Collection;
import java.util.List;
/**
* 附件信息表
*
* @author pwang
* @date 2021-02-19 16:16:07
*/
@Mapper
public interface TAttaInfoMapper extends BaseMapper<TAttaInfo> {
/**
* 附件信息表简单分页查询
*
* @param tAttaInfo 附件信息表
* @return
*/
IPage<TAttaInfo> getTAttaInfoPage(Page<TAttaInfo> page, @Param("tAttaInfo") TAttaInfo tAttaInfo);
/**
* @param tAttaInfo
* @Description: 获取list
* @Author: hgw
* @Date: 2021/5/28 16:02
* @return: java.util.List<com.yifu.cloud.v1.crm.api.entity.TAttaInfo>
**/
List<TAttaInfo> getTAttaInfoList(@Param("tAttaInfo") TAttaInfo tAttaInfo);
List<TAttaInfo> getTAttaInfoListByDoMainId(@Param("domainId") String domainId);
List<TAttaInfo> getKeenAtta(@Param("dayStart")LocalDateTime dayStart, @Param("values")Collection<String> values);
int updateDomainId(@Param("domainId")String domainId, @Param("ids")List<String> ids);
List<TAttaInfo> getAttaByApplyId(@Param("applyId")String applyId);
void deleteByDomainId(@Param("domainId") String domainId);
void deleteByDomainIdAndType(@Param("domainId") String domainId, @Param("relationType") String relationType);
// 删除学历与职业资格之外的附件
void deleteByDomainIdAndOther(@Param("domainId") String domainId);
}
package com.yifu.cloud.plus.v1.yifu.social.service;
import com.yifu.cloud.plus.v1.yifu.common.core.util.R;
import com.yifu.cloud.plus.v1.yifu.common.core.vo.FileVo;
import com.yifu.cloud.plus.v1.yifu.social.entity.TAttaInfo;
import org.apache.poi.ss.formula.functions.T;
import org.springframework.web.multipart.MultipartFile;
import java.io.IOException;
/**
* 文件上传
*
* @author pwang
* @date 2022-07-27 16:16:07
*/
public interface FileUploadService {
R<FileVo> uploadImg(MultipartFile file, String filePath, Integer type, String domain) throws IOException;
R<TAttaInfo> uploadFileReturnAtta(MultipartFile file, String filePath, Integer type, String domainId) throws IOException;
R<T> uploadAsso(MultipartFile file, String filePath, Integer type, String domain, String uploadType);
}
......@@ -21,9 +21,14 @@ package com.yifu.cloud.plus.v1.yifu.social.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.R;
import com.yifu.cloud.plus.v1.yifu.social.entity.SysHouseHoldInfo;
import javax.servlet.http.HttpServletResponse;
import java.io.InputStream;
import java.util.List;
/**
* 社保户公积金户数据
*
......@@ -45,7 +50,20 @@ public interface SysHouseHoldInfoService extends IService<SysHouseHoldInfo> {
*/
R<Boolean> saveInfo (SysHouseHoldInfo sysHouseHoldInfo);
/**
* 户新增
* @param id
* @return R
*/
R<SysHouseHoldInfo> getByIdAtta (String id);
R<Boolean> updateByIdAsso(SysHouseHoldInfo sysHouseHoldInfo);
IPage<SysHouseHoldInfo> getAllSingleSocailPage(Page<SysHouseHoldInfo> page);
R<List<ErrorMessage>> importListAdd(InputStream inputStream);
R<List<ErrorMessage>> importListUpdate(InputStream inputStream);
void listExport(HttpServletResponse response, SysHouseHoldInfo sysHouseHoldInfo);
}
package com.yifu.cloud.plus.v1.yifu.social.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.R;
import com.yifu.cloud.plus.v1.yifu.social.entity.TAttaInfo;
import java.time.LocalDateTime;
import java.util.Collection;
import java.util.List;
/**
* 附件信息表
*
* @author pwang
* @date 2021-02-19 16:16:07
*/
public interface TAttaInfoService extends IService<TAttaInfo> {
/**
* @Author fxj
* @Description
* @Date 13:48 2022/6/17
* @Param
* @return
**/
IPage<TAttaInfo> getTAttaInfoPage(Page<TAttaInfo> page, TAttaInfo tAttaInfo);
/**
* @Author fxj
* @Description
* @Date 13:48 2022/6/17
* @Param
* @return
**/
List<TAttaInfo> getTAttaInfoList(TAttaInfo tAttaInfo);
/**
* @param domainId 关联id
* @Description: 根据domainId获取附件
* @Author: hgw
* @Date: 2024/6/17 18:23
* @return: java.util.List<com.yifu.cloud.plus.v1.yifu.archives.entity.TAttaInfo>
**/
List<TAttaInfo> getTAttaInfoListByDoMainId(String domainId);
TAttaInfo add(TAttaInfo attaInfo);
void update(List<TAttaInfo> attaList, String domainId, String relationType);
/**
* @Author fxj
* @Description
* @Date 13:48 2022/6/17
* @Param
* @return
**/
Boolean batchOssFileDelete(List<TAttaInfo> delAttaList);
List<TAttaInfo> getKeenAtta(LocalDateTime dayStart, Collection<String> values);
Boolean updateDomainId(String domainId, List<String> ids);
/**
* @param applyId
* @Description: 收入证明使用
* @Author: hgw
* @Date: 2023/2/22 10:50
* @return: com.yifu.cloud.plus.v1.yifu.common.core.util.R<java.util.List < com.yifu.cloud.plus.v1.yifu.archives.entity.TAttaInfo>>
**/
R<List<TAttaInfo>> getAttaByApplyId(String applyId);
/**
* @param domainId 关联id
* @Description: 删除附件
* @Author: hgw
* @Date: 2024/6/20 14:50
* @return: void
**/
void deleteByDomainId(String domainId);
void deleteByDomainIdAndOther(String domainId);
void deleteByDomainIdAndType(String domainId, int relationType);
}
......@@ -32,6 +32,7 @@ import org.springframework.transaction.annotation.Transactional;
import javax.servlet.http.HttpServletResponse;
import java.io.InputStream;
import java.net.URL;
import java.util.List;
import java.util.Map;
......@@ -161,4 +162,5 @@ public interface TDispatchInfoService extends IService<TDispatchInfo> {
**/
List<SocialHandleExportVo> getRecordRosterList(SocialHandleSearchVo searchVo, String idStr);
R<URL> doExportRoster(String socialId, String type,String unitCreditCode);
}
......@@ -85,9 +85,10 @@ public interface TPaymentInfoService extends IService<TPaymentInfo> {
/**
* 批量导入公积金
* @param inputStream
* @param type 0 单边比例 1 多比例
* @return
*/
R<List<ErrorDetailVO>> batchImportPaymentFundInfo(InputStream inputStream);
R<List<ErrorDetailVO>> batchImportPaymentFundInfo(InputStream inputStream,int type);
/**
* 导出缴费库
......
package com.yifu.cloud.plus.v1.yifu.social.service.impl;
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.constant.SecurityConstants;
import com.yifu.cloud.plus.v1.yifu.common.core.util.Common;
import com.yifu.cloud.plus.v1.yifu.common.core.util.OSSUtil;
import com.yifu.cloud.plus.v1.yifu.common.core.util.R;
import com.yifu.cloud.plus.v1.yifu.common.core.vo.FileVo;
import com.yifu.cloud.plus.v1.yifu.common.core.vo.YifuUser;
import com.yifu.cloud.plus.v1.yifu.social.entity.TAttaInfo;
import com.yifu.cloud.plus.v1.yifu.social.mapper.SysConfigLimitMapper;
import com.yifu.cloud.plus.v1.yifu.social.service.FileUploadService;
import com.yifu.cloud.plus.v1.yifu.social.service.TAttaInfoService;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.security.core.GrantedAuthority;
import org.springframework.security.core.authority.AuthorityUtils;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
import java.time.LocalDateTime;
import java.util.Collection;
import java.util.HashSet;
import java.util.Set;
import java.util.concurrent.atomic.AtomicInteger;
@Service
@RequiredArgsConstructor
@Slf4j
public class FileUploadServiceImpl implements FileUploadService {
private final OSSUtil ossUtil;
private final TAttaInfoService tAttaInfoService;
private AtomicInteger atomicInteger = new AtomicInteger(0);
//初始化附件上传队列上限值
private int maxLimit = 1;
private final SysConfigLimitMapper configLimitMapper;
@Override
public R<TAttaInfo> uploadFileReturnAtta(MultipartFile file, String filePath, Integer type, String domainId) throws IOException {
if (null == file) {
return R.failed("文件删除异常,请重新上传!");
}
String fileName = file.getOriginalFilename();
if (fileName == null || Common.isEmpty(fileName)) {
return R.failed("文件名不能为空!!");
}
if (fileName.length() > 100) {
return R.failed("文件名不能超过100个字符!");
}
//filePath不传默认存储空间的根目录
//jpg,jpeg,png,bmp
String key = "";
if (Common.isNotNull(filePath)) {
key = filePath + "/" + System.currentTimeMillis() + fileName;
} else {
key = System.currentTimeMillis() + fileName;
}
if (!Common.checkFile(key)) {
return R.failed("非法上传类型:" + fileName);
}
boolean flag = ossUtil.uploadFileByStream(file.getInputStream(), key, null);
TAttaInfo attaInfo;
URL url;
if (flag) {
log.info("文件:" + fileName + "上传到存储空间" + ossUtil.getBucketName() + "成功!");
attaInfo = initUnitAttaForInsert(fileName, key, file.getSize());
attaInfo.setRelationType(String.valueOf(type));
try {
attaInfo.setDomainId(domainId);
Set<String> dbAuthsSet = new HashSet<>();
Collection<? extends GrantedAuthority> authorities = AuthorityUtils
.createAuthorityList(dbAuthsSet.toArray(new String[0]));
YifuUser user = new YifuUser("2", 1L, "", "预入职扫码",
"预入职扫码", "0", SecurityConstants.BCRYPT + "123456",
"12345678911", true, true, true,
true,
"1", authorities, "1",
null, null,
null);
attaInfo.setCreateBy(user.getId());
attaInfo.setCreateName(user.getNickname());
attaInfo = tAttaInfoService.add(attaInfo);
} catch (Exception e) {
log.error("OSS文件上传异常:" + e.getMessage());
ossUtil.deleteObject(null, key);
return R.failed("上传异常:" + e.getMessage());
}
url = ossUtil.getObjectUrl(null, attaInfo.getAttaSrc());
attaInfo.setAttaUrl(String.valueOf(url));
return R.ok(attaInfo);
} else {
return R.failed("fail:上传异常");
}
}
@Override
public R<FileVo> uploadImg(MultipartFile file, String filePath, Integer type, String domain) throws IOException {
if (null == file) {
return R.failed("文件删除异常,请重新上传!");
}
String fileName = file.getOriginalFilename();
if (Common.isEmpty(fileName)) {
return R.failed("文件名不能为空!");
}
if (fileName.length() > 100) {
return R.failed("文件名不能超过100个字符!");
}
//filePath不传默认存储空间的根目录
//jpg,jpeg,png,bmp
String key = "";
if (Common.isNotNull(filePath)) {
key = filePath + "/" + System.currentTimeMillis() + fileName;
} else {
key = System.currentTimeMillis() + fileName;
}
if (!Common.checkFile(key)) {
return R.failed("非法上传类型!");
}
boolean flag = ossUtil.uploadFileByStream(file.getInputStream(), key, null);
FileVo fileVo;
TAttaInfo attaInfo;
URL url;
if (flag) {
log.info("文件:" + fileName + "上传至存储空间" + ossUtil.getBucketName() + "成功!");
attaInfo = initUnitAttaForInsert(fileName, key, file.getSize());
attaInfo.setRelationType(String.valueOf(type));
try {
attaInfo.setDomainId(domain);
attaInfo = tAttaInfoService.add(attaInfo);
} catch (Exception e) {
log.error("OSS文件上传接口异常:" + e.getMessage());
ossUtil.deleteObject(null, key);
return R.failed("fail:" + e.getMessage());
}
//有实体id则插入关系,用于编辑
if (Common.isNotNull(domain)) {
url = ossUtil.getObjectUrl(null, attaInfo.getAttaSrc());
fileVo = new FileVo(attaInfo.getId(), attaInfo.getAttaName(), url.toString());
return R.ok(fileVo, "success");
}
url = ossUtil.getObjectUrl(null, attaInfo.getAttaSrc());
fileVo = new FileVo(attaInfo.getId(), attaInfo.getAttaName(), url.toString());
return R.ok(fileVo, "success");
} else {
return R.failed("fail:上传失败");
}
}
private R<FileVo> uploadImg2(InputStream fileIn, String filePath, Integer type, String domain, String fileName) throws IOException {
if (null == fileIn) {
return R.failed("文件上传异常,请重新上传!");
}
if (Common.isEmpty(fileName)) {
return R.failed("文件名不能为空!");
}
//filePath不传默认存储空间的根目录
//jpg,jpeg,png,bmp
String key = System.currentTimeMillis() + fileName;
boolean flag = ossUtil.uploadFileByStream(fileIn, key, null);
FileVo fileVo;
TAttaInfo attaInfo;
URL url;
if (flag) {
log.info("文件:" + fileName + "上传至存储空间" + ossUtil.getBucketName() + "成功!");
attaInfo = initUnitAttaForInsert(fileName, key, 0);
attaInfo.setRelationType(String.valueOf(type));
try {
attaInfo.setDomainId(domain);
attaInfo = tAttaInfoService.add(attaInfo);
} catch (Exception e) {
log.error("OSS文件上传接口异常:" + e.getMessage());
ossUtil.deleteObject(null, key);
return R.failed("fail:" + e.getMessage());
}
//有实体id则插入关系,用于编辑
if (Common.isNotNull(domain)) {
url = ossUtil.getObjectUrl(null, attaInfo.getAttaSrc());
fileVo = new FileVo(attaInfo.getId(), attaInfo.getAttaName(), url.toString());
return R.ok(fileVo, "success");
}
url = ossUtil.getObjectUrl(null, attaInfo.getAttaSrc());
fileVo = new FileVo(attaInfo.getId(), attaInfo.getAttaName(), url.toString());
return R.ok(fileVo, "success");
} else {
return R.failed("fail:上传失败");
}
}
/**
* 对象初始化
*
* @param fileName
* @param key
* @param fileSize
* @return
*/
private TAttaInfo initUnitAttaForInsert(String fileName, String key, long fileSize) {
TAttaInfo unitAtta = new TAttaInfo();
char slash = '/';
char point = '.';
if (fileName.lastIndexOf(slash) >= 0) {
unitAtta.setAttaName(fileName.substring(fileName.lastIndexOf(slash)));
} else {
unitAtta.setAttaName(fileName);
}
unitAtta.setAttaSize(fileSize);
unitAtta.setAttaSrc(key);
if (key.lastIndexOf(point) >= 0) {
unitAtta.setAttaType(key.substring(key.lastIndexOf(point)));
}
unitAtta.setCreateTime(LocalDateTime.now());
return unitAtta;
}
/**
* @return
* @Author fxj
* @Description 整合接口
* @Date 15:24 2024/9/24
* @Param
**/
@Override
public R uploadAsso(MultipartFile file, String filePath, Integer type, String domain, String uploadType) {
return getR(file, filePath, type, domain, uploadType);
}
public R getR(MultipartFile file, String filePath, Integer type, String domain, String uploadType) {
maxLimit = configLimitMapper.getSysConfigLimitByKey("UPLOAD_MAX_LIMIT");
if (atomicInteger.incrementAndGet() <= maxLimit) {
try {
if (CommonConstants.ZERO_STRING.equals(uploadType)) {
return uploadImg(file, filePath, type, domain);
} else if (CommonConstants.ONE_STRING.equals(uploadType)) {
return uploadFileReturnAtta(file, filePath, type, domain);
}
} catch (Exception e) {
log.error("附件上传异常:", e);
} finally {
atomicInteger.decrementAndGet();
}
} else {
atomicInteger.decrementAndGet();
log.error("超出阈值:" + ResultConstants.FILE_UPLOADING_DATA);
return R.failed(ResultConstants.FILE_UPLOADING_DATA);
}
return null;
}
}
\ No newline at end of file
package com.yifu.cloud.plus.v1.yifu.social.service.impl;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.yifu.cloud.plus.v1.yifu.common.core.util.Common;
import com.yifu.cloud.plus.v1.yifu.common.core.util.OSSUtil;
import com.yifu.cloud.plus.v1.yifu.common.core.util.R;
import com.yifu.cloud.plus.v1.yifu.social.entity.TAttaInfo;
import com.yifu.cloud.plus.v1.yifu.social.mapper.TAttaInfoMapper;
import com.yifu.cloud.plus.v1.yifu.social.service.TAttaInfoService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.net.URL;
import java.time.LocalDateTime;
import java.util.Collection;
import java.util.List;
/**
* 附件信息表
*
* @author pwang
* @date 2021-02-19 16:16:07
*/
@Service
public class TAttaInfoServiceImpl extends ServiceImpl<TAttaInfoMapper, TAttaInfo> implements TAttaInfoService {
@Autowired
private OSSUtil ossUtil;
/**
* 附件信息表简单分页查询
*
* @param tAttaInfo 附件信息表
* @return
*/
@Override
public IPage<TAttaInfo> getTAttaInfoPage(Page<TAttaInfo> page, TAttaInfo tAttaInfo) {
return baseMapper.getTAttaInfoPage(page, tAttaInfo);
}
/**
* @Author fxj
* @Description
* @Date 13:48 2022/6/17
* @Param
* @return
**/
@Override
public List<TAttaInfo> getTAttaInfoList(TAttaInfo tAttaInfo) {
return baseMapper.getTAttaInfoList(tAttaInfo);
}
@Override
public List<TAttaInfo> getTAttaInfoListByDoMainId(String domainId) {
return baseMapper.getTAttaInfoListByDoMainId(domainId);
}
@Override
public TAttaInfo add(TAttaInfo attaInfo) {
this.save(attaInfo);
return attaInfo;
}
/**
* @Author fxj
* @Description
* @Date 13:48 2022/6/17
* @Param
* @return
**/
@Override
public void update(List<TAttaInfo> attaInfoList, String domainId, String relationType) {
if (attaInfoList != null) {
for (TAttaInfo attaInfo : attaInfoList) {
attaInfo.setDomainId(domainId);
attaInfo.setRelationType(relationType);
this.updateById(attaInfo);
}
}
}
/**
* @Author fxj
* @Description
* @Date 13:48 2022/6/17
* @Param
* @return
**/
@Override
public Boolean batchOssFileDelete(List<TAttaInfo> delAttaList) {
try {
for (TAttaInfo delAtta : delAttaList) {
if (this.removeById(delAtta.getId())) {
ossUtil.deleteObject(null, delAtta.getAttaSrc());
}
}
return true;
} catch (Exception e) {
log.error("附件删除异常:" + e.getMessage());
return false;
}
}
@Override
public List<TAttaInfo> getKeenAtta(LocalDateTime dayStart, Collection<String> values) {
return baseMapper.getKeenAtta(dayStart,values);
}
@Override
public Boolean updateDomainId(String domainId, List<String> ids){
if (Common.isEmpty(domainId) || !Common.isNotEmpty(ids)){
return false;
}
return baseMapper.updateDomainId(domainId,ids) > 0;
}
@Override
public R<List<TAttaInfo>> getAttaByApplyId(String applyId) {
List<TAttaInfo> list = baseMapper.getAttaByApplyId(applyId);
if (Common.isNotNull(list)) {
URL url;
for (TAttaInfo atta:list) {
url = ossUtil.getObjectUrl(null, atta.getAttaSrc());
atta.setAttaUrl(url.toString());
}
return R.ok(list);
}else{
return R.failed("没有附件");
}
}
@Override
public void deleteByDomainId(String domainId) {
baseMapper.deleteByDomainId(domainId);
}
@Override
public void deleteByDomainIdAndOther(String domainId) {
baseMapper.deleteByDomainIdAndOther(domainId);
}
@Override
public void deleteByDomainIdAndType(String domainId, int relationType) {
// 学历
if (relationType == 0) {
baseMapper.deleteByDomainIdAndType(domainId, "0");
baseMapper.deleteByDomainIdAndType(domainId, "26");
} else if (relationType == 1) {
// 执业资格证书
baseMapper.deleteByDomainIdAndType(domainId, "2");
} else if (relationType == 2) {
// 其他附件
baseMapper.deleteByDomainIdAndType(domainId, "27");
}
}
}
......@@ -2052,7 +2052,7 @@ public class TPaymentInfoServiceImpl extends ServiceImpl<TPaymentInfoMapper, TPa
tProvidentFund = null;
}
//计算公积金合计,个人金额和单位金额一致
infoVo.setProvidentSum(BigDecimalUtils.safeAdd(infoVo.getUnitProvidentSum(), infoVo.getUnitProvidentSum()));
infoVo.setProvidentSum(BigDecimalUtils.safeAdd(infoVo.getUnitProvidentSum(), infoVo.getPersonalProvidentSum()));
// 判重
if (paymentInfoMap.size() > CommonConstants.ZERO_INT) {
paymentInfo = (TPaymentInfo) paymentInfoMap.get(infoVo.getProvidentPayAddr()
......@@ -2180,8 +2180,11 @@ public class TPaymentInfoServiceImpl extends ServiceImpl<TPaymentInfoMapper, TPa
paymentInfo.setUnitProvidentSet(null == infoVo.getUnitProvidentSet() ? BigDecimal.ZERO : infoVo.getUnitProvidentSet());
paymentInfo.setPersonalProidentSet(null == infoVo.getUnitProvidentSet() ? BigDecimal.ZERO : infoVo.getUnitProvidentSet());
paymentInfo.setProvidentPercent(null == infoVo.getProvidentPercent() ? BigDecimal.ZERO : infoVo.getProvidentPercent());
//个人单边比例 fxj 2024-12-06 v1.7.3
paymentInfo.setPersonalProvidentPercent(null == infoVo.getPersonalProvidentPercent() ? BigDecimal.ZERO : infoVo.getPersonalProvidentPercent());
paymentInfo.setProvidentNo(infoVo.getProvidentNo());
paymentInfo.setPersonalProvidentSum(null == infoVo.getUnitProvidentSum() ? BigDecimal.ZERO : infoVo.getUnitProvidentSum());
//个人单表金额 fxj 2024-12-06 v1.7.3
paymentInfo.setPersonalProvidentSum(null == infoVo.getPersonalProvidentSum() ? BigDecimal.ZERO : infoVo.getPersonalProvidentSum());
paymentInfo.setUnitProvidentSum(null == infoVo.getUnitProvidentSum() ? BigDecimal.ZERO : infoVo.getUnitProvidentSum());
paymentInfo.setProvidentSum(null == infoVo.getProvidentSum() ? BigDecimal.ZERO : infoVo.getProvidentSum());
paymentInfo.setSumAll(paymentInfo.getProvidentSum());
......@@ -2211,7 +2214,7 @@ public class TPaymentInfoServiceImpl extends ServiceImpl<TPaymentInfoMapper, TPa
}
@Override
public R<List<ErrorDetailVO>> batchImportPaymentFundInfo(InputStream inputStream) {
public R<List<ErrorDetailVO>> batchImportPaymentFundInfo(InputStream inputStream, int type) {
List<ErrorDetailVO> errorMessageList = new ArrayList<>();
ExcelUtil<TPaymentInfoVo> util1 = new ExcelUtil<>(TPaymentInfoVo.class);
//批量插入的集合
......@@ -2258,6 +2261,17 @@ public class TPaymentInfoServiceImpl extends ServiceImpl<TPaymentInfoMapper, TPa
if (Common.isNotNull(errorMessage)) {
errorMessageList.add(new ErrorDetailVO(errorMessage.getLineNum(), errorMessage.getMessage()));
} else {
//直接兼容多比例 fxj 2024-12-06 v1.7.3 type=1 为多比例
if (type == CommonConstants.ZERO_INT){
//非多比例时 直接赋值个人公积金比例和金额 以便后面统一处理
data.setPersonalProvidentPercent(null==data.getProvidentPercent()? BigDecimal.ZERO:data.getProvidentPercent());
data.setPersonalProvidentSum(null==data.getUnitProvidentSum()? BigDecimal.ZERO:data.getUnitProvidentSum());
}else {
// 多比例时 单位公积金比例 和金额 用冗余字段赋值
data.setProvidentPercent(null==data.getUnitProvidentPercent()? BigDecimal.ZERO:data.getUnitProvidentPercent());
data.setUnitProvidentSum(null==data.getUnitProvidentFee()? BigDecimal.ZERO:data.getUnitProvidentFee());
data.setPersonalProidentSet(null==data.getUnitProvidentSet()? BigDecimal.ZERO:data.getUnitProvidentSet());
}
cachedDataList.add(data);
}
if (cachedDataList.size() >= BATCH_COUNT) {
......
......@@ -307,12 +307,29 @@ public class TSocialDeadlineInfoServiceImpl extends ServiceImpl<TSocialDeadlineI
if (Common.isNotNull(save.getSocialEndDate())) {
save.setSocialEndDate(this.getNewDateByOldDate(save.getSocialEndDate()));
}
//2024-12-09 fxj v1.7.3
if (Common.isNotNull(save.getSocialStartDateReduce())){
save.setSocialStartDateReduce(this.getNewDateByOldDate(save.getSocialStartDateReduce()));
}
if (Common.isNotNull(save.getSocialEndDateReduce())){
save.setSocialEndDateReduce(this.getNewDateByOldDate(save.getSocialEndDateReduce()));
}
if (Common.isNotNull(save.getMedicalStartDateReduce())){
save.setMedicalStartDateReduce(this.getNewDateByOldDate(save.getMedicalStartDateReduce()));
}
if (Common.isNotNull(save.getMedicalEndDateReduce())){
save.setMedicalEndDateReduce(this.getNewDateByOldDate(save.getMedicalEndDateReduce()));
}
initSocialEndDate(holidayMap, save);
initMedicalEndDate(holidayMap, save);
//处理社保减少截止时间和医保减少截止时间
initSocialEndDateReduce(holidayMap, save);
initMedicalEndDateReduce(holidayMap, save);
save.setUpdateTime(null);
save.setUpdateBy(null);
save.setUpdateName(null);
//已存在跳过
queryWrapper = initCountQuery(save,queryWrapper);
if (baseMapper.selectCount(queryWrapper) > 0){
continue;
......@@ -458,6 +475,28 @@ public class TSocialDeadlineInfoServiceImpl extends ServiceImpl<TSocialDeadlineI
initSocialEndDate(holidayMap,save);
}
private void initSocialEndDateReduce(Map<String, String> holidayMap, TSocialDeadlineInfo save) {
// type 0 休假 1 补班
String day= holidayMap.get(DateUtil.getDay(save.getSocialEndDateReduce()));
if (Common.isNotNull(day)){
save.setSocialEndDateReduce(DateUtil.addDayByDate(save.getSocialEndDateReduce(),CommonConstants.ONE_INT_NEGATE));
}else {
return;
}
initSocialEndDateReduce(holidayMap,save);
}
private void initMedicalEndDateReduce(Map<String, String> holidayMap, TSocialDeadlineInfo save) {
// type 0 休假 1 补班
String day= holidayMap.get(DateUtil.getDay(save.getMedicalEndDateReduce()));
if (Common.isNotNull(day)){
save.setMedicalEndDateReduce(DateUtil.addDayByDate(save.getMedicalEndDateReduce(),CommonConstants.ONE_INT_NEGATE));
}else {
return;
}
initMedicalEndDateReduce(holidayMap,save);
}
/**
* @Description: 获取 当月启用 的配置
* @Author: hgw
......
package com.yifu.cloud.plus.v1.yifu.social.util;
import org.apache.commons.compress.utils.IOUtils;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.springframework.stereotype.Component;
import javax.imageio.ImageIO;
import java.awt.Color;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.*;
/**
* @Author fxj
* @Date 2024/12/9
* @Description
* @Version 1.0
*/
@Component
public class ExcelMergeImage {
public static void main(String[] args) throws IOException {
String excelFilePath = "E:\\test\\11\\1.xls";
String imageFilePath = "E:\\test\\11\\1.png";
//convertExcelToImage(excelFilePath, imageFilePath);
//stampAdder();
}
public static void convertExcelToImage(String excelFilePath, String imageFilePath) throws IOException {
FileInputStream fis = new FileInputStream(new File(excelFilePath));
Workbook workbook;
if (excelFilePath.endsWith(".xls")) {
workbook = new HSSFWorkbook(fis); // For Excel 97-2003 (.xls) format
} else if (excelFilePath.endsWith(".xlsx")) {
workbook = new XSSFWorkbook(fis); // For Excel 2007 and later (.xlsx) format
} else {
throw new IllegalArgumentException("Unsupported file type");
}
Sheet sheet = workbook.getSheetAt(0);
int rowCount = 16; //sheet.getPhysicalNumberOfRows();
int colCount = 25;//sheet.getRow(0).getPhysicalNumberOfCells();
BufferedImage image = new BufferedImage(896, 424, BufferedImage.TYPE_INT_RGB);
Graphics2D graphics = image.createGraphics();
for (int i = 0; i < rowCount; i++) {
Row row = sheet.getRow(i);
for (int j = 0; j < colCount; j++) {
Cell cell = row.getCell(j);
if (cell != null) {
graphics.fillRect(j*150, i*47, 896, 424);
graphics.setColor(Color.black); // 设置边框颜色
graphics.drawRect(j*150, i*47, 896, 424);
String cellValue = getCellValueAsString(cell);
graphics.drawString(cellValue, j * 150+10, i * 45+30);
}
}
}
graphics.dispose();
ImageIO.write(image, "png", new File(imageFilePath));
workbook.close();
fis.close();
}
private static String getCellValueAsString(Cell cell) {
String cellValue = "";
if (cell != null) {
switch (cell.getCellType()) {
case STRING:
cellValue = cell.getStringCellValue();
break;
case NUMERIC:
cellValue = String.valueOf(cell.getNumericCellValue());
break;
case BOOLEAN:
cellValue = String.valueOf(cell.getBooleanCellValue());
break;
case FORMULA:
cellValue = cell.getCellFormula();
break;
default:
cellValue = "";
}
}
return cellValue;
}
/**
* @Author fxj
* @Description 03格式excel添加电子印章或图片
* @Date 15:32 2024/12/9
* @Param
* @return
**/
public FileOutputStream addPictureToExcel(FileInputStream fis,
InputStream imageIs,
FileOutputStream fileOut,
int SheetNum){
Workbook workbook = null;
try {
workbook = new HSSFWorkbook(fis);
Sheet sheet = workbook.getSheetAt(SheetNum);
// 在合适的位置添加印章
Drawing<?> drawing = sheet.createDrawingPatriarch();
CreationHelper helper = workbook.getCreationHelper();
ClientAnchor anchor = helper.createClientAnchor();
anchor.setCol1(2);
anchor.setRow1(0);
anchor.setCol2(4);
anchor.setRow2(7);
// 添加印章图片
int pictureIdx = workbook.addPicture(IOUtils.toByteArray(imageIs), Workbook.PICTURE_TYPE_PNG);
drawing.createPicture(anchor, pictureIdx);
workbook.write(fileOut);
}catch (Exception e){
e.printStackTrace();
}finally {
try {
if (null != fis){
fis.close();
}
if (null != workbook){
workbook.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
return fileOut;
}
}
package com.yifu.cloud.plus.v1.yifu.social.util;
import com.spire.xls.Workbook;
import com.spire.xls.Worksheet;
import com.yifu.cloud.plus.v1.yifu.common.core.constant.CommonConstants;
import com.yifu.cloud.plus.v1.yifu.common.core.util.OSSUtil;
import com.yifu.cloud.plus.v1.yifu.common.core.util.R;
import lombok.RequiredArgsConstructor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.io.File;
import java.io.InputStream;
import java.net.URL;
/**
* @Author fxj
* @Date 2024/12/9
* @Description excel 转换为 图片 并上传阿里云 (上传后自动删除生成的图片文件)
* @Version 1.0
*/
@Component
public class ExcelToImage {
public R<URL> excelToImg(InputStream inputStream ,OSSUtil ossUtil){
String projectRoot = System.getProperty("user.dir");
//加载Excel工作表
Workbook wb = new Workbook();
wb.loadFromHtml(inputStream);
//获取工作表
Worksheet sheet = wb.getWorksheets().get(0);
//调用方法将Excel工作表保存为图片
sheet.saveToImage(projectRoot+"\\ToImg.png");
File file = null;
try {
file = new File(projectRoot+"\\ToImg.png");
if (file.exists()){
String key = System.currentTimeMillis() + file.getName();
if (ossUtil.uploadFileByFile(file,key,null)){
return R.ok(ossUtil.getObjectUrl(null,key));
}else {
return R.failed(CommonConstants.RESULT_DATA_FAIL+":ExcelToImage上传OSS异常");
}
}
} catch (Exception e) {
e.printStackTrace();
return R.failed(CommonConstants.RESULT_DATA_FAIL+":ExcelToImage转换异常-"+e.getMessage());
} finally {
if (file.exists()){
file.delete();
}
}
return R.failed(CommonConstants.RESULT_DATA_FAIL);
//调用方法,将指定Excel单元格数据范围保存为图片
//sheet.saveToImage("ToImg2.png",8,1,30,7);
/*//调用方法将Excel保存为HTML
sheet.saveToHtml("ToHtml.html");
//调用方法将Excel保存为XPS
sheet.saveToFile("ToXPS.xps", String.valueOf(FileFormat.XPS));
//调用方法将Excel保存为CSV
sheet.saveToFile("ToCSV.csv", String.valueOf(FileFormat.CSV));
//调用方法将Excel保存为XML
sheet.saveToFile("ToXML.xml", String.valueOf(FileFormat.XML));
//调用方法将Excel保存为PostScript
sheet.saveToFile("ToPostScript.postscript", String.valueOf(FileFormat.PostScript));
//调用方法将Excel保存为PCL
sheet.saveToFile("ToPCL.pcl", String.valueOf(FileFormat.PCL));*/
}
}
<?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.social.mapper.SysConfigLimitMapper">
<resultMap id="sysConfigLimitMap" type="com.yifu.cloud.plus.v1.yifu.social.entity.SysConfigLimit">
<id property="id" column="ID"/>
<result property="configKey" column="CONFIG_KEY"/>
<result property="configValue" column="CONFIG_VALUE"/>
<result property="remark" column="REMARK"/>
</resultMap>
<!-- 根据key获取value -->
<select id="getSysConfigLimitByKey" resultType="java.lang.Integer">
SELECT a.CONFIG_VALUE
FROM sys_config_limit a
where a.CONFIG_KEY = #{configKey} limit 1
</select>
</mapper>
......@@ -49,6 +49,12 @@
<result property="unitCreditCode" column="UNIT_CREDIT_CODE"/>
<result property="fundBank" column="FUND_BANK"/>
<result property="autoStatus" column="AUTO_STATUS"/>
<result property="phone" column="PHONE"/>
<result property="socialAccount" column="SOCIAL_ACCOUNT"/>
<result property="mediclAccount" column="MEDICL_ACCOUNT"/>
<result property="socialPassword" column="SOCIAL_PASSWORD"/>
<result property="mediclPassword" column="MEDICL_PASSWORD"/>
<result property="isSign" column="IS_SIGN"/>
</resultMap>
<resultMap id="sysHouseHoldSingleInfoMap" type="com.yifu.cloud.plus.v1.yifu.social.entity.SysHouseHoldInfo">
......@@ -83,7 +89,13 @@
a.UNIT_CREDIT_CODE,
a.FUND_BANK,
a.HANDLE_USER_NAME,
a.AUTO_STATUS
a.AUTO_STATUS,
a.PHONE,
a.SOCIAL_ACCOUNT,
a.MEDICL_ACCOUNT,
a.SOCIAL_PASSWORD,
a.MEDICL_PASSWORD,
a.IS_SIGN
</sql>
<sql id="sysHouseHoldInfo_where">
<if test="sysHouseHoldInfo != null">
......@@ -164,4 +176,46 @@
where HOUSE_TYPE = '0'
order by a.CREATE_TIME desc
</select>
<select id="selectExportCount" resultType="java.lang.Long">
SELECT
count(1)
FROM sys_house_hold_info a
<where>
1=1
<include refid="sysHouseHoldInfo_where"/>
</where>
order by a.CREATE_TIME desc
</select>
<select id="selectExportList" resultType="com.yifu.cloud.plus.v1.yifu.social.vo.TSocialHouseholdExportVo">
SELECT
if(a.TYPE = '0','社保户','公积金户') type,
a.NAME,
a1.AREA_NAME PROVINCE,
a2.AREA_NAME CITY,
ifnull(a3.AREA_NAME,'') TOWN,
a.ORGAN_NAME organName,
a.AUDIT_USER_NAME auditUserName,
a.HANDLE_USER_NAME handleUserName,
a.PHONE,
if(a.HOUSE_TYPE = '0','独立户','自有户') houseType,
a.CUSTOMER_NO customerNo,
a.UNIT_CREDIT_CODE unitCreditCode,
a.SOCIAL_ACCOUNT socialAccount,
a.SOCIAL_PASSWORD socialPassword,
a.MEDICL_ACCOUNT mediclAccount,
a.MEDICL_PASSWORD mediclPassword,
if(a.IS_SIGN = '0','是','否') isSign,
if(a.AUTO_STATUS = '0','启用','禁用') autoStatus
FROM sys_house_hold_info a
LEFT JOIN sys_area a1 on a1.id=a.PROVINCE
LEFT JOIN sys_area a2 on a2.id=a.CITY
LEFT JOIN sys_area a3 on a3.id=a.TOWN
<where>
1 = 1
<include refid="sysHouseHoldInfo_where"/>
</where>
order by a.CREATE_TIME desc
</select>
</mapper>
<?xml version="1.0" encoding="UTF-8"?>
<!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.social.mapper.TAttaInfoMapper">
<resultMap id="tAttaInfoMap" type="com.yifu.cloud.plus.v1.yifu.social.entity.TAttaInfo">
<id property="id" column="id"/>
<result property="attaName" column="atta_name"/>
<result property="attaSrc" column="atta_src"/>
<result property="attaSize" column="atta_size"/>
<result property="attaType" column="atta_type"/>
<result property="createBy" column="create_by"/>
<result property="createTime" column="create_time"/>
<result property="relationType" column="relation_type"/>
<result property="domainId" column="domain_id"/>
</resultMap>
<sql id="Base_Column_List">
a.id,
a.atta_name,
a.atta_src,
a.atta_size,
a.atta_type,
a.create_by,
a.create_time,
a.relation_type,
a.domain_id
</sql>
<sql id="tAttaInfo_where">
<if test="tAttaInfo != null">
<if test="tAttaInfo.id != null and tAttaInfo.id.trim() != ''">
AND a.id = #{tAttaInfo.id}
</if>
<if test="tAttaInfo.attaName != null and tAttaInfo.attaName.trim() != ''">
AND a.atta_name = #{tAttaInfo.attaName}
</if>
<if test="tAttaInfo.attaSrc != null and tAttaInfo.attaSrc.trim() != ''">
AND a.atta_src = #{tAttaInfo.attaSrc}
</if>
<if test="tAttaInfo.attaSize != null">
AND a.atta_size = #{tAttaInfo.attaSize}
</if>
<if test="tAttaInfo.attaType != null and tAttaInfo.attaType.trim() != ''">
AND a.atta_type = #{tAttaInfo.attaType}
</if>
<if test="tAttaInfo.createBy != null and tAttaInfo.createBy.trim() != ''">
AND a.create_by = #{tAttaInfo.createBy}
</if>
<if test="tAttaInfo.createTime != null">
AND a.create_time = #{tAttaInfo.createTime}
</if>
<if test="tAttaInfo.relationType != null and tAttaInfo.relationType.trim() != ''">
AND a.relation_type = #{tAttaInfo.relationType}
</if>
<if test="tAttaInfo.domainId != null and tAttaInfo.domainId.trim() != ''">
AND a.domain_id = #{tAttaInfo.domainId}
</if>
</if>
</sql>
<!--tAttaInfo简单分页查询-->
<select id="getTAttaInfoPage" resultMap="tAttaInfoMap">
SELECT
<include refid="Base_Column_List"/>
FROM t_atta_info a
<where>
1=1
<include refid="tAttaInfo_where"/>
</where>
</select>
<!--tAttaInfo 获取list-->
<select id="getTAttaInfoList" resultMap="tAttaInfoMap">
SELECT
<include refid="Base_Column_List"/>
FROM t_atta_info a
<where>
1=1
<include refid="tAttaInfo_where"/>
</where>
</select>
<!--根据domainId 获取list-->
<select id="getTAttaInfoListByDoMainId" resultMap="tAttaInfoMap">
SELECT
<include refid="Base_Column_List"/>
FROM t_atta_info a
where a.domain_id = #{domainId}
</select>
<select id="getKeenAtta" resultMap="tAttaInfoMap">
SELECT
<include refid="Base_Column_List"/>
FROM t_atta_info a
<where>
1=1
<if test="values != null and values.size() > 0">
and a.domain_id in
<foreach collection="values" item="param" index="index" open="(" close=")" separator=",">
#{param}
</foreach>
</if>
and a.create_time >= #{dayStart}
and a.relation_type in ("3","4")
</where>
</select>
<update id="updateDomainId">
update t_atta_info
<trim prefix="set" suffixOverrides=",">
domain_id=#{domainId}
</trim>
WHERE
<if test="ids != null and ids.size() > 0">
id in
<foreach collection="ids" item="param" index="index" open="(" close=")" separator=",">
#{param}
</foreach>
</if>
</update>
<select id="getAttaByApplyId" resultMap="tAttaInfoMap">
SELECT
<include refid="Base_Column_List"/>
FROM t_atta_info a
where EXISTS (select 1 from m_salary_prova_atta b where b.SALARY_PROVA_ID = #{applyId} and a.id = b.ATTA_ID);
</select>
<delete id="deleteByDomainId">
delete from t_atta_info where domain_id=#{domainId}
</delete>
<delete id="deleteByDomainIdAndType">
delete from t_atta_info where domain_id=#{domainId} and relation_type = #{relationType}
</delete>
<delete id="deleteByDomainIdAndOther">
delete from t_atta_info where domain_id=#{domainId} and relation_type not in ('0','2','26','27')
</delete>
</mapper>
......@@ -181,6 +181,9 @@
<result property="graduationTime" column="GRADUATION_TIME"/>
<result property="autoFlag" column="AUTO_FLAG"/>
<result property="unitProvidentPer" column="UNIT_PROVIDENT_PER"/>
<result property="personalProvidentPer" column="PERSONAL_PROVIDENT_PER"/>
</resultMap>
<resultMap id="fundSupplementaryMap" type="com.yifu.cloud.plus.v1.yifu.social.vo.FundSupplementaryExportVo">
......@@ -965,6 +968,7 @@
c.PROVIDENT_HOUSEHOLD_NAME,
c.UNIT_PROVIDENG_CARDINAL,
c.UNIT_PROVIDENT_PER,
c.PERSONAL_PROVIDENT_PER,
a.EMP_MOBILE,
a.EDUCATION_NAME,
a.SCHOOL_NAME,
......@@ -1573,6 +1577,7 @@
SELECT count(1) from (
SELECT 1
FROM t_dispatch_info a
left join t_social_info s on s.id=a.SOCIAL_ID
<where>
<include refid="where_getSocialDisRecord"/>
</where>
......@@ -2254,6 +2259,11 @@
<sql id="where_getSocialDisRecord">
a.DELETE_FLAG = 0
AND a.social_id is not null
<if test='tDispatchInfo.socialId != null and tDispatchInfo.socialId.trim() == "0" '>
AND a.social_id = #{tDispatchInfo.socialId}
</if>
<!-- dispatch-status 未提交1待审核2审核通过3审核不通过4办理完成5待SSC审核 -->
<if test='tDispatchInfo.auditStatus != null and tDispatchInfo.auditStatus.trim() == "0" '>
AND a.STATUS in ('2','4')
......@@ -2350,6 +2360,9 @@
<sql id="where_getSocialPersionDisRecord">
a.DELETE_FLAG = 0
AND a.social_id is not null
<if test='tDispatchInfo.socialId != null and tDispatchInfo.socialId.trim() == "0" '>
AND a.social_id = #{tDispatchInfo.socialId}
</if>
<!-- dispatch-status 未提交1待审核2审核通过3审核不通过4办理完成5待SSC审核 -->
<if test='tDispatchInfo.auditStatus != null and tDispatchInfo.auditStatus.trim() == "0"'>
AND a.STATUS in ('2','4')
......
......@@ -106,6 +106,8 @@
<result property="payCollectFlag" column="PAY_COLLECT_FLAG"/>
<result property="bpoFlag" column="BPO_FLAG"/>
<result property="secondIndicatorBelong" column="SECOND_INDICATOR_BELONG"/>
<result property="personalProvidentPercent" column="PERSONAL_PROVIDENT_PERCENT"/>
</resultMap>
<resultMap id="tPaymentInfoSumMap" type="com.yifu.cloud.plus.v1.yifu.social.vo.TPaymentInfoExportVo">
<result property="empName" column="EMP_NAME"/>
......@@ -151,6 +153,7 @@
<result property="providentPercent" column="PROVIDENT_PERCENT"/>
<result property="unitProvidentSum" column="UNIT_PROVIDENT_SUM"/>
<result property="personalProidentSet" column="PERSONAL_PROIDENT_SET"/>
<result property="personalProvidentPercent" column="PERSONAL_PROVIDENT_PERCENT"/>
<result property="socialCreateName" column="SOCIAL_CREATE_NAME"/>
<result property="socialCreateTime" column="SOCIAL_CREATE_TIME"/>
<result property="fundCreateName" column="FUND_CREATE_NAME"/>
......@@ -248,6 +251,7 @@
<result property="providentPercent" column="PROVIDENT_PERCENT"/>
<result property="unitProvidentSum" column="UNIT_PROVIDENT_SUM"/>
<result property="personalProidentSet" column="PERSONAL_PROIDENT_SET"/>
<result property="personalProvidentPercent" column="PERSONAL_PROVIDENT_PERCENT"/>
<result property="personalProvidentSum" column="PERSONAL_PROVIDENT_SUM"/>
<result property="createName" column="CREATE_NAME"/>
<result property="createTime" column="CREATE_TIME"/>
......@@ -356,6 +360,7 @@
<result property="providentPercent" column="PROVIDENT_PERCENT"/>
<result property="unitProvidentSum" column="UNIT_PROVIDENT_SUM"/>
<result property="personalProidentSet" column="PERSONAL_PROIDENT_SET"/>
<result property="personalProvidentPercent" column="PERSONAL_PROVIDENT_PERCENT"/>
<result property="personalProvidentSum" column="PERSONAL_PROVIDENT_SUM"/>
<result property="keyGroup" column="keyGroup"/>
<result property="secondIndicatorBelong" column="SECOND_INDICATOR_BELONG"/>
......@@ -1966,6 +1971,7 @@
c.PERSONAL_UNEMPLOYMENT_PER,
c.PROVIDENT_NO AS PROVIDENT_NO,
c.PERSONAL_PROIDENT_SET,
c.PERSONAL_PROVIDENT_PERCENT,
c.UNIT_PROVIDENT_SET,
c.PROVIDENT_PERCENT,
c.UNIT_PROVIDENT_SUM
......@@ -2028,6 +2034,7 @@
w.PERSONAL_UNEMPLOYMENT_PER,
MAX( w.PROVIDENT_NO ) AS PROVIDENT_NO,
MAX( w.PERSONAL_PROIDENT_SET ) AS PERSONAL_PROIDENT_SET,
w.PERSONAL_PROVIDENT_PERCENT,
SUM( w.UNIT_PROVIDENT_SET ) AS UNIT_PROVIDENT_SET,
SUM( w.PROVIDENT_PERCENT ) AS PROVIDENT_PERCENT,
SUM( w.UNIT_PROVIDENT_SUM ) AS UNIT_PROVIDENT_SUM
......@@ -2092,6 +2099,7 @@
a.UNIT_PROVIDENT_SET,
a.PROVIDENT_PERCENT,
a.PERSONAL_PROIDENT_SET,
a.PERSONAL_PROVIDENT_PERCENT,
a.UNIT_PROVIDENT_SUM
FROM t_payment_info a
<where>
......@@ -2161,6 +2169,7 @@
a.UNIT_PROVIDENT_SET,
a.PROVIDENT_PERCENT,
a.PERSONAL_PROIDENT_SET,
a.PERSONAL_PROVIDENT_PERCENT,
SUM( a.UNIT_PROVIDENT_SUM ) AS UNIT_PROVIDENT_SUM
FROM t_payment_info a
<where>
......@@ -2224,6 +2233,7 @@
a.UNIT_PROVIDENT_SUM,
a.PERSONAL_PROIDENT_SET,
a.PERSONAL_PROVIDENT_SUM,
a.PERSONAL_PROVIDENT_PERCENT,
CASE WHEN a.PUSH_STATUS=0 THEN "已推送"
WHEN a.PUSH_STATUS =1 THEN "未推送"
ELSE a.PUSH_STATUS END as "PUSH_STATUS",
......@@ -2310,6 +2320,7 @@
MAX( w.PERSONAL_PROIDENT_SET ) AS PERSONAL_PROIDENT_SET,
SUM( w.UNIT_PROVIDENT_SET ) AS UNIT_PROVIDENT_SET,
SUM( w.PROVIDENT_PERCENT ) AS PROVIDENT_PERCENT,
w.PERSONAL_PROVIDENT_PERCENT,
w.SOCIAL_CREATE_NAME,
w.SOCIAL_CREATE_TIME,
MAX( w.FUND_CREATE_NAME ) AS FUND_CREATE_NAME,
......@@ -2361,6 +2372,7 @@
a.UNIT_PROVIDENT_SET,
a.PROVIDENT_PERCENT,
a.PERSONAL_PROIDENT_SET,
a.PERSONAL_PROVIDENT_PERCENT,
a.CREATE_NAME AS SOCIAL_CREATE_NAME,
DATE_FORMAT(a.CREATE_TIME,'%Y-%m-%d') AS SOCIAL_CREATE_TIME,
NULL AS FUND_CREATE_NAME,
......@@ -2419,6 +2431,7 @@
a.UNIT_PROVIDENT_SET,
a.PROVIDENT_PERCENT,
a.PERSONAL_PROIDENT_SET,
a.PERSONAL_PROVIDENT_PERCENT,
NULL AS SOCIAL_CREATE_NAME,
NULL AS SOCIAL_CREATE_TIME,
a.CREATE_NAME AS FUND_CREATE_NAME,
......
package com.yifu.cloud.plus.v1.yifu.admin.api.vo;
import com.yifu.cloud.plus.v1.yifu.admin.api.entity.SysUser;
import lombok.Data;
import java.io.Serializable;
......@@ -26,4 +27,6 @@ public class AllUserNaVo implements Serializable {
* @Date 17:05 2022/9/19
**/
private List<String> userIds;
private HashMap<String, SysUser> allUser;
}
......@@ -111,7 +111,7 @@ public class UserController {
@GetMapping("/getInfoByUsername")
public UserInfo infoAPI(@RequestParam(required = true, name = "username") String username,
@RequestParam(required = false, name = "password") String password) {
SysUser user = userService.getOne(Wrappers.<SysUser>query().lambda().eq(SysUser::getUsername, username));
SysUser user = userService.getOne(Wrappers.<SysUser>query().lambda().eq(SysUser::getUsername, username).last(CommonConstants.LAST_ONE_SQL));
if (Common.isNotNull(user)) {
userService.ldapLogin(username, password, user);
}
......@@ -342,6 +342,30 @@ public class UserController {
return naVo;
}
/**
* @return
* @Author huyc
* @Description 获取所有用户id
* @Date 10:20 2024/12/6
* @Param
**/
@Inner
@PostMapping(value = {"/inner/getAllUserIdDTO"})
public AllUserNaVo getAllUserIdDTO() {
AllUserNaVo naVo = new AllUserNaVo();
List<SysUser> sysUsers = userService.list(Wrappers.<SysUser>query().lambda()
.eq(SysUser::getDelFlag, CommonConstants.ZERO_STRING)
.eq(SysUser::getType, CommonConstants.ZERO_STRING));
if (Common.isNotEmpty(sysUsers)) {
HashMap<String, SysUser> nameMap = new HashMap<>();
for (SysUser u : sysUsers) {
nameMap.put(u.getNickname(), u);
}
naVo.setAllUser(nameMap);
}
return naVo;
}
/**
* @return
* @Author fxj
......
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