Commit af988b1e authored by wangpeng's avatar wangpeng

Merge remote-tracking branch 'origin/master'

parents 3b397381 c44e5289
......@@ -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;
}
......@@ -107,7 +107,7 @@ public class TEmployeeContractInfo extends BaseEntity {
* 合同起始时间
*/
@NotBlank(message = "合同起始时间不能为空")
@ExcelAttribute(name = "合同起始时间", needExport = true)
@ExcelAttribute(name = "合同起始时间", needExport = true,isNotEmpty = true)
@Schema(description = "合同起始时间", name = "contractStart")
@JsonFormat(shape= JsonFormat.Shape.STRING,pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+08:00")
private Date contractStart;
......
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));
}
/**
......
......@@ -23,7 +23,6 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.pig4cloud.plugin.excel.annotation.RequestExcel;
import com.pig4cloud.plugin.excel.vo.ErrorMessage;
import com.yifu.cloud.plus.v1.yifu.archives.entity.TCustomerInfo;
import com.yifu.cloud.plus.v1.yifu.archives.entity.TCutsomerDataPermisson;
import com.yifu.cloud.plus.v1.yifu.archives.entity.TEmpChangeInfo;
import com.yifu.cloud.plus.v1.yifu.archives.entity.TSettleDomain;
import com.yifu.cloud.plus.v1.yifu.archives.service.TEmpChangeInfoService;
......@@ -145,6 +144,20 @@ public class TEmpChangeInfoController {
,@RequestParam(required = false) String customerId, @RequestParam(required = false) String flag) {
return new R<>(tEmpChangeInfoService.getAllDeptPagePermission(page,departName, nameOrNo, customerId,flag));
}
/**
* 分页查询获取所有项目名称(缩小范围)
* @param page 分页对象
* @return
*/
@Operation(description = "分页查询缩小范围")
@GetMapping("/getDeptPagePermission" )
public R<IPage<TSettleDomain>> getDeptPagePermission(Page page, @RequestParam(required = false) String departName
,@RequestParam(required = false) String nameOrNo
,@RequestParam(required = false) String customerId, @RequestParam(required = false) String flag) {
return new R<>(tEmpChangeInfoService.getDeptPagePermission(page,departName, nameOrNo, customerId,flag));
}
/**
* 获取所有项目名称
* @return R
......
......@@ -22,12 +22,12 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yifu.cloud.plus.v1.yifu.archives.entity.TCustomerInfo;
import com.yifu.cloud.plus.v1.yifu.archives.entity.TDepartSettlementInfo;
import com.yifu.cloud.plus.v1.yifu.archives.entity.TSettleDomain;
import com.yifu.cloud.plus.v1.yifu.archives.service.TDepartSettlementInfoService;
import com.yifu.cloud.plus.v1.yifu.archives.service.TSettleDomainService;
import com.yifu.cloud.plus.v1.yifu.archives.vo.*;
import com.yifu.cloud.plus.v1.yifu.common.core.constant.ClientNameConstants;
import com.yifu.cloud.plus.v1.yifu.common.core.constant.CommonConstants;
import com.yifu.cloud.plus.v1.yifu.common.core.util.Common;
import com.yifu.cloud.plus.v1.yifu.common.core.util.R;
......@@ -76,11 +76,21 @@ public class TSettleDomainController {
@Operation(summary = "分页查询", description = "分页查询")
@GetMapping("/page")
public R<IPage<TSettleDomain>> getTSettleDomainPage(Page<TSettleDomain> page, TSettleDomain tSettleDomain) {
YifuUser user = SecurityUtils.getUser();
menuUtil.setAuthSql(user, tSettleDomain);
if (Common.isNotNull(tSettleDomain.getAuthSql()) && tSettleDomain.getAuthSql().contains("or a.dept_id")) {
tSettleDomain.setAuthSql(tSettleDomain.getAuthSql().replace("or a.dept_id", "or a.id "));
long roleId = 1839501715787390978L;
boolean isSsc = false;
List<Long> roleList = user.getClientRoleMap().get(ClientNameConstants.CLIENT_MVP);
for (Long role : roleList) {
if (role == roleId) {
isSsc = true;
break;
}
}
if (!isSsc) {
menuUtil.setAuthSql(user, tSettleDomain);
if (Common.isNotNull(tSettleDomain.getAuthSql()) && tSettleDomain.getAuthSql().contains("or a.dept_id")) {
tSettleDomain.setAuthSql(tSettleDomain.getAuthSql().replace("or a.dept_id", "or a.id "));
}
}
return R.ok(tSettleDomainService.getPage(page, tSettleDomain));
}
......@@ -364,7 +374,8 @@ public class TSettleDomainController {
@PostMapping("/updateProjectInfo")
public R updateProjectInfo(@RequestBody String jsonStr) {
try {
jsonStr = URLDecoder.decode(jsonStr, CommonConstants.UTF8).replace("=", "");
String json = jsonStr.replaceAll("%(?![0-9a-fA-F]{2})", "%25");
jsonStr = URLDecoder.decode(json, CommonConstants.UTF8).replace("=", "");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
......@@ -394,7 +405,8 @@ public class TSettleDomainController {
@PostMapping("/updateProjectStopStatus")
public R updateProjectStopStatus(@RequestBody String jsonStr) {
try {
jsonStr = URLDecoder.decode(jsonStr, CommonConstants.UTF8).replace("=", "");
String json = jsonStr.replaceAll("%(?![0-9a-fA-F]{2})", "%25");
jsonStr = URLDecoder.decode(json, CommonConstants.UTF8).replace("=", "");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
......@@ -413,7 +425,8 @@ public class TSettleDomainController {
@PostMapping("/updateProjectServerTeam")
public R<Boolean> updateProjectServerTeam(@RequestBody String jsonStr) {
try {
jsonStr = URLDecoder.decode(jsonStr, CommonConstants.UTF8).replace("=", "");
String json = jsonStr.replaceAll("%(?![0-9a-fA-F]{2})", "%25");
jsonStr = URLDecoder.decode(json, CommonConstants.UTF8).replace("=", "");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
......
......@@ -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: 详情
......
......@@ -22,7 +22,6 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.pig4cloud.plugin.excel.vo.ErrorMessage;
import com.yifu.cloud.plus.v1.yifu.archives.entity.TCustomerInfo;
import com.yifu.cloud.plus.v1.yifu.archives.entity.TCutsomerDataPermisson;
import com.yifu.cloud.plus.v1.yifu.archives.entity.TEmpChangeInfo;
import com.yifu.cloud.plus.v1.yifu.archives.entity.TSettleDomain;
import com.yifu.cloud.plus.v1.yifu.archives.vo.TEmpChangeInfoNewVO;
......@@ -86,7 +85,18 @@ public interface TEmpChangeInfoService extends IService<TEmpChangeInfo> {
*/
IPage<TSettleDomain> getAllDeptPagePermission(Page page, String departName, String nameOrNo, String customerId,String flag);
/**
* 分页获取项目名称缩小可见范围
*
* @author wzb
* @param page
* @param departName
* @param nameOrNo
* @param customerId
* @param flag
* @return {@link IPage< TSettleDomain>}
*/
IPage<TSettleDomain> getDeptPagePermission(Page page, String departName, String nameOrNo, String customerId,String flag);
IPage<TSettleDomain> getAllDeptPage(Page page, String deptName, String nameOrNo, String customerId,String flag);
R<Boolean> changeEmpProArcNew(TEmpChangeInfoNewVO changeVo);
......
......@@ -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());
......
......@@ -368,6 +368,36 @@ public class TEmpChangeInfoServiceImpl extends ServiceImpl<TEmpChangeInfoMapper,
}
/**
* 分页获取项目名称缩小可见范围
*
* @author wzb
* @param page
* @param departName
* @param nameOrNo
* @param customerId
* @param flag
* @return {@link IPage< TSettleDomain>}
*/
@Override
public IPage<TSettleDomain> getDeptPagePermission(Page page, String departName, String nameOrNo, String customerId,String flag) {
YifuUser user = SecurityUtils.getUser();
String userId=user.getId();
// SSC开发组-1668092146875969537L 超管1
long roleId = 1668092146875969537L;
boolean isSsc = this.haveRole(user, roleId);
long roleIdMan = 1839501715787390978L;
boolean isAdmin =this.haveRole(user, roleIdMan);
if (!isSsc) {
isSsc = this.haveRole(user, 1L);
}
if (isSsc || isAdmin) {
userId = "-999";
}
return tSettleDomainMapper.getPagePerMission(page, userId, departName, nameOrNo, customerId, flag);
}
/**
* @Description: 检测是否有某个角色权限
* @Author: hgw
......
......@@ -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());
}
}
}
......
......@@ -150,8 +150,9 @@ public class TPersonnelRosterServiceImpl extends ServiceImpl<TPersonnelRosterMap
@Override
public void everyMonthUpdateRoster() {
// 清空重新生成
String dataMonth = DateUtil.addMonth(-1);
baseMapper.delete(Wrappers.<TPersonnelRoster>query().lambda()
.eq(TPersonnelRoster::getDataCreateMonth,DateUtil.getYearAndMonth(LocalDateTime.now(),0)));
.eq(TPersonnelRoster::getDataCreateMonth, dataMonth));
TPersonnelRosterSearchVo searchVo = new TPersonnelRosterSearchVo();
long count = baseMapper.getTPersonnelRosterCount(searchVo);
List<TPersonnelRoster> list;
......@@ -186,7 +187,7 @@ public class TPersonnelRosterServiceImpl extends ServiceImpl<TPersonnelRosterMap
r.setBankProvince(rosterVo.getBankProvince());
}
}
r.setDataCreateMonth(DateUtil.getYearAndMonth(LocalDateTime.now(),0));
r.setDataCreateMonth(dataMonth);
}
this.saveBatch(list);
}
......
......@@ -85,6 +85,12 @@
<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}
</if>
......@@ -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
......@@ -357,7 +364,8 @@
FROM t_complete_monitor a
left join t_employee_project p on a.DEPT_NO=p.DEPT_NO
left join t_employee_info e on p.EMP_ID=e.id
left join t_emp_contact_info ec on e.id=ec.EMP_ID
left join (select contact.EMP_NAME ,contact.RELATION_TYPE,contact.ADDRESS,contact.TEL,contact.EMP_ID from
t_emp_contact_info contact group by contact.EMP_ID) ec on e.id=ec.EMP_ID
<where>
p.DELETE_FLAG = '0' and p.PROJECT_STATUS = 0
<include refid="tCompleteMonitor_where"/>
......
......@@ -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>
......
......@@ -320,7 +320,7 @@
FROM
t_settle_domain a
<if test="userId != null and userId.trim() != '-999'">
LEFT JOIN t_cutsomer_data_permisson b ON b.SETTLE_DOMAIN_NO = a.DEPART_NO
LEFT JOIN t_cutsomer_data_permisson b ON b.SETTLE_DOMAIN_NO = a.DEPART_NO and b.STATUS = '0'
</if>
WHERE a.DELETE_FLAG = '0'
/* 2023-6-12 11:12:15 hgw根据 */
......
......@@ -241,6 +241,7 @@ public class YifuTokenEndpoint {
if (null != userInfo && null != userInfo.getOpenid()) {
SysUser user = new SysUser();
user.setWxOpenid(userInfo.getOpenid());
user.setWxNickName(userInfo.getNickname());
R<UserInfo> result = HttpDaprUtil.invokeMethodPost(daprUpmsProperties.getAppUrl(), daprUpmsProperties.getAppId()
, "/user/inner/getSysUserByWxOpenId", user, UserInfo.class, SecurityConstants.FROM_IN);
OAuth2AccessToken oAuth2AccessToken = null;
......
......@@ -96,7 +96,8 @@ public class TCertInfoServiceImpl extends ServiceImpl<TCertInfoMapper, TCertInfo
// 导入字段封装
initBusiDict(otherMap, CommonConstants.ZERO_INT);
try {
jsonStr = URLDecoder.decode(jsonStr, CommonConstants.UTF8).replace("=", "");
String json = jsonStr.replaceAll("%(?![0-9a-fA-F]{2})", "%25");
jsonStr = URLDecoder.decode(json, CommonConstants.UTF8).replace("=", "");
util1 = new ExcelUtil<>(TCertInfo.class);
util1.getJsonStringToList(jsonStr, initMapForImport(otherMap));
List<TCertInfo> list = util1.getEntityList();
......@@ -315,7 +316,8 @@ public class TCertInfoServiceImpl extends ServiceImpl<TCertInfoMapper, TCertInfo
// 导入字段封装
initBusiDict(otherMap, CommonConstants.ZERO_INT);
try {
jsonStr = URLDecoder.decode(jsonStr, CommonConstants.UTF8).replace("=", "");
String json = jsonStr.replaceAll("%(?![0-9a-fA-F]{2})", "%25");
jsonStr = URLDecoder.decode(json, CommonConstants.UTF8).replace("=", "");
util = new ExcelUtil<>(TCertInfo.class);
util.getJsonStringToList(jsonStr, initMapForImport(otherMap));
List<TCertInfo> list = util.getEntityList();
......
......@@ -154,6 +154,10 @@ public interface CacheConstants {
String PAYMENT_DISPATCH_BATCH_ADD_IMPORT = "payment_dispatch_batch_add_import";
String MOBILE_CHANGE_LIMIT = "mobile_change_limit";
String QUESTION_FEEDBACK_LIMIT = "question_feedback_limit";
String PAYMENT_SEARCH_REPEAT = "payment_search_repeat";
String PAYMENT_EXPORT_REPEAT = "payment_export_repeat";
......
......@@ -632,4 +632,6 @@ public interface CommonConstants {
List<String> socialInfoStatus = Stream.of("1","3","5","7").collect(Collectors.toList());
String USER_DIR = "user.dir";
String DOUBLE_LINE = "//";
}
......@@ -1619,6 +1619,15 @@ public class DateUtil {
return sf.format(new Date());
}
public static String getLastDay(){
SimpleDateFormat sf = new SimpleDateFormat(DateUtil.ISO_EXPANDED_DATE_FORMAT);
Calendar instance = Calendar.getInstance();
instance.setTime(new Date());
int lastDay = instance.getActualMaximum(Calendar.DAY_OF_MONTH);
instance.set(Calendar.DAY_OF_MONTH, lastDay);
return sf.format(instance.getTime());
}
/**
* @Description: 返回当前年月日字符串
* @Author: hgw
......
......@@ -98,6 +98,10 @@ public class R<T> implements Serializable {
public static <T> R<T> other(int code, String msg) {
return restResult(null, code, msg);
}
public static <T> R<T> other(int code, String msg,T data) {
return restResult(data, code, msg);
}
public static <T> R<T> other(T data, String msg, int code) {
return restResult(data, code, msg);
}
......
......@@ -118,7 +118,7 @@ public class SocialDaprUtils {
* @return
**/
public R<TPaymentVo> getPaymentSocialAndFound(TPaymentInfo infoVo) {
R<TPaymentVo> listVo = HttpDaprUtil.invokeMethodPost(daprProperties.getAppUrl(),daprProperties.getAppId(),"/tincomedetail/inner/getPaymentSocialAndFound", JSON.toJSONString(infoVo), TPaymentInfo.class, SecurityConstants.FROM_IN);
R<TPaymentVo> listVo = HttpDaprUtil.invokeMethodPost(daprProperties.getAppUrl(),daprProperties.getAppId(),"/tpaymentinfo/inner/getPaymentSocialAndFound", JSON.toJSONString(infoVo), TPaymentVo.class, SecurityConstants.FROM_IN);
if (Common.isEmpty(listVo)){
return R.failed("查询人员缴费库数据失败!");
}
......
......@@ -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
......
......@@ -30,7 +30,7 @@ import javax.validation.constraints.NotBlank;
import java.time.LocalDateTime;
/**
* 银企付款查询卡号所属行号记录表
* 银企付款查询卡号所属行号记录表——有可能重复
*
* @author hgw
* @date 2024-11-18 17:04:20
......
package com.yifu.cloud.plus.v1.ekp.vo;
import com.alibaba.excel.annotation.ExcelProperty;
import lombok.Data;
import java.io.Serializable;
/**
* @Author hgw
* @Date 2024-11-18 10:23:18
* @Description EKP银企付款配置表
* @Version 1.0
*/
@Data
public class EkpBankCodeConfiglVo implements Serializable {
@ExcelProperty("开户行MVP")
private String bankNameMvp;
// 收款银行
@ExcelProperty("收款账号开户行")
private String fdRecipientBank;
@ExcelProperty("收款银行人行行号")
private String fdRecipientBankCode;
}
package com.yifu.cloud.plus.v1.ekp.controller;
import com.icbc.api.IcbcApiException;
import com.icbc.api.response.MybankEnterpriseAccountQuerybankinfoResponseV1;
import com.yifu.cloud.plus.v1.ekp.entity.EkpBankCodeSet;
import com.yifu.cloud.plus.v1.ekp.service.IcbcTransactionFlowQueryService;
import com.yifu.cloud.plus.v1.yifu.common.core.util.Common;
......@@ -109,4 +108,30 @@ public class IcbcTransactionFlowQueryController {
}
return icbcTransactionFlowQueryService.querybankinfo(cardNo);
}
/**
* 指令对账单明细下载
*
* @param
* @param
* @return
*/
@Operation(summary = "指令对账单明细下载", description = "指令对账单明细下载")
@PostMapping("/enterprisePayDowninstr")
public R getEnterprisePayDowninstr() {
return icbcTransactionFlowQueryService.getEnterprisePayDowninstr();
}
/**
* 电子回单下载功能
*
* @param
* @param
* @return
*/
@Operation(summary = "电子回单下载功能", description = "电子回单下载功能")
@PostMapping("/entermeatebillreceive")
public R getMeatebillreceive() {
return icbcTransactionFlowQueryService.getMeatebillreceive();
}
}
......@@ -60,7 +60,8 @@ public class TEkpSocialInfoController {
@PostMapping("/updateScoialStatus")
public R updateScoialStatus(@RequestBody String jsonStr) {
try {
jsonStr = URLDecoder.decode(jsonStr, CommonConstants.UTF8).replace("=", "");
String json = jsonStr.replaceAll("%(?![0-9a-fA-F]{2})", "%25");
jsonStr = URLDecoder.decode(json, CommonConstants.UTF8).replace("=", "");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
......
......@@ -19,6 +19,7 @@ package com.yifu.cloud.plus.v1.ekp.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.yifu.cloud.plus.v1.ekp.entity.EkpBankGrantDetail;
import com.yifu.cloud.plus.v1.ekp.vo.EkpBankCodeConfiglVo;
import com.yifu.cloud.plus.v1.ekp.vo.EkpBankExcelVo;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
......@@ -64,4 +65,17 @@ public interface EkpBankGrantDetailMapper extends BaseMapper<EkpBankGrantDetail>
// 获取明细表ID来更新状态
List<EkpBankGrantDetail> getListByParentId(@Param("fdParentId") String fdParentId);
/**
* @Description: 获取工行开户行配置表
* @Author: hgw
* @Date: 2024/12/25 16:05
* @return: java.util.List<com.yifu.cloud.plus.v1.ekp.vo.EkpBankCodeConfiglVo>
**/
List<EkpBankCodeConfiglVo> getEkpBankCodeConfiglVo();
// 更新工资支出的 银企出纳
void updateGongZiZhiChuTable(@Param("fdId") String fdId, @Param("chuNaName") String chuNaName);
// 更新工资支出Main表的 银企出纳
void updateGongZiZhiChuMain(@Param("fdId") String fdId, @Param("chuNaName") String chuNaName);
}
......@@ -19,10 +19,12 @@ package com.yifu.cloud.plus.v1.ekp.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.yifu.cloud.plus.v1.ekp.entity.EkpBankGrantDetail;
import com.yifu.cloud.plus.v1.ekp.vo.EkpBankCodeConfiglVo;
import com.yifu.cloud.plus.v1.ekp.vo.EkpBankExcelVo;
import org.apache.ibatis.annotations.Param;
import java.util.List;
import java.util.Map;
/**
* 发放结果明细(银企付款任务)
......@@ -61,4 +63,26 @@ public interface EkpBankGrantDetailService extends IService<EkpBankGrantDetail>
// 获取明细表ID来更新状态
List<EkpBankGrantDetail> getListByParentId(String fdParentId);
// 获取工行开户行配置表
Map<String, EkpBankCodeConfiglVo> getEkpBankCodeConfiglVo();
/**
* @param fdId 工资支出 表id
* @param chuNaName 银企出纳名字
* @Description: 更新 工资支出 的 银企出纳名字
* @Author: hgw
* @Date: 2024/12/26 11:41
* @return: void
**/
void updateGongZiZhiChuTable(String fdId, String chuNaName);
/**
* @param fdId 工资支出 表id
* @param chuNaName 银企出纳名字
* @Description: 更新 工资支出Main表 的 银企出纳名字
* @Author: hgw
* @Date: 2024/12/26 11:41
* @return: void
**/
void updateGongZiZhiChuMain(String fdId, String chuNaName);
}
......@@ -2,7 +2,6 @@ package com.yifu.cloud.plus.v1.ekp.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.icbc.api.IcbcApiException;
import com.icbc.api.response.MybankEnterpriseAccountQuerybankinfoResponseV1;
import com.yifu.cloud.plus.v1.ekp.entity.EkpBankCodeSet;
import com.yifu.cloud.plus.v1.ekp.entity.EkpSocialInfo;
import com.yifu.cloud.plus.v1.yifu.common.core.util.R;
......@@ -31,4 +30,20 @@ public interface IcbcTransactionFlowQueryService extends IService<EkpSocialInfo>
**/
R<EkpBankCodeSet> querybankinfo(String cardNo);
/**
* @Description: 查询账单明细文件名
* @Author: huyc
* @Date: 2024-12-12
* @return: R
**/
R getEnterprisePayDowninstr();
/**
* @Description: 电子回单下载功能
* @Author: huyc
* @Date: 2024-12-13
* @return: R
**/
R getMeatebillreceive();
}
......@@ -20,11 +20,14 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.yifu.cloud.plus.v1.ekp.entity.EkpBankGrantDetail;
import com.yifu.cloud.plus.v1.ekp.mapper.EkpBankGrantDetailMapper;
import com.yifu.cloud.plus.v1.ekp.service.EkpBankGrantDetailService;
import com.yifu.cloud.plus.v1.ekp.vo.EkpBankCodeConfiglVo;
import com.yifu.cloud.plus.v1.ekp.vo.EkpBankExcelVo;
import lombok.extern.log4j.Log4j2;
import org.springframework.stereotype.Service;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* 发放结果明细(银企付款任务)
......@@ -96,4 +99,34 @@ public class EkpBankGrantDetailServiceImpl extends ServiceImpl<EkpBankGrantDetai
return baseMapper.getListByParentId(fdParentId);
}
/**
* @Description: 获取工行开户行配置表
* @Author: hgw
* @Date: 2024/12/25 16:10
* @return: java.util.Map<java.lang.String, com.yifu.cloud.plus.v1.ekp.vo.EkpBankCodeConfiglVo>
**/
@Override
public Map<String, EkpBankCodeConfiglVo> getEkpBankCodeConfiglVo() {
Map<String, EkpBankCodeConfiglVo> returnMap = new HashMap<>();
// getBankNameMvp 是非空切唯一的,可以做key
List<EkpBankCodeConfiglVo> list = baseMapper.getEkpBankCodeConfiglVo();
if (list != null && !list.isEmpty()) {
for (EkpBankCodeConfiglVo vo : list) {
returnMap.put(vo.getBankNameMvp(), vo);
}
}
return returnMap;
}
@Override
public void updateGongZiZhiChuTable(String fdId, String chuNaName) {
baseMapper.updateGongZiZhiChuTable(fdId, chuNaName);
}
@Override
public void updateGongZiZhiChuMain(String fdId, String chuNaName) {
baseMapper.updateGongZiZhiChuMain(fdId, chuNaName);
}
}
......@@ -3,7 +3,6 @@ package com.yifu.cloud.plus.v1.ekp.service.impl;
import com.alibaba.excel.EasyExcelFactory;
import com.alibaba.excel.support.ExcelTypeEnum;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.icbc.api.DefaultIcbcClient;
......@@ -22,6 +21,7 @@ import com.yifu.cloud.plus.v1.ekp.entity.*;
import com.yifu.cloud.plus.v1.ekp.mapper.EkpSocialInfoMapper;
import com.yifu.cloud.plus.v1.ekp.service.*;
import com.yifu.cloud.plus.v1.ekp.vo.EkpBankAttaReturnVo;
import com.yifu.cloud.plus.v1.ekp.vo.EkpBankCodeConfiglVo;
import com.yifu.cloud.plus.v1.ekp.vo.EkpBankExcelVo;
import com.yifu.cloud.plus.v1.ekp.vo.EkpBankResultVo;
import com.yifu.cloud.plus.v1.yifu.common.core.constant.CommonConstants;
......@@ -407,7 +407,8 @@ public class IcbcTransactionFlowIssueServiceImpl extends ServiceImpl<EkpSocialIn
EkpBankAttaReturnVo vo = new EkpBankAttaReturnVo();
List<EkpBankExcelVo> list;
// 获取配置的行号
Map<String, EkpBankCodeConfiglVo> bankMap = ekpBankGrantDetailService.getEkpBankCodeConfiglVo();
// 1主表整体下载
if (CommonConstants.ONE_STRING.equals(type)) {
EkpBankPayTask main = ekpBankPayTaskService.getById(fdId);
......@@ -422,7 +423,7 @@ public class IcbcTransactionFlowIssueServiceImpl extends ServiceImpl<EkpSocialIn
}
// 新下载
list = ekpBankGrantDetailService.getEkpBankExcelVoByIdAndMain(fdId);
R<EkpBankAttaReturnVo> returnVoR = getNewFileByMain(fdId, type, vo, list, main);
R<EkpBankAttaReturnVo> returnVoR = getNewFileByMain(fdId, type, vo, list, main, bankMap);
redisUtil.remove(redisKey);
return returnVoR;
} else if (Common.isNotNull(main.getFdAttaSrc())) {
......@@ -443,7 +444,7 @@ public class IcbcTransactionFlowIssueServiceImpl extends ServiceImpl<EkpSocialIn
}
// 新下载
list = ekpBankGrantDetailService.getEkpBankExcelVoByIdAndDetail(fdId);
R<EkpBankAttaReturnVo> returnVoR = getNewFileByDetail(fdId, type, vo, list, detail);
R<EkpBankAttaReturnVo> returnVoR = getNewFileByDetail(fdId, type, vo, list, detail, bankMap);
redisUtil.remove(redisKey);
return returnVoR;
} else if (Common.isNotNull(detail.getFdAttaSrc())) {
......@@ -482,9 +483,10 @@ public class IcbcTransactionFlowIssueServiceImpl extends ServiceImpl<EkpSocialIn
* @Date: 2024/11/20 17:08
* @return: com.yifu.cloud.plus.v1.yifu.common.core.util.R<com.yifu.cloud.plus.v1.ekp.vo.EkpBankAttaReturnVo>
**/
private R<EkpBankAttaReturnVo> getNewFileByMain(String fdId, String type, EkpBankAttaReturnVo vo, List<EkpBankExcelVo> list, EkpBankPayTask main) {
private R<EkpBankAttaReturnVo> getNewFileByMain(String fdId, String type, EkpBankAttaReturnVo vo
, List<EkpBankExcelVo> list, EkpBankPayTask main, Map<String, EkpBankCodeConfiglVo> bankMap) {
if (list != null && !list.isEmpty()) {
EkpBankAtta atta = getNewFileCore(fdId, type, vo, list);
EkpBankAtta atta = getNewFileCore(fdId, type, vo, list, bankMap);
if (atta != null) {
main.setFdAttaName(atta.getFdAttaName());
main.setFdAttaSrc(atta.getFdAttaSrc());
......@@ -510,9 +512,10 @@ public class IcbcTransactionFlowIssueServiceImpl extends ServiceImpl<EkpSocialIn
* @Date: 2024/11/20 17:08
* @return: com.yifu.cloud.plus.v1.yifu.common.core.util.R<com.yifu.cloud.plus.v1.ekp.vo.EkpBankAttaReturnVo>
**/
private R<EkpBankAttaReturnVo> getNewFileByDetail(String fdId, String type, EkpBankAttaReturnVo vo, List<EkpBankExcelVo> list, EkpBankGrantDetail main) {
private R<EkpBankAttaReturnVo> getNewFileByDetail(String fdId, String type, EkpBankAttaReturnVo vo
, List<EkpBankExcelVo> list, EkpBankGrantDetail main, Map<String, EkpBankCodeConfiglVo> bankMap) {
if (list != null && !list.isEmpty()) {
EkpBankAtta atta = getNewFileCore(fdId, type, vo, list);
EkpBankAtta atta = getNewFileCore(fdId, type, vo, list, bankMap);
if (atta != null) {
main.setFdAttaName(atta.getFdAttaName());
main.setFdAttaSrc(atta.getFdAttaSrc());
......@@ -527,18 +530,26 @@ public class IcbcTransactionFlowIssueServiceImpl extends ServiceImpl<EkpSocialIn
return R.failed("未找到待发放的明细数据,下载失败!!");
}
private EkpBankAtta getNewFileCore(String fdId, String type, EkpBankAttaReturnVo vo, List<EkpBankExcelVo> list) {
private EkpBankAtta getNewFileCore(String fdId, String type, EkpBankAttaReturnVo vo, List<EkpBankExcelVo> list
, Map<String, EkpBankCodeConfiglVo> bankMap) {
EkpBankCodeSet codeSet;
R<EkpBankCodeSet> bankInfoQuery;
EkpBankCodeConfiglVo bankVo;
// 组装
for (EkpBankExcelVo excelVo : list) {
if (Common.isEmpty(excelVo.getFdRecipientBankCode())) {
// 查询行号
bankInfoQuery = icbcTransactionFlowQueryService.querybankinfo(excelVo.getFdPayeeAccount());
if (bankInfoQuery != null && bankInfoQuery.getCode() == CommonConstants.SUCCESS) {
if (bankInfoQuery != null && bankInfoQuery.getCode() == CommonConstants.SUCCESS && bankInfoQuery.getData() != null) {
codeSet = bankInfoQuery.getData();
excelVo.setFdRecipientBankCode(codeSet.getFdRecipientBankCode());
excelVo.setFdRecipientBank(codeSet.getFdRecipientBank());
} else if (Common.isNotNull(excelVo.getFdRecipientBank())) {
bankVo = bankMap.get(excelVo.getFdRecipientBank());
if (bankVo != null) {
excelVo.setFdRecipientBankCode(bankVo.getFdRecipientBankCode());
excelVo.setFdRecipientBank(bankVo.getFdRecipientBank());
}
}
}
}
......@@ -719,6 +730,9 @@ public class IcbcTransactionFlowIssueServiceImpl extends ServiceImpl<EkpSocialIn
ekpBankPayTaskService.updateById(main);
// 同步更新明细的发放时间、发放状态
ekpBankGrantDetailService.updateStatusByGrant(fdId);
// 更新 工资支出 的 银企出纳名字
ekpBankGrantDetailService.updateGongZiZhiChuTable(fdId, submitUser);
ekpBankGrantDetailService.updateGongZiZhiChuMain(fdId, submitUser);
}
redisUtil.remove(redisKey);
return returnR;
......
......@@ -6,14 +6,8 @@ import com.fasterxml.jackson.databind.ObjectMapper;
import com.icbc.api.DefaultIcbcClient;
import com.icbc.api.IcbcApiException;
import com.icbc.api.IcbcConstants;
import com.icbc.api.request.JftApiB2bpayTransqueryRequestV1;
import com.icbc.api.request.JftApiPayB2bpayGenpreorderRequestV1;
import com.icbc.api.request.MybankEnterpriseAccountQuerybankinfoRequestV1;
import com.icbc.api.request.MybankEnterpriseTradeQhisdRequestV1;
import com.icbc.api.response.JftApiB2bpayTransqueryResponseV1;
import com.icbc.api.response.JftApiPayB2bpayGenpreorderResponseV1;
import com.icbc.api.response.MybankEnterpriseAccountQuerybankinfoResponseV1;
import com.icbc.api.response.MybankEnterpriseTradeQhisdResponseV1;
import com.icbc.api.request.*;
import com.icbc.api.response.*;
import com.yifu.cloud.plus.v1.ekp.config.EkpEntryProperties;
import com.yifu.cloud.plus.v1.ekp.config.IcbcConfigProperties;
import com.yifu.cloud.plus.v1.ekp.entity.EkpBankCodeSet;
......@@ -22,7 +16,6 @@ import com.yifu.cloud.plus.v1.ekp.mapper.EkpSocialInfoMapper;
import com.yifu.cloud.plus.v1.ekp.service.EkpBankCodeSetService;
import com.yifu.cloud.plus.v1.ekp.service.IcbcTransactionFlowQueryService;
import com.yifu.cloud.plus.v1.ekp.vo.EKPEntryPushParam;
import com.yifu.cloud.plus.v1.yifu.common.core.util.Common;
import com.yifu.cloud.plus.v1.yifu.common.core.util.DateUtil;
import com.yifu.cloud.plus.v1.yifu.common.core.util.R;
import io.micrometer.core.instrument.util.StringUtils;
......@@ -498,6 +491,87 @@ public class IcbcTransactionFlowQueryServiceImpl extends ServiceImpl<EkpSocialIn
}
}
@Override
public R getEnterprisePayDowninstr() {
DefaultIcbcClient client = new DefaultIcbcClient(icbcConfigProperties.getAppId(), IcbcConstants.SIGN_TYPE_CA_SM_ICBC,
icbcConfigProperties.getAppPrivateKey(), IcbcConstants.CHARSET_UTF8, IcbcConstants.FORMAT_JSON, null,
null, null, icbcConfigProperties.getCaSm(), null);
client.setIcbc_ca(icbcConfigProperties.getCaSmIcbc());
try {
MybankEnterprisePayDowninstrRequestV1.MybankEnterprisePayDowninstrRequestBizV1 bizContent =
new MybankEnterprisePayDowninstrRequestV1.MybankEnterprisePayDowninstrRequestBizV1();
MybankEnterprisePayDowninstrRequestV1 request = new MybankEnterprisePayDowninstrRequestV1();
// 请对照接口文档用bizContent.setxxx()方法对业务上送数据进行赋值
bizContent.setTransCode("DOWNINSTR");
bizContent.setTranDate("20241216");
bizContent.setTranTime("103231001");
bizContent.setBeginDate("20241216");
bizContent.setEndDate("20241216");
bizContent.setPayeeAccNo("6217788306000007495");
bizContent.setLanguage("zh_CN");
bizContent.setfSeqNo("WX1734341241340");
bizContent.setServiceCode("PAYENT");
// bizContent.setQryfSeqno("PAYENT411erji17023");
request.setServiceUrl("https://gw.open.icbc.com.cn/api/mybank/enterprise/pay/downinstr/V1");
request.setBizContent(bizContent);
MybankEnterprisePayDowninstrResponseV1 response = client.execute(request);
if (response.isSuccess()) {
// 业务成功处理
return R.ok();
} else {
return R.failed();
}
} catch (Exception e) {
e.printStackTrace();
}
return R.ok();
}
@Override
public R getMeatebillreceive() {
DefaultIcbcClient client = new DefaultIcbcClient(icbcConfigProperties.getAppId(), IcbcConstants.SIGN_TYPE_CA_SM_ICBC,
icbcConfigProperties.getAppPrivateKey(), IcbcConstants.CHARSET_UTF8, IcbcConstants.FORMAT_JSON, null,
null, null, icbcConfigProperties.getCaSm(), null);
client.setIcbc_ca(icbcConfigProperties.getCaSmIcbc());
try {
MybankEnterpriseAccountTradeinfoMeatebillreceiveRequestV1.MybankEnterpriseAccountDownebillRequesBizV1 bizContent =
new MybankEnterpriseAccountTradeinfoMeatebillreceiveRequestV1.MybankEnterpriseAccountDownebillRequesBizV1();
MybankEnterpriseAccountTradeinfoMeatebillreceiveRequestV1 request =
new MybankEnterpriseAccountTradeinfoMeatebillreceiveRequestV1();
bizContent.setTransCode("DownEBill");
bizContent.setBankCode("6217788306000007495");
bizContent.setCis("");
bizContent.setLoginId("");
bizContent.setTranDate("");
bizContent.setTranTime("");
bizContent.setfSeqno("");
bizContent.setAreaCode("");
bizContent.setNetCode("");
bizContent.setTellerNo("");
bizContent.setWorkDate("");
bizContent.setTranSerialNo("");
bizContent.setAcctNo("");
bizContent.setCurrencyType("");
bizContent.setReqReserved1("");
bizContent.setReqReserved2("");
bizContent.setReqReserved3("");
bizContent.setReqReserved4("");
bizContent.setfSeqno("");
request.setServiceUrl("https://gw.open.icbc.com.cn/api/mybank/enterprise/account/tradeinfo/meatebillreceive/V1");
request.setBizContent(bizContent);
MybankEnterpriseAccountTradeinfoMeatebillreceiveResponseV1 response =
client.execute(request);
if (response.isSuccess()) {
return R.ok();
} else {
return R.failed();
}
} catch (Exception e) {
e.printStackTrace();
}
return R.ok();
}
private void initValue(MybankEnterpriseTradeQhisdResponseV1.MybankEnterpriseTradeQhisdResponseRdV1 entry,
EKPEntryPushParam pushParam,String bankName,String bankNo) throws ParseException {
pushParam.setFd_recipName(entry.getRecipName());
......
......@@ -90,12 +90,16 @@
<select id="getEkpBankExcelVoByIdAndMain" resultType="com.yifu.cloud.plus.v1.ekp.vo.EkpBankExcelVo">
<include refid="Base_Excel_Sql"/>
(a.fd_handle_status is null or a.fd_handle_status = '待发放') and a.fd_parent_id = #{fdParentId}
GROUP BY a.fd_id
ORDER BY (a.fd_serial_number-0) asc
</select>
<!-- 查询主表下的所有待发放数据 -->
<select id="getEkpBankExcelVoByIdAndDetail" resultType="com.yifu.cloud.plus.v1.ekp.vo.EkpBankExcelVo">
<include refid="Base_Excel_Sql"/>
a.fd_handle_status = '待发放' and a.fd_id = #{fdId}
GROUP BY a.fd_id
ORDER BY (a.fd_serial_number-0) asc
</select>
<!-- 查询编号是否重复 -->
......@@ -177,4 +181,21 @@
</if>
</update>
<!-- 查询工行开户行配置表 -->
<select id="getEkpBankCodeConfiglVo" resultType="com.yifu.cloud.plus.v1.ekp.vo.EkpBankCodeConfiglVo">
SELECT
bank_name_mvp bankNameMvp,bank_name fdRecipientBank,bank_code fdRecipientBankCode
FROM ekp_bank_code_config a
where a.bank_name_mvp is not null and a.bank_name_mvp != ''
</select>
<!-- 更新工资支出 的 银企出纳 -->
<update id="updateGongZiZhiChuTable" >
UPDATE ekp_fd9be224c214ad0992aa SET fd_bank_pay_chu_na = #{chuNaName} WHERE fd_id = #{fdId};
</update>
<!-- 更新工资支出Main表的 银企出纳 -->
<update id="updateGongZiZhiChuMain" >
UPDATE modeling_model_main SET extend_data_xml=JSON_SET(extend_data_xml,'$[1].fd_bank_pay_chu_na',#{chuNaName}) WHERE fd_id = #{fdId};
</update>
</mapper>
......@@ -156,7 +156,20 @@ public class DeptChangeCheckParam implements Serializable {
* 客户编码
*/
@Schema(description = "客户编码")
private String oldCustomerCode;
@Schema(description = "结算状态")
private String settleStatus;
@Schema(description = "支出结算状态")
private String paySettleStatus;
@Schema(description = "预估结算状态")
private String ygSettleStatus;
@Schema(description = "预估支出结算状态")
private String ygPaySettleStatus;
}
package com.yifu.cloud.plus.v1.yifu.insurances.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.Data;
import java.io.Serializable;
/**
* @author huyc
* @description EKP结算信息表
* @date 2024-12-25 17:37:21
*/
@Data
@Tag(name = "EKP结算信息表")
public class DeptSettleVo implements Serializable {
/**
* 主键id
*/
private String id;
/**
* 结算id
*/
@Schema(description = "结算id")
private String detailId;
@Schema(description = "结算状态")
private String settleStatus;
@Schema(description = "支出结算状态")
private String paySettleStatus;
}
package com.yifu.cloud.plus.v1.yifu.insurances.mapper.ekp;
import com.yifu.cloud.plus.v1.yifu.insurances.vo.DeptSettleVo;
import com.yifu.cloud.plus.v1.yifu.insurances.vo.EkpInsuranceViewVo;
import com.yifu.cloud.plus.v1.yifu.insurances.vo.EkpSocialViewVo;
import com.yifu.cloud.plus.v1.yifu.insurances.vo.SettleVo;
......@@ -24,6 +25,24 @@ public interface EkpSettleMapper {
*/
SettleVo getSettle(String id);
/**
* 获取结算信息
*
* @author zhaji
* @param id
* @return {@link SettleVo}
*/
DeptSettleVo getDeptSettle(String id);
/**
* 获取结算信息
*
* @author zhaji
* @param id
* @return {@link SettleVo}
*/
DeptSettleVo getDeptYgSettle(String id);
/**
* 从商险订单明细中获取当前保单的结算状态
*
......
......@@ -3,6 +3,7 @@ package com.yifu.cloud.plus.v1.yifu.insurances.service.ekp;
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.insurances.entity.TInsuranceTypeRate;
import com.yifu.cloud.plus.v1.yifu.insurances.vo.DeptSettleVo;
import com.yifu.cloud.plus.v1.yifu.insurances.vo.EkpInsuranceViewVo;
import com.yifu.cloud.plus.v1.yifu.insurances.vo.EkpSocialViewVo;
import com.yifu.cloud.plus.v1.yifu.insurances.vo.SettleVo;
......@@ -25,6 +26,10 @@ public interface EkpSettleService extends IService<TInsuranceTypeRate> {
*/
SettleVo getSettle(String id);
DeptSettleVo getDeptSettle(String id);
DeptSettleVo getDeptYgSettle(String id);
/**
* 从商险订单明细中获取当前保单的结算状态
*
......
......@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.yifu.cloud.plus.v1.yifu.insurances.entity.TInsuranceTypeRate;
import com.yifu.cloud.plus.v1.yifu.insurances.mapper.ekp.EkpSettleMapper;
import com.yifu.cloud.plus.v1.yifu.insurances.service.ekp.EkpSettleService;
import com.yifu.cloud.plus.v1.yifu.insurances.vo.DeptSettleVo;
import com.yifu.cloud.plus.v1.yifu.insurances.vo.EkpInsuranceViewVo;
import com.yifu.cloud.plus.v1.yifu.insurances.vo.EkpSocialViewVo;
import com.yifu.cloud.plus.v1.yifu.insurances.vo.SettleVo;
......@@ -31,6 +32,16 @@ public class EkpSettleServiceImpl implements EkpSettleService {
return ekpSettleMapper.getSettle(id);
}
@Override
public DeptSettleVo getDeptSettle(String id) {
return ekpSettleMapper.getDeptSettle(id);
}
@Override
public DeptSettleVo getDeptYgSettle(String id) {
return ekpSettleMapper.getDeptYgSettle(id);
}
@Override
public String getSettleStatusFromEkpInsuranceDetail(String id) {
return ekpSettleMapper.getSettleStatusFromEkpInsuranceDetail(id);
......
......@@ -468,6 +468,10 @@ public interface TInsuranceDetailService extends IService<TInsuranceDetail> {
SettleVo getInsuranceDetailSettleStatus(String detailId, String defaultSettleId);
DeptSettleVo deptUpdGetSettleStatusFromEkpInsuranceDetail(String detailId, String defaultSettleId);
DeptSettleVo deptYgGetSettleStatusFromEkpInsuranceDetail(String detailId, String defaultSettleId);
/**
* @param changeDeptVo
* @Description: ekp费用划转,商险划转项目
......
......@@ -11,6 +11,13 @@
<result property="actualStatus" column="fd_3b05bd5ed0b976" jdbcType="VARCHAR"/>
</resultMap>
<resultMap id="BaseDeptResultMap" type="com.yifu.cloud.plus.v1.yifu.insurances.vo.DeptSettleVo">
<id property="id" column="fd_id" jdbcType="VARCHAR"/>
<result property="detailId" column="fd_3b0a5743acab7e" jdbcType="VARCHAR"/>
<result property="settleStatus" column="fd_3adfe6ec6a8cbe" jdbcType="VARCHAR"/>
<result property="paySettleStatus" column="fd_3adfe6eda67236" jdbcType="VARCHAR"/>
</resultMap>
<resultMap id="BaseResultStatusMap" type="com.yifu.cloud.plus.v1.yifu.insurances.vo.EkpInsuranceViewVo">
<id property="id" column="detailsId" jdbcType="VARCHAR"/>
<result property="incomeSettleFlag" column="earningStatus" jdbcType="VARCHAR"/>
......@@ -37,6 +44,10 @@
detailsId,earningStatus,receiptStatus,zhichuEarningStatus,payStatus,orderType
</sql>
<sql id="Base_Column_Dept">
fd_id,fd_3b0a5743acab7e,fd_3adfe6ec6a8cbe,fd_3adfe6eda67236
</sql>
<select id="getSettle" resultMap="BaseResultMap">
select
<include refid="Base_Column_List"></include>
......@@ -55,6 +66,24 @@
fd_3b0a5743acab7e = #{id} limit 1
</select>
<select id="getDeptSettle" resultMap="BaseDeptResultMap">
select
<include refid="Base_Column_Dept"></include>
from
ekp_e96a0a28442447c81ec0
where
fd_3b0a5743acab7e = #{id} and fd_3adfe6af71a1cc = '实缴' limit 1
</select>
<select id="getDeptYgSettle" resultMap="BaseDeptResultMap">
select
<include refid="Base_Column_Dept"></include>
from
ekp_e96a0a28442447c81ec0
where
fd_3b0a5743acab7e = #{id} and fd_3adfe6af71a1cc = '预估' limit 1
</select>
<!-- 根据结算单编码获取视图信息 -->
<select id="selectSettleStatusBySettleNo" resultMap="BaseResultStatusMap">
select
......
......@@ -194,6 +194,29 @@ public class SocialTask {
log.info("------------2定时任务推送社保士兵-定时任务结束------------");
}
/**
* @Description: 1定时任务推送税友
* @Author: hgw
* @Date: 2024-12-9 17:00:02
**/
public void doPushFriend() {
log.info("------------1定时任务推送税友-定时任务开始------------");
HttpDaprUtil.invokeMethodPost(daprProperties.getAppUrl(),daprProperties.getAppId(),
"/tsocialfriend/inner/doPushFriend","", Object.class, SecurityConstants.FROM_IN);
log.info("------------1定时任务推送税友-定时任务结束------------");
}
/**
* @Description: 2定时任务获取税友
* @Author: hgw
* @Date: 2024-12-9 16:59:56
**/
public void doGetFriendByRequestId() {
log.info("------------2定时任务获取税友-定时任务开始------------");
HttpDaprUtil.invokeMethodPost(daprProperties.getAppUrl(),daprProperties.getAppId(),
"/tsocialfriend/inner/doGetFriendByRequestId","", Object.class, SecurityConstants.FROM_IN);
log.info("------------2定时任务获取税友-定时任务结束------------");
}
/**
* @Description: 3每日定时任务推送社保士兵审核结果查询
* @Author: hgw
......
......@@ -174,7 +174,8 @@ public class SysUserPermissionController {
@PostMapping("/autoCreateAuth")
public R<String> autoCreateAuth(@RequestBody String jsonStr) {
try {
jsonStr = URLDecoder.decode(jsonStr, CommonConstants.UTF8).replace("=", "");
String json = jsonStr.replaceAll("%(?![0-9a-fA-F]{2})", "%25");
jsonStr = URLDecoder.decode(json, CommonConstants.UTF8).replace("=", "");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
......
/*
* Copyright (c) 2018-2025, lengleng All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* Neither the name of the yifu4cloud.com developer nor the names of its
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
* Author: lengleng (wangiegie@gmail.com)
*/
package com.yifu.cloud.plus.v1.yifu.salary.entity;
import com.alibaba.excel.annotation.ExcelProperty;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.yifu.cloud.plus.v1.yifu.common.core.constant.ExcelAttribute;
import com.yifu.cloud.plus.v1.yifu.common.mybatis.base.BaseEntity;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.hibernate.validator.constraints.Length;
import javax.validation.constraints.NotBlank;
import java.util.Date;
/**
* @author fxj
* @date 2024-12-18 15:39:56
*/
@Data
@TableName("t_mobile_change_info")
@EqualsAndHashCode(callSuper = true)
@Schema(description = "")
public class TMobileChangeInfo extends BaseEntity {
/**
* id
*/
@TableId(type = IdType.ASSIGN_ID)
@ExcelProperty("id")
@Schema(description = "id")
private String id;
/**
* 申请人姓名
*/
@ExcelAttribute(name = "申请人姓名", isNotEmpty = true, errorInfo = "申请人姓名不能为空", maxLength = 59)
@NotBlank(message = "申请人姓名不能为空")
@Length(max = 59, message = "申请人姓名不能超过59个字符")
@ExcelProperty("申请人姓名")
@Schema(description = "申请人姓名")
private String applyName;
/**
* 身份证号
*/
@ExcelAttribute(name = "身份证号", isNotEmpty = true, errorInfo = "身份证号不能为空", maxLength = 20)
@NotBlank(message = "身份证号不能为空")
@Length(max = 20, message = "身份证号不能超过20个字符")
@ExcelProperty("身份证号")
@Schema(description = "身份证号")
private String empIdcard;
/**
* 原号码
*/
@ExcelAttribute(name = "原号码", maxLength = 15)
@Length(max = 15, message = "原号码不能超过15个字符")
@ExcelProperty("原号码")
@Schema(description = "原号码")
private String mobileOld;
/**
* 新号码
*/
@ExcelAttribute(name = "新号码", maxLength = 15)
@Length(max = 15, message = "新号码不能超过15个字符")
@ExcelProperty("新号码")
@Schema(description = "新号码")
private String mobileNew;
/**
* 处理状态:待处理、处理中、已处理、手动更新
*/
@ExcelAttribute(name = "处理状态:待处理、处理中、已处理、手动更新", maxLength = 10)
@Length(max = 10, message = "处理状态:待处理、处理中、已处理、手动更新不能超过10个字符")
@ExcelProperty("处理状态:待处理、处理中、已处理、手动更新")
@Schema(description = "处理状态:待处理、处理中、已处理、手动更新")
private String handleStatus;
/**
* 处理人
*/
@ExcelAttribute(name = "处理人", maxLength = 20)
@Length(max = 20, message = "处理人不能超过20个字符")
@ExcelProperty("处理人")
@Schema(description = "处理人")
private String handleOperator;
/**
* 处理完成时间
*/
@ExcelAttribute(name = "处理完成时间", isDate = true)
@ExcelProperty("处理完成时间")
@Schema(description = "处理完成时间")
private Date handleFinishTime;
/**
* 处理说明
*/
@ExcelAttribute(name = "处理说明", maxLength = 200)
@Length(max = 200, message = "处理说明不能超过200个字符")
@ExcelProperty("处理说明")
@Schema(description = "处理说明")
private String handleRemark;
/**
* 验证码
*/
@TableField(exist = false)
private String sendCode;
}
/*
* Copyright (c) 2018-2025, lengleng All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* Neither the name of the yifu4cloud.com developer nor the names of its
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
* Author: lengleng (wangiegie@gmail.com)
*/
package com.yifu.cloud.plus.v1.yifu.salary.entity;
import com.alibaba.excel.annotation.ExcelProperty;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.yifu.cloud.plus.v1.yifu.common.core.constant.ExcelAttribute;
import com.yifu.cloud.plus.v1.yifu.common.mybatis.base.BaseEntity;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.hibernate.validator.constraints.Length;
import javax.validation.constraints.NotBlank;
import java.util.Date;
/**
* @author fxj
* @date 2024-12-18 15:39:57
*/
@Data
@TableName("t_question_feedback_info")
@EqualsAndHashCode(callSuper = true)
@Schema(description = "")
public class TQuestionFeedbackInfo extends BaseEntity {
/**
* id
*/
@TableId(type = IdType.ASSIGN_ID)
@ExcelProperty("id")
@Schema(description = "id")
private String id;
/**
* 反馈人姓名
*/
@ExcelAttribute(name = "反馈人姓名", isNotEmpty = true, errorInfo = "反馈人姓名不能为空", maxLength = 20)
@NotBlank(message = "反馈人姓名不能为空")
@Length(max = 20, message = "反馈人姓名不能超过20个字符")
@ExcelProperty("反馈人姓名")
@Schema(description = "反馈人姓名")
private String name;
/**
* 手机号码
*/
@ExcelAttribute(name = "手机号码",isPhone = true, isNotEmpty = true, errorInfo = "手机号码不能为空", maxLength = 20)
@NotBlank(message = "手机号码不能为空")
@Length(max = 20, message = "手机号码不能超过20个字符")
@ExcelProperty("手机号码")
@Schema(description = "手机号码")
private String mobile;
/**
* 你遇到的问题
*/
@ExcelAttribute(name = "你遇到的问题", maxLength = 200)
@Length(max = 200, message = "你遇到的问题不能超过200个字符")
@ExcelProperty("你遇到的问题")
@Schema(description = "你遇到的问题")
private String question;
/**
* 处理状态:0待处理、1处理中、2已处理、3手动更新
*/
@ExcelAttribute(name = "处理状态:待处理、处理中、已处理、手动更新", maxLength = 10)
@Length(max = 10, message = "处理状态:待处理、处理中、已处理、手动更新不能超过10个字符")
@ExcelProperty("处理状态:待处理、处理中、已处理、手动更新")
@Schema(description = "处理状态:待处理、处理中、已处理、手动更新")
private String handleStatus;
/**
* 处理人
*/
@ExcelAttribute(name = "处理人", maxLength = 20)
@Length(max = 20, message = "处理人不能超过20个字符")
@ExcelProperty("处理人")
@Schema(description = "处理人")
private String handleOperator;
/**
* 处理完成时间
*/
@ExcelAttribute(name = "处理完成时间", isDate = true)
@ExcelProperty("处理完成时间")
@Schema(description = "处理完成时间")
private Date handleFinishTime;
/**
* 处理说明
*/
@ExcelAttribute(name = "处理说明", maxLength = 200)
@Length(max = 200, message = "处理说明不能超过200个字符")
@ExcelProperty("处理说明")
@Schema(description = "处理说明")
private String handleRemark;
/**
* @Author fxj
* @Description 问题反馈附件ID
* @Date 16:49 2024/12/18
* @Param
* @return
**/
@TableField(exist = false)
private String attaIds;
}
......@@ -105,7 +105,7 @@ public class TSalaryAtta extends BaseEntity {
/**
* 类型:0工资;1工程工资;2暂停发;3自定义项暂停发;4打印记录;5核准表打印记录;6:非扣税项;8自有员工附件
* ;9财务回执附件;10换人换卡;11薪资原表;12劳务费或稿酬已有发薪记录;13薪资特殊值(3500、5000)
* 14:薪资详情导出组装的附件
* 14:薪资详情导出组装的附件 15:工资查询问题反馈附件
*/
@ExcelAttribute(name = "类型")
@HeadFontStyle(fontHeightInPoints = 11)
......
......@@ -212,4 +212,8 @@ public class TSalaryEmployee extends BaseEntity {
@TableField(exist = false)
private String salaryGiveTime;
// 工资查询用户保存专用
@TableField(exist = false)
private String nickName;
}
/*
* Copyright (c) 2018-2025, lengleng All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* Neither the name of the yifu4cloud.com developer nor the names of its
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
* Author: lengleng (wangiegie@gmail.com)
*/
package com.yifu.cloud.plus.v1.yifu.salary.vo;
import com.yifu.cloud.plus.v1.yifu.salary.entity.TMobileChangeInfo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.time.LocalDateTime;
/**
* @author fxj
* @date 2024-12-18 15:39:56
*/
@Data
public class TMobileChangeInfoSearchVo extends TMobileChangeInfo {
/**
* 多选导出或删除等操作
*/
@Schema(description = "选中ID,多个逗号分割")
private String ids;
/**
* 创建时间区间 [开始时间,结束时间]
*/
@Schema(description = "创建时间区间")
private LocalDateTime[] createTimes;
/**
* @Author fxj
* 查询数据起
**/
@Schema(description = "查询limit 开始")
private int limitStart;
/**
* @Author fxj
* 查询数据止
**/
@Schema(description = "查询limit 数据条数")
private int limitEnd;
}
/*
* Copyright (c) 2018-2025, lengleng All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* Neither the name of the yifu4cloud.com developer nor the names of its
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
* Author: lengleng (wangiegie@gmail.com)
*/
package com.yifu.cloud.plus.v1.yifu.salary.vo;
import com.alibaba.excel.annotation.ExcelProperty;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.yifu.cloud.plus.v1.yifu.common.core.constant.ExcelAttribute;
import com.yifu.cloud.plus.v1.yifu.common.core.vo.RowIndex;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import org.hibernate.validator.constraints.Length;
import javax.validation.constraints.NotBlank;
import java.io.Serializable;
import java.util.Date;
/**
* @author fxj
* @date 2024-12-18 15:39:56
*/
@Data
public class TMobileChangeInfoVo extends RowIndex implements Serializable {
/**
* id
*/
@TableId(type = IdType.ASSIGN_ID)
@NotBlank(message = "id 不能为空")
@Length(max = 32, message = "id 不能超过32 个字符")
@ExcelAttribute(name = "id", isNotEmpty = true, errorInfo = "id 不能为空", maxLength = 32)
@Schema(description = "id")
@ExcelProperty("id")
private String id;
/**
* 申请人姓名
*/
@NotBlank(message = "申请人姓名 不能为空")
@Length(max = 59, message = "申请人姓名 不能超过59 个字符")
@ExcelAttribute(name = "申请人姓名", isNotEmpty = true, errorInfo = "申请人姓名 不能为空", maxLength = 59)
@Schema(description = "申请人姓名")
@ExcelProperty("申请人姓名")
private String applyName;
/**
* 身份证号
*/
@NotBlank(message = "身份证号 不能为空")
@Length(max = 20, message = "身份证号 不能超过20 个字符")
@ExcelAttribute(name = "身份证号", isNotEmpty = true, errorInfo = "身份证号 不能为空", maxLength = 20)
@Schema(description = "身份证号")
@ExcelProperty("身份证号")
private String empIdcard;
/**
* 原号码
*/
@Length(max = 15, message = "原号码 不能超过15 个字符")
@ExcelAttribute(name = "原号码", maxLength = 15)
@Schema(description = "原号码")
@ExcelProperty("原号码")
private String mobileOld;
/**
* 新号码
*/
@Length(max = 15, message = "新号码 不能超过15 个字符")
@ExcelAttribute(name = "新号码", maxLength = 15)
@Schema(description = "新号码")
@ExcelProperty("新号码")
private String mobileNew;
/**
* 处理状态:待处理、处理中、已处理、手动更新
*/
@Length(max = 10, message = "处理状态:待处理、处理中、已处理、手动更新 不能超过10 个字符")
@ExcelAttribute(name = "处理状态:待处理、处理中、已处理、手动更新", maxLength = 10)
@Schema(description = "处理状态:待处理、处理中、已处理、手动更新")
@ExcelProperty("处理状态:待处理、处理中、已处理、手动更新")
private String handleStatus;
/**
* 处理人
*/
@Length(max = 20, message = "处理人 不能超过20 个字符")
@ExcelAttribute(name = "处理人", maxLength = 20)
@Schema(description = "处理人")
@ExcelProperty("处理人")
private String handleOperator;
/**
* 处理完成时间
*/
@ExcelAttribute(name = "处理完成时间", isDate = true)
@Schema(description = "处理完成时间")
@ExcelProperty("处理完成时间")
private Date handleFinishTime;
/**
* 处理说明
*/
@Length(max = 200, message = "处理说明 不能超过200 个字符")
@ExcelAttribute(name = "处理说明", maxLength = 200)
@Schema(description = "处理说明")
@ExcelProperty("处理说明")
private String handleRemark;
/**
* 创建人id
*/
@Length(max = 64, message = "创建人id 不能超过64 个字符")
@ExcelAttribute(name = "创建人id", maxLength = 64)
@Schema(description = "创建人id")
@ExcelProperty("创建人id")
private String createBy;
/**
* 创建人姓名
*/
@Length(max = 64, message = "创建人姓名 不能超过64 个字符")
@ExcelAttribute(name = "创建人姓名", maxLength = 64)
@Schema(description = "创建人姓名")
@ExcelProperty("创建人姓名")
private String createName;
/**
* 创建时间
*/
@ExcelAttribute(name = "创建时间", isDate = true)
@Schema(description = "创建时间")
@ExcelProperty("创建时间")
private Date createTime;
/**
* 更新人id
*/
@Length(max = 32, message = "更新人id 不能超过32 个字符")
@ExcelAttribute(name = "更新人id", maxLength = 32)
@Schema(description = "更新人id")
@ExcelProperty("更新人id")
private String updateBy;
/**
* 更新时间
*/
@ExcelAttribute(name = "更新时间", isDate = true)
@Schema(description = "更新时间")
@ExcelProperty("更新时间")
private Date updateTime;
}
/*
* Copyright (c) 2018-2025, lengleng All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* Neither the name of the yifu4cloud.com developer nor the names of its
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
* Author: lengleng (wangiegie@gmail.com)
*/
package com.yifu.cloud.plus.v1.yifu.salary.vo;
import com.yifu.cloud.plus.v1.yifu.salary.entity.TQuestionFeedbackInfo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.time.LocalDateTime;
/**
* @author fxj
* @date 2024-12-18 15:39:57
*/
@Data
public class TQuestionFeedbackInfoSearchVo extends TQuestionFeedbackInfo {
/**
* 多选导出或删除等操作
*/
@Schema(description = "选中ID,多个逗号分割")
private String ids;
/**
* 创建时间区间 [开始时间,结束时间]
*/
@Schema(description = "创建时间区间")
private LocalDateTime[] createTimes;
/**
* @Author fxj
* 查询数据起
**/
@Schema(description = "查询limit 开始")
private int limitStart;
/**
* @Author fxj
* 查询数据止
**/
@Schema(description = "查询limit 数据条数")
private int limitEnd;
}
/*
* Copyright (c) 2018-2025, lengleng All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* Neither the name of the yifu4cloud.com developer nor the names of its
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
* Author: lengleng (wangiegie@gmail.com)
*/
package com.yifu.cloud.plus.v1.yifu.salary.vo;
import com.alibaba.excel.annotation.ExcelProperty;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.yifu.cloud.plus.v1.yifu.common.core.constant.ExcelAttribute;
import com.yifu.cloud.plus.v1.yifu.common.core.vo.RowIndex;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import org.hibernate.validator.constraints.Length;
import javax.validation.constraints.NotBlank;
import java.io.Serializable;
import java.util.Date;
/**
* @author fxj
* @date 2024-12-18 15:39:57
*/
@Data
public class TQuestionFeedbackInfoVo extends RowIndex implements Serializable {
/**
* id
*/
@TableId(type = IdType.ASSIGN_ID)
@NotBlank(message = "id 不能为空")
@Length(max = 32, message = "id 不能超过32 个字符")
@ExcelAttribute(name = "id", isNotEmpty = true, errorInfo = "id 不能为空", maxLength = 32)
@Schema(description = "id")
@ExcelProperty("id")
private String id;
/**
* 反馈人姓名
*/
@NotBlank(message = "反馈人姓名 不能为空")
@Length(max = 20, message = "反馈人姓名 不能超过20 个字符")
@ExcelAttribute(name = "反馈人姓名", isNotEmpty = true, errorInfo = "反馈人姓名 不能为空", maxLength = 20)
@Schema(description = "反馈人姓名")
@ExcelProperty("反馈人姓名")
private String name;
/**
* 手机号码
*/
@NotBlank(message = "手机号码 不能为空")
@Length(max = 20, message = "手机号码 不能超过20 个字符")
@ExcelAttribute(name = "手机号码", isNotEmpty = true, errorInfo = "手机号码 不能为空", maxLength = 20)
@Schema(description = "手机号码")
@ExcelProperty("手机号码")
private String mobile;
/**
* 你遇到的问题
*/
@Length(max = 200, message = "你遇到的问题 不能超过200 个字符")
@ExcelAttribute(name = "你遇到的问题", maxLength = 200)
@Schema(description = "你遇到的问题")
@ExcelProperty("你遇到的问题")
private String question;
/**
* 处理状态:待处理、处理中、已处理、手动更新
*/
@Length(max = 10, message = "处理状态:待处理、处理中、已处理、手动更新 不能超过10 个字符")
@ExcelAttribute(name = "处理状态:待处理、处理中、已处理、手动更新", maxLength = 10)
@Schema(description = "处理状态:待处理、处理中、已处理、手动更新")
@ExcelProperty("处理状态:待处理、处理中、已处理、手动更新")
private String handleStatus;
/**
* 处理人
*/
@Length(max = 20, message = "处理人 不能超过20 个字符")
@ExcelAttribute(name = "处理人", maxLength = 20)
@Schema(description = "处理人")
@ExcelProperty("处理人")
private String handleOperator;
/**
* 处理完成时间
*/
@ExcelAttribute(name = "处理完成时间", isDate = true)
@Schema(description = "处理完成时间")
@ExcelProperty("处理完成时间")
private Date handleFinishTime;
/**
* 处理说明
*/
@Length(max = 200, message = "处理说明 不能超过200 个字符")
@ExcelAttribute(name = "处理说明", maxLength = 200)
@Schema(description = "处理说明")
@ExcelProperty("处理说明")
private String handleRemark;
/**
* 创建人id
*/
@Length(max = 64, message = "创建人id 不能超过64 个字符")
@ExcelAttribute(name = "创建人id", maxLength = 64)
@Schema(description = "创建人id")
@ExcelProperty("创建人id")
private String createBy;
/**
* 创建人姓名
*/
@Length(max = 64, message = "创建人姓名 不能超过64 个字符")
@ExcelAttribute(name = "创建人姓名", maxLength = 64)
@Schema(description = "创建人姓名")
@ExcelProperty("创建人姓名")
private String createName;
/**
* 创建时间
*/
@ExcelAttribute(name = "创建时间", isDate = true)
@Schema(description = "创建时间")
@ExcelProperty("创建时间")
private Date createTime;
/**
* 更新人id
*/
@Length(max = 32, message = "更新人id 不能超过32 个字符")
@ExcelAttribute(name = "更新人id", maxLength = 32)
@Schema(description = "更新人id")
@ExcelProperty("更新人id")
private String updateBy;
/**
* 更新时间
*/
@ExcelAttribute(name = "更新时间", isDate = true)
@Schema(description = "更新时间")
@ExcelProperty("更新时间")
private Date updateTime;
}
/*
* Copyright (c) 2018-2025, lengleng All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* Neither the name of the yifu4cloud.com developer nor the names of its
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
* Author: lengleng (wangiegie@gmail.com)
*/
package com.yifu.cloud.plus.v1.yifu.salary.vo;
import com.yifu.cloud.plus.v1.yifu.salary.entity.TSalaryEmployee;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.io.Serializable;
/**
* @Author fxj
* @Description 薪酬人员表--工资查询专用
* @Date 9:30 2024/12/18
* @Param
* @return
**/
@Data
@Schema(description = "薪酬人员表")
public class TSalaryEmployeeWxVo implements Serializable {
// 薪资人员信息
private TSalaryEmployee salaryEmployee;
// 微信昵称
private String wxNickName;
}
package com.yifu.cloud.plus.v1.yifu.salary.config;
import lombok.extern.slf4j.Slf4j;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
/**
* Description: 允许跨域以
*
* @author fxju
* @since JDK 1.8
*/
@Slf4j
@Configuration
public class CorsConfig implements WebMvcConfigurer {
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/**")
//是否发送Cookie
.allowCredentials(true)
//放行哪些原始域
.allowedOriginPatterns("*")
.allowedMethods(new String[]{"GET", "POST", "PUT", "DELETE"})
.allowedHeaders("*")
.exposedHeaders("*");
}
}
/*
* Copyright (c) 2018-2025, lengleng All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* Neither the name of the yifu4cloud.com developer nor the names of its
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
* Author: lengleng (wangiegie@gmail.com)
*/
package com.yifu.cloud.plus.v1.yifu.salary.controller;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yifu.cloud.plus.v1.yifu.common.core.constant.CacheConstants;
import com.yifu.cloud.plus.v1.yifu.common.core.constant.CommonConstants;
import com.yifu.cloud.plus.v1.yifu.common.core.constant.ResultConstants;
import com.yifu.cloud.plus.v1.yifu.common.core.redis.RedisDistributedLock;
import com.yifu.cloud.plus.v1.yifu.common.core.util.Common;
import com.yifu.cloud.plus.v1.yifu.common.core.util.ErrorMessage;
import com.yifu.cloud.plus.v1.yifu.common.core.util.R;
import com.yifu.cloud.plus.v1.yifu.common.core.util.RedisUtil;
import com.yifu.cloud.plus.v1.yifu.common.core.vo.YifuUser;
import com.yifu.cloud.plus.v1.yifu.common.log.annotation.SysLog;
import com.yifu.cloud.plus.v1.yifu.common.security.util.SecurityUtils;
import com.yifu.cloud.plus.v1.yifu.salary.entity.TMobileChangeInfo;
import com.yifu.cloud.plus.v1.yifu.salary.service.TMobileChangeInfoService;
import com.yifu.cloud.plus.v1.yifu.salary.vo.TMobileChangeInfoSearchVo;
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;
/**
* @author fxj
* @date 2024-12-18 15:39:56
*/
@RestController
@RequiredArgsConstructor
@RequestMapping("/tmobilechangeinfo")
@Tag(name = "管理")
public class TMobileChangeInfoController {
private final TMobileChangeInfoService tMobileChangeInfoService;
private final RedisUtil redisUtil;
/**
* 简单分页查询
*
* @param page 分页对象
* @param tMobileChangeInfo
* @return
*/
@Operation(description = "简单分页查询")
@GetMapping("/page")
public R<IPage<TMobileChangeInfo>> getTMobileChangeInfoPage(Page<TMobileChangeInfo> page, TMobileChangeInfoSearchVo tMobileChangeInfo) {
return new R<>(tMobileChangeInfoService.getTMobileChangeInfoPage(page, tMobileChangeInfo));
}
/**
* 不分页查询
*
* @param tMobileChangeInfo
* @return
*/
@Operation(summary = "不分页查询", description = "不分页查询")
@PostMapping("/noPage")
//@PreAuthorize("@pms.hasPermission('demo_tmobilechangeinfo_get')" )
public R<List<TMobileChangeInfo>> getTMobileChangeInfoNoPage(@RequestBody TMobileChangeInfoSearchVo tMobileChangeInfo) {
return R.ok(tMobileChangeInfoService.noPageDiy(tMobileChangeInfo));
}
/**
* 通过id查询
*
* @param id id
* @return R
*/
@Operation(summary = "通过id查询", description = "通过id查询:hasPermission('demo_tmobilechangeinfo_get')")
@GetMapping("/{id}")
@PreAuthorize("@pms.hasPermission('demo_tmobilechangeinfo_get')")
public R<TMobileChangeInfo> getById(@PathVariable("id") String id) {
return R.ok(tMobileChangeInfoService.getById(id));
}
/**
* 新增
*
* @param tMobileChangeInfo
* @return R
*/
@Operation(summary = "新增", description = "新增")
@SysLog("新增")
@PostMapping("/add")
public R<Boolean> save(@RequestBody TMobileChangeInfo tMobileChangeInfo) {
// 获取redis分布式事务锁
String key = CacheConstants.MOBILE_CHANGE_LIMIT + CommonConstants.DOWN_LINE_STRING + "mobileChangeFlag";
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)) {
//主动释放锁
tMobileChangeInfo.setHandleStatus(CommonConstants.ZERO_STRING);
if (null != redisUtil.get(CommonConstants.C_PREFIX.concat(tMobileChangeInfo.getMobileNew()))) {
String code = (String) redisUtil.get(CommonConstants.C_PREFIX.concat(tMobileChangeInfo.getMobileNew()));
if (!code.equals(tMobileChangeInfo.getSendCode())) {
return R.failed("验证码错误,请核实");
}
} else {
return R.failed("未找到手机号对应的验证码或验证码已超时,请重新获取");
}
return R.ok(tMobileChangeInfoService.save(tMobileChangeInfo));
} else {
return R.failed(ResultConstants.NO_GETLOCK_DATA);
}
}finally {
//主动释放锁
RedisDistributedLock.unlock(key, requestId);
}
}
/**
* 修改
*
* @param tMobileChangeInfo
* @return R
*/
@Operation(summary = "修改", description = "修改:hasPermission('demo_tmobilechangeinfo_edit')")
@SysLog("修改")
@PutMapping
@PreAuthorize("@pms.hasPermission('demo_tmobilechangeinfo_edit')")
public R<Boolean> updateById(@RequestBody TMobileChangeInfo tMobileChangeInfo) {
return R.ok(tMobileChangeInfoService.updateById(tMobileChangeInfo));
}
/**
* 通过id删除
*
* @param id id
* @return R
*/
@Operation(summary = "通过id删除", description = "通过id删除:hasPermission('demo_tmobilechangeinfo_del')")
@SysLog("通过id删除")
@DeleteMapping("/{id}")
@PreAuthorize("@pms.hasPermission('demo_tmobilechangeinfo_del')")
public R<Boolean> removeById(@PathVariable String id) {
return R.ok(tMobileChangeInfoService.removeById(id));
}
/**
* 批量导入
*
* @author fxj
* @date 2024-12-18 15:39:56
**/
@SneakyThrows
@Operation(description = "批量新增 hasPermission('demo_tmobilechangeinfo-batch-import')")
@SysLog("批量新增")
@PostMapping("/importListAdd")
@PreAuthorize("@pms.hasPermission('demo_tmobilechangeinfo-batch-import')")
public R<List<ErrorMessage>> importListAdd(@RequestBody MultipartFile file) {
return tMobileChangeInfoService.importDiy(file.getInputStream());
}
/**
* 批量导出
*
* @author fxj
* @date 2024-12-18 15:39:56
**/
@Operation(description = "导出 hasPermission('demo_tmobilechangeinfo-export')")
@PostMapping("/export")
@PreAuthorize("@pms.hasPermission('demo_tmobilechangeinfo-export')")
public void export(HttpServletResponse response, @RequestBody TMobileChangeInfoSearchVo searchVo) {
tMobileChangeInfoService.listExport(response, searchVo);
}
}
/*
* Copyright (c) 2018-2025, lengleng All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* Neither the name of the yifu4cloud.com developer nor the names of its
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
* Author: lengleng (wangiegie@gmail.com)
*/
package com.yifu.cloud.plus.v1.yifu.salary.controller;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yifu.cloud.plus.v1.yifu.common.core.constant.CacheConstants;
import com.yifu.cloud.plus.v1.yifu.common.core.constant.CommonConstants;
import com.yifu.cloud.plus.v1.yifu.common.core.constant.ResultConstants;
import com.yifu.cloud.plus.v1.yifu.common.core.redis.RedisDistributedLock;
import com.yifu.cloud.plus.v1.yifu.common.core.util.Common;
import com.yifu.cloud.plus.v1.yifu.common.core.util.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.salary.entity.TQuestionFeedbackInfo;
import com.yifu.cloud.plus.v1.yifu.salary.service.TQuestionFeedbackInfoService;
import com.yifu.cloud.plus.v1.yifu.salary.vo.TQuestionFeedbackInfoSearchVo;
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;
/**
* @author fxj
* @date 2024-12-18 15:39:57
*/
@RestController
@RequiredArgsConstructor
@RequestMapping("/tquestionfeedbackinfo")
@Tag(name = "管理")
public class TQuestionFeedbackInfoController {
private final TQuestionFeedbackInfoService tQuestionFeedbackInfoService;
/**
* 简单分页查询
*
* @param page 分页对象
* @param tQuestionFeedbackInfo
* @return
*/
@Operation(description = "简单分页查询")
@GetMapping("/page")
public R<IPage<TQuestionFeedbackInfo>> getTQuestionFeedbackInfoPage(Page<TQuestionFeedbackInfo> page, TQuestionFeedbackInfoSearchVo tQuestionFeedbackInfo) {
return new R<>(tQuestionFeedbackInfoService.getTQuestionFeedbackInfoPage(page, tQuestionFeedbackInfo));
}
/**
* 不分页查询
*
* @param tQuestionFeedbackInfo
* @return
*/
@Operation(summary = "不分页查询", description = "不分页查询")
@PostMapping("/noPage")
//@PreAuthorize("@pms.hasPermission('demo_tquestionfeedbackinfo_get')" )
public R<List<TQuestionFeedbackInfo>> getTQuestionFeedbackInfoNoPage(@RequestBody TQuestionFeedbackInfoSearchVo tQuestionFeedbackInfo) {
return R.ok(tQuestionFeedbackInfoService.noPageDiy(tQuestionFeedbackInfo));
}
/**
* 通过id查询
*
* @param id id
* @return R
*/
@Operation(summary = "通过id查询", description = "通过id查询:hasPermission('demo_tquestionfeedbackinfo_get')")
@GetMapping("/{id}")
@PreAuthorize("@pms.hasPermission('demo_tquestionfeedbackinfo_get')")
public R<TQuestionFeedbackInfo> getById(@PathVariable("id") String id) {
return R.ok(tQuestionFeedbackInfoService.getById(id));
}
/**
* 新增
*
* @param tQuestionFeedbackInfo
* @return R
*/
@Operation(summary = "新增", description = "新增")
@SysLog("新增")
@PostMapping("/add")
public R<Boolean> save(@RequestBody TQuestionFeedbackInfo tQuestionFeedbackInfo) {
String key = CacheConstants.QUESTION_FEEDBACK_LIMIT + CommonConstants.DOWN_LINE_STRING + "questionFeedBackFlag";
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)) {
if (Common.isNotNull(tQuestionFeedbackInfo.getQuestion()) && tQuestionFeedbackInfo.getQuestion().length() > 200){
return R.failed("你遇到的问题请控制在200字以内!");
}
return tQuestionFeedbackInfoService.saveAsso(tQuestionFeedbackInfo);
} else {
return R.failed(ResultConstants.NO_GETLOCK_DATA);
}
}finally {
//主动释放锁
RedisDistributedLock.unlock(key, requestId);
}
}
/**
* 修改
*
* @param tQuestionFeedbackInfo
* @return R
*/
@Operation(summary = "修改", description = "修改:hasPermission('demo_tquestionfeedbackinfo_edit')")
@SysLog("修改")
@PutMapping
@PreAuthorize("@pms.hasPermission('demo_tquestionfeedbackinfo_edit')")
public R<Boolean> updateById(@RequestBody TQuestionFeedbackInfo tQuestionFeedbackInfo) {
return R.ok(tQuestionFeedbackInfoService.updateById(tQuestionFeedbackInfo));
}
/**
* 通过id删除
*
* @param id id
* @return R
*/
@Operation(summary = "通过id删除", description = "通过id删除:hasPermission('demo_tquestionfeedbackinfo_del')")
@SysLog("通过id删除")
@DeleteMapping("/{id}")
@PreAuthorize("@pms.hasPermission('demo_tquestionfeedbackinfo_del')")
public R<Boolean> removeById(@PathVariable String id) {
return R.ok(tQuestionFeedbackInfoService.removeById(id));
}
/**
* 批量导入
*
* @author fxj
* @date 2024-12-18 15:39:57
**/
@SneakyThrows
@Operation(description = "批量新增 hasPermission('demo_tquestionfeedbackinfo-batch-import')")
@SysLog("批量新增")
@PostMapping("/importListAdd")
@PreAuthorize("@pms.hasPermission('demo_tquestionfeedbackinfo-batch-import')")
public R<List<ErrorMessage>> importListAdd(@RequestBody MultipartFile file) {
return tQuestionFeedbackInfoService.importDiy(file.getInputStream());
}
/**
* 批量导出
*
* @author fxj
* @date 2024-12-18 15:39:57
**/
@Operation(description = "导出 hasPermission('demo_tquestionfeedbackinfo-export')")
@PostMapping("/export")
@PreAuthorize("@pms.hasPermission('demo_tquestionfeedbackinfo-export')")
public void export(HttpServletResponse response, @RequestBody TQuestionFeedbackInfoSearchVo searchVo) {
tQuestionFeedbackInfoService.listExport(response, searchVo);
}
}
......@@ -15,6 +15,7 @@ import com.yifu.cloud.plus.v1.yifu.common.dapr.util.HttpDaprUtil;
import com.yifu.cloud.plus.v1.yifu.salary.entity.*;
import com.yifu.cloud.plus.v1.yifu.salary.service.*;
import com.yifu.cloud.plus.v1.yifu.salary.vo.AccountForWxVo;
import com.yifu.cloud.plus.v1.yifu.salary.vo.TSalaryEmployeeWxVo;
import com.yifu.cloud.plus.v1.yifu.salary.vo.TSalarySetVo;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
......@@ -64,7 +65,14 @@ public class TSalaryAccountPhoneController {
**/
@Operation(description = "获取工资报账信息")
@GetMapping("/getSalaryAccount")
public R<AccountForWxVo> getSalaryAccount(@RequestParam String idNumber, String year) {
public R<AccountForWxVo> getSalaryAccount(@RequestParam(required = false) String idNumber, String year,String openId) {
if (Common.isEmpty(idNumber) || Common.isEmpty(openId)){
return R.failed(CommonConstants.PARAM_IS_NOT_ERROR);
}
//校验openId,openId 不对直接返回
if (!checkOpenId(openId)){
return R.failed(CommonConstants.PARAM_IS_NOT_ERROR);
}
AccountForWxVo result = new AccountForWxVo();
//处理身份证防止小写干扰
idNumber = idNumber.toUpperCase();
......@@ -121,7 +129,11 @@ public class TSalaryAccountPhoneController {
**/
@Operation(description = "获取工资明细信息")
@GetMapping("/getSalaryAccountForm")
public R<TSalarySetVo> getSalaryAccountForm(@RequestParam String id, Integer type) {
public R<TSalarySetVo> getSalaryAccountForm(@RequestParam String id, Integer type,String openId) {
//校验openId,openId 不对直接返回
if (!checkOpenId(openId)){
return R.failed(CommonConstants.PARAM_IS_NOT_ERROR);
}
//类型判断
if (null == type) {
return R.failed("查询类型不能为空");
......@@ -161,7 +173,7 @@ public class TSalaryAccountPhoneController {
*/
@Operation(description = "根据手机号获取员工信息")
@GetMapping("/getInfoByEmpPhone")
public R<TSalaryEmployee> getInfoByEmpPhone(@RequestParam String empPhone) {
public R<TSalaryEmployeeWxVo> getInfoByEmpPhone(@RequestParam String empPhone) {
if (Common.isEmpty(empPhone)) {
return R.failed("手机号不能为空");
}
......@@ -170,7 +182,7 @@ public class TSalaryAccountPhoneController {
.eq(TSalaryEmployee::getEmpPhone, empPhone).last(CommonConstants.LAST_ONE_SQL));
//判断是查到员工信息
if (Common.isNotNull(employee) && Common.isNotNull(employee.getEmpIdcard())) {
return this.getUserCount(employee);
return this.getUserAndEmp(employee);
} else {
return R.failed("未查到信息,请核实手机号!");
}
......@@ -192,6 +204,26 @@ public class TSalaryAccountPhoneController {
}
return R.ok(em);
}
/**
* @Author fxj
* @Description 查询身份证是否已被占用--新
* @Date 9:21 2024/12/18
* @Param
* @return
**/
private R<TSalaryEmployeeWxVo> getUserAndEmp(TSalaryEmployee em) {
TSalaryEmployeeWxVo wxVo = new TSalaryEmployeeWxVo();
wxVo.setSalaryEmployee(em);
SysUser user = new SysUser();
user.setUsername(em.getEmpIdcard());
R<SysUser> userR = HttpDaprUtil.invokeMethodPost(daprUpmsProperties.getAppUrl(), daprUpmsProperties.getAppId()
, "/user/inner/getWxNickNameByIdCard", user, SysUser.class, SecurityConstants.FROM_IN);
if (null != userR && Common.isNotNull(userR.getData())) {
wxVo.setWxNickName(userR.getData().getWxNickName());
return R.other(CommonConstants.TWO_INT, "该身份已被绑定,请联系客服热线:0551 - 63535213!!",wxVo);
}
return R.ok(wxVo);
}
/**
* @param phone 手机号
......@@ -221,4 +253,12 @@ public class TSalaryAccountPhoneController {
}
}
private boolean checkOpenId(String openId){
R<Boolean> r = HttpDaprUtil.invokeMethodPost(daprUpmsProperties.getAppUrl(), daprUpmsProperties.getAppId()
, "/user/inner/checkWxUserByOpenId", openId, Boolean.class, SecurityConstants.FROM_IN);
if (Common.isNotNull(r) && Common.isNotNull(r.getData())){
return r.getData().booleanValue();
}
return false;
}
}
......@@ -74,7 +74,7 @@ public class TSalaryAttaController {
* @Date: 2021-12-8 15:36:58
* @return: com.yifu.cloud.v1.common.core.util.R<java.util.List < com.yifu.cloud.v1.hrms.api.entity.TSalaryAtta>>
**/
@Schema(description = "获取list(linkId, linkType链接类型:0工资;1工程工资;2暂停发;3自定义项暂停发;4打印记录;5核准表打印记录6:非扣税 7发放失败 8自有员工附件 9财务回执附件 10换人换卡附件;11薪资原表;12劳务费或稿酬已有发薪记录;13薪资特殊值(3500、5000);14本月重复金额")
@Schema(description = "获取list(linkId, linkType链接类型:0工资;1工程工资;2暂停发;3自定义项暂停发;4打印记录;5核准表打印记录6:非扣税 7发放失败 8自有员工附件 9财务回执附件 10换人换卡附件;11薪资原表;12劳务费或稿酬已有发薪记录;13薪资特殊值(3500、5000);14本月重复金额;15:工资查询问题反馈附件")
@GetMapping("/getTSalaryAttaListByIdType")
public R<List<TSalaryAtta>> getTSalaryAttaListByIdType(@RequestParam String linkId, @RequestParam Integer linkType) {
return new R<>(tSalaryAttaService.getAttaListHaveSrc(linkId, linkType));
......@@ -89,7 +89,7 @@ public class TSalaryAttaController {
* @throws IOException
*/
@SysLog("薪资附件上传")
@Schema(description = "OSS文件上传接口。linkType类型:0工资;1工程工资;2暂停发;3自定义项暂停发;4薪资打印记录;5核准表打印记录;6:非扣税项;8自有员工附件;9:财务回执附件;10换人换卡附件;11薪资原表;12劳务费或稿酬已有发薪记录;13薪资特殊值(3500、5000);14本月重复金额")
@Schema(description = "OSS文件上传接口。linkType类型:0工资;1工程工资;2暂停发;3自定义项暂停发;4薪资打印记录;5核准表打印记录;6:非扣税项;8自有员工附件;9:财务回执附件;10换人换卡附件;11薪资原表;12劳务费或稿酬已有发薪记录;13薪资特殊值(3500、5000);14本月重复金额15:工资查询问题反馈附件")
/*@ApiImplicitParams({
@ApiImplicitParam(name = "file", value = "Form文件上传", required = true, dataType = "__file", paramType = "form"),
@ApiImplicitParam(name = "filePath", value = "文件上传路径", dataType = "String", paramType = "form"),
......
/*
* Copyright (c) 2018-2025, lengleng All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* Neither the name of the yifu4cloud.com developer nor the names of its
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
* Author: lengleng (wangiegie@gmail.com)
*/
package com.yifu.cloud.plus.v1.yifu.salary.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yifu.cloud.plus.v1.yifu.salary.entity.TMobileChangeInfo;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
/**
* @author fxj
* @date 2024-12-18 15:39:56
*/
@Mapper
public interface TMobileChangeInfoMapper extends BaseMapper<TMobileChangeInfo> {
/**
* 简单分页查询
*
* @param tMobileChangeInfo
* @return
*/
IPage<TMobileChangeInfo> getTMobileChangeInfoPage(Page<TMobileChangeInfo> page, @Param("tMobileChangeInfo") TMobileChangeInfo tMobileChangeInfo);
}
/*
* Copyright (c) 2018-2025, lengleng All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* Neither the name of the yifu4cloud.com developer nor the names of its
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
* Author: lengleng (wangiegie@gmail.com)
*/
package com.yifu.cloud.plus.v1.yifu.salary.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yifu.cloud.plus.v1.yifu.salary.entity.TQuestionFeedbackInfo;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
/**
* @author fxj
* @date 2024-12-18 15:39:57
*/
@Mapper
public interface TQuestionFeedbackInfoMapper extends BaseMapper<TQuestionFeedbackInfo> {
/**
* 简单分页查询
*
* @param tQuestionFeedbackInfo
* @return
*/
IPage<TQuestionFeedbackInfo> getTQuestionFeedbackInfoPage(Page<TQuestionFeedbackInfo> page, @Param("tQuestionFeedbackInfo") TQuestionFeedbackInfo tQuestionFeedbackInfo);
}
......@@ -43,4 +43,6 @@ public interface TSalaryAttaMapper extends BaseMapper<TSalaryAtta> {
IPage<TSalaryAtta> getTAttaPage(Page page, @Param("tAtta") TSalaryAtta tAtta);
List<TSalaryAtta> getTAttaList(@Param("tAtta") TSalaryAtta tAtta);
int updateLinkId(@Param("domainId")String id, @Param("ids")List<String> ids);
}
/*
* Copyright (c) 2018-2025, lengleng All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* Neither the name of the yifu4cloud.com developer nor the names of its
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
* Author: lengleng (wangiegie@gmail.com)
*/
package com.yifu.cloud.plus.v1.yifu.salary.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.yifu.cloud.plus.v1.yifu.common.core.util.ErrorMessage;
import com.yifu.cloud.plus.v1.yifu.common.core.util.R;
import com.yifu.cloud.plus.v1.yifu.salary.entity.TMobileChangeInfo;
import com.yifu.cloud.plus.v1.yifu.salary.vo.TMobileChangeInfoSearchVo;
import javax.servlet.http.HttpServletResponse;
import java.io.InputStream;
import java.util.List;
/**
* @author fxj
* @date 2024-12-18 15:39:56
*/
public interface TMobileChangeInfoService extends IService<TMobileChangeInfo> {
/**
* 简单分页查询
*
* @param tMobileChangeInfo
* @return
*/
IPage<TMobileChangeInfo> getTMobileChangeInfoPage(Page<TMobileChangeInfo> page, TMobileChangeInfoSearchVo tMobileChangeInfo);
R<List<ErrorMessage>> importDiy(InputStream inputStream);
void listExport(HttpServletResponse response, TMobileChangeInfoSearchVo searchVo);
List<TMobileChangeInfo> noPageDiy(TMobileChangeInfoSearchVo searchVo);
}
/*
* Copyright (c) 2018-2025, lengleng All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* Neither the name of the yifu4cloud.com developer nor the names of its
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
* Author: lengleng (wangiegie@gmail.com)
*/
package com.yifu.cloud.plus.v1.yifu.salary.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.yifu.cloud.plus.v1.yifu.common.core.util.ErrorMessage;
import com.yifu.cloud.plus.v1.yifu.common.core.util.R;
import com.yifu.cloud.plus.v1.yifu.salary.entity.TQuestionFeedbackInfo;
import com.yifu.cloud.plus.v1.yifu.salary.vo.TQuestionFeedbackInfoSearchVo;
import javax.servlet.http.HttpServletResponse;
import java.io.InputStream;
import java.util.List;
/**
* @author fxj
* @date 2024-12-18 15:39:57
*/
public interface TQuestionFeedbackInfoService extends IService<TQuestionFeedbackInfo> {
/**
* 简单分页查询
*
* @param tQuestionFeedbackInfo
* @return
*/
IPage<TQuestionFeedbackInfo> getTQuestionFeedbackInfoPage(Page<TQuestionFeedbackInfo> page, TQuestionFeedbackInfoSearchVo tQuestionFeedbackInfo);
R<List<ErrorMessage>> importDiy(InputStream inputStream);
void listExport(HttpServletResponse response, TQuestionFeedbackInfoSearchVo searchVo);
List<TQuestionFeedbackInfo> noPageDiy(TQuestionFeedbackInfoSearchVo searchVo);
R<Boolean> saveAsso(TQuestionFeedbackInfo tQuestionFeedbackInfo);
}
......@@ -181,7 +181,8 @@ public class SalaryUploadServiceImpl extends ServiceImpl<TSalaryStandardMapper,
}
}
try {
jsonString = URLDecoder.decode(jsonString, "UTF-8").replace("=", "");
String json = jsonString.replaceAll("%(?![0-9a-fA-F]{2})", "%25");
jsonString = URLDecoder.decode(json, "UTF-8").replace("=", "");
vo.setJsonString(jsonString);
SalaryAccountUtil util1 = new SalaryAccountUtil();
......@@ -1554,7 +1555,7 @@ public class SalaryUploadServiceImpl extends ServiceImpl<TSalaryStandardMapper,
/**
* @param savList 报账表Vo
* @param orderId
* @param vo
* @Description: 保存并提交
* @Author: huyc
* @Date: 2022/8/16
......
/*
* Copyright (c) 2018-2025, lengleng All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* Neither the name of the yifu4cloud.com developer nor the names of its
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
* Author: lengleng (wangiegie@gmail.com)
*/
package com.yifu.cloud.plus.v1.yifu.salary.service.impl;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.util.ArrayUtil;
import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.ExcelWriter;
import com.alibaba.excel.context.AnalysisContext;
import com.alibaba.excel.read.listener.ReadListener;
import com.alibaba.excel.read.metadata.holder.ReadRowHolder;
import com.alibaba.excel.util.ListUtils;
import com.alibaba.excel.write.metadata.WriteSheet;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.yifu.cloud.plus.v1.yifu.common.core.constant.CommonConstants;
import com.yifu.cloud.plus.v1.yifu.common.core.util.*;
import com.yifu.cloud.plus.v1.yifu.common.mybatis.base.BaseEntity;
import com.yifu.cloud.plus.v1.yifu.salary.entity.TMobileChangeInfo;
import com.yifu.cloud.plus.v1.yifu.salary.mapper.TMobileChangeInfoMapper;
import com.yifu.cloud.plus.v1.yifu.salary.service.TMobileChangeInfoService;
import com.yifu.cloud.plus.v1.yifu.salary.vo.TMobileChangeInfoSearchVo;
import com.yifu.cloud.plus.v1.yifu.salary.vo.TMobileChangeInfoVo;
import lombok.extern.log4j.Log4j2;
import org.springframework.stereotype.Service;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.InputStream;
import java.net.URLEncoder;
import java.util.ArrayList;
import java.util.List;
/**
* @author fxj
* @date 2024-12-18 15:39:56
*/
@Log4j2
@Service
public class TMobileChangeInfoServiceImpl extends ServiceImpl<TMobileChangeInfoMapper, TMobileChangeInfo> implements TMobileChangeInfoService {
/**
* 简单分页查询
*
* @param tMobileChangeInfo
* @return
*/
@Override
public IPage<TMobileChangeInfo> getTMobileChangeInfoPage(Page<TMobileChangeInfo> page, TMobileChangeInfoSearchVo tMobileChangeInfo) {
return baseMapper.getTMobileChangeInfoPage(page, tMobileChangeInfo);
}
/**
* 批量导出
*
* @param searchVo
* @return
*/
@Override
public void listExport(HttpServletResponse response, TMobileChangeInfoSearchVo searchVo) {
String fileName = "批量导出" + DateUtil.getThisTime() + ".xlsx";
//获取要导出的列表
List<TMobileChangeInfo> list = new ArrayList<>();
long count = noPageCountDiy(searchVo);
ServletOutputStream out = null;
try {
out = response.getOutputStream();
response.setContentType(CommonConstants.MULTIPART_FORM_DATA);
response.setCharacterEncoding("utf-8");
response.setHeader(CommonConstants.CONTENT_DISPOSITION, CommonConstants.ATTACHMENT_FILENAME + URLEncoder.encode(fileName, CommonConstants.UTF8));
// 这里 需要指定写用哪个class去写,然后写到第一个sheet,然后文件流会自动关闭
//EasyExcel.write(out, TEmpBadRecord.class).sheet("不良记录").doWrite(list);
ExcelWriter excelWriter = EasyExcel.write(out, TMobileChangeInfo.class).build();
int index = 0;
if (count > CommonConstants.ZERO_INT) {
for (int i = 0; i <= count; ) {
// 获取实际记录
searchVo.setLimitStart(i);
searchVo.setLimitEnd(CommonConstants.EXCEL_EXPORT_LIMIT);
list = noPageDiy(searchVo);
if (Common.isNotNull(list)) {
ExcelUtil<TMobileChangeInfo> util = new ExcelUtil<>(TMobileChangeInfo.class);
for (TMobileChangeInfo vo : list) {
util.convertEntity(vo, null, null, null);
}
}
if (Common.isNotNull(list)) {
WriteSheet writeSheet = EasyExcel.writerSheet("" + index).build();
excelWriter.write(list, writeSheet);
index++;
}
i = i + CommonConstants.EXCEL_EXPORT_LIMIT;
if (Common.isNotNull(list)) {
list.clear();
}
}
} else {
WriteSheet writeSheet = EasyExcel.writerSheet("" + index).build();
excelWriter.write(list, writeSheet);
}
if (Common.isNotNull(list)) {
list.clear();
}
out.flush();
excelWriter.finish();
} catch (Exception e) {
log.error("执行异常", e);
} finally {
try {
if (null != out) {
out.close();
}
} catch (IOException e) {
log.error("执行异常", e);
}
}
}
@Override
public List<TMobileChangeInfo> noPageDiy(TMobileChangeInfoSearchVo searchVo) {
LambdaQueryWrapper<TMobileChangeInfo> wrapper = buildQueryWrapper(searchVo);
List<String> idList = Common.getList(searchVo.getIds());
if (Common.isNotNull(idList)) {
wrapper.in(TMobileChangeInfo::getId, idList);
}
if (searchVo.getLimitStart() >= 0 && searchVo.getLimitEnd() > 0) {
wrapper.last(" limit " + searchVo.getLimitStart() + "," + searchVo.getLimitEnd());
}
wrapper.orderByDesc(BaseEntity::getCreateTime);
return baseMapper.selectList(wrapper);
}
private Long noPageCountDiy(TMobileChangeInfoSearchVo searchVo) {
LambdaQueryWrapper<TMobileChangeInfo> wrapper = buildQueryWrapper(searchVo);
List<String> idList = Common.getList(searchVo.getIds());
if (Common.isNotNull(idList)) {
wrapper.in(TMobileChangeInfo::getId, idList);
}
return baseMapper.selectCount(wrapper);
}
private LambdaQueryWrapper buildQueryWrapper(TMobileChangeInfoSearchVo entity) {
LambdaQueryWrapper<TMobileChangeInfo> wrapper = Wrappers.lambdaQuery();
if (ArrayUtil.isNotEmpty(entity.getCreateTimes())) {
wrapper.ge(TMobileChangeInfo::getCreateTime, entity.getCreateTimes()[0])
.le(TMobileChangeInfo::getCreateTime,
entity.getCreateTimes()[1]);
}
if (Common.isNotNull(entity.getCreateName())) {
wrapper.eq(TMobileChangeInfo::getCreateName, entity.getCreateName());
}
return wrapper;
}
@Override
public R<List<ErrorMessage>> importDiy(InputStream inputStream) {
List<ErrorMessage> errorMessageList = new ArrayList<>();
ExcelUtil<TMobileChangeInfoVo> util1 = new ExcelUtil<>(TMobileChangeInfoVo.class);
;
// 写法2:
// 匿名内部类 不用额外写一个DemoDataListener
// 这里 需要指定读用哪个class去读,然后读取第一个sheet 文件流会自动关闭
try {
EasyExcel.read(inputStream, TMobileChangeInfoVo.class, new ReadListener<TMobileChangeInfoVo>() {
/**
* 单次缓存的数据量
*/
public static final int BATCH_COUNT = CommonConstants.BATCH_COUNT;
/**
*临时存储
*/
private List<TMobileChangeInfoVo> cachedDataList = ListUtils.newArrayListWithExpectedSize(BATCH_COUNT);
@Override
public void invoke(TMobileChangeInfoVo data, AnalysisContext context) {
ReadRowHolder readRowHolder = context.readRowHolder();
Integer rowIndex = readRowHolder.getRowIndex();
data.setRowIndex(rowIndex + 1);
ErrorMessage errorMessage = util1.checkEntity(data, data.getRowIndex());
if (Common.isNotNull(errorMessage)) {
errorMessageList.add(errorMessage);
} else {
cachedDataList.add(data);
}
if (cachedDataList.size() >= BATCH_COUNT) {
saveData();
// 存储完成清理 list
cachedDataList = ListUtils.newArrayListWithExpectedSize(BATCH_COUNT);
}
}
@Override
public void doAfterAllAnalysed(AnalysisContext context) {
saveData();
}
/**
* 加上存储数据库
*/
private void saveData() {
log.info("{}条数据,开始存储数据库!", cachedDataList.size());
importTMobileChangeInfo(cachedDataList, errorMessageList);
log.info("存储数据库成功!");
}
}).sheet().doRead();
} catch (Exception e) {
log.error(CommonConstants.IMPORT_DATA_ANALYSIS_ERROR, e);
return R.failed(CommonConstants.IMPORT_DATA_ANALYSIS_ERROR);
}
return R.ok(errorMessageList);
}
private void importTMobileChangeInfo(List<TMobileChangeInfoVo> excelVOList, List<ErrorMessage> errorMessageList) {
// 个性化校验逻辑
ErrorMessage errorMsg;
// 执行数据插入操作 组装
for (int i = 0; i < excelVOList.size(); i++) {
TMobileChangeInfoVo excel = excelVOList.get(i);
// 数据合法情况 TODO
// 插入
insertExcel(excel);
errorMessageList.add(new ErrorMessage(excel.getRowIndex(), CommonConstants.SAVE_SUCCESS));
}
}
/**
* 插入excel bad record
*/
private void insertExcel(TMobileChangeInfoVo excel) {
TMobileChangeInfo insert = new TMobileChangeInfo();
BeanUtil.copyProperties(excel, insert);
this.save(insert);
}
}
......@@ -22,6 +22,7 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.yifu.cloud.plus.v1.yifu.common.core.constant.CommonConstants;
import com.yifu.cloud.plus.v1.yifu.common.core.constant.ResultConstants;
import com.yifu.cloud.plus.v1.yifu.common.core.util.Common;
import com.yifu.cloud.plus.v1.yifu.common.core.util.DateUtil;
import com.yifu.cloud.plus.v1.yifu.common.core.util.OSSUtil;
......@@ -55,6 +56,7 @@ import java.io.InputStream;
import java.net.URL;
import java.time.LocalDateTime;
import java.util.List;
import java.util.concurrent.atomic.AtomicInteger;
/**
* 薪资结算附件表
......@@ -72,6 +74,8 @@ public class TSalaryAttaServiceImpl extends ServiceImpl<TSalaryAttaMapper, TSala
private final TSalaryStandardService tSalaryStandardService;
private final TSalaryAccountService tSalaryAccountService;
private final AtomicInteger atomicInteger = new AtomicInteger(0);
/**
* 薪资结算附件表简单分页查询
*
......@@ -139,35 +143,49 @@ public class TSalaryAttaServiceImpl extends ServiceImpl<TSalaryAttaMapper, TSala
@Override
public R<FileVo> uploadAtta(@RequestBody MultipartFile file, String filePath, String linkId
, Integer linkType, Integer engineerType, String printRemark, String recordId) throws IOException {
String fileName = System.currentTimeMillis() + "_" + file.getOriginalFilename();
//filePath不传默认存储空间的根目录
//jpg,jpeg,png,bmp
String key = "";
if (!Common.isNotNull(filePath)) {
key = fileName;
} else {
key = filePath + "/" + fileName;
}
boolean flag = ossUtil.uploadFileByStream(file.getInputStream(), key, null);
FileVo fileVo;
TSalaryAtta salaryAtta;
URL url = null;
if (flag) {
log.info("文件:" + fileName + "上传至存储空间" + ossUtil.getBucketName() + "成功!");
salaryAtta = this.saveTSalaryAtta(fileName, key, file.getSize(), linkId, linkType, engineerType, printRemark, recordId);
//初始化附件上传队列上限值
int maxLimit = 5;
if (atomicInteger.incrementAndGet() <= maxLimit){
try {
this.save(salaryAtta);
} catch (Exception e) {
log.error("OSS文件上传接口异常:" + e.getMessage());
ossUtil.deleteObject(null, key);
return R.failed("failed:" + e.getMessage());
String fileName = System.currentTimeMillis() + "_" + file.getOriginalFilename();
//filePath不传默认存储空间的根目录
//jpg,jpeg,png,bmp
String key = "";
if (!Common.isNotNull(filePath)) {
key = fileName;
} else {
key = filePath + "/" + fileName;
}
boolean flag = ossUtil.uploadFileByStream(file.getInputStream(), key, null);
FileVo fileVo;
TSalaryAtta salaryAtta;
URL url = null;
if (flag) {
salaryAtta = this.saveTSalaryAtta(fileName, key, file.getSize(), linkId, linkType, engineerType, printRemark, recordId);
try {
this.save(salaryAtta);
} catch (Exception e) {
log.error("OSS文件上传接口异常:" + e.getMessage());
ossUtil.deleteObject(null, key);
return R.failed("failed:" + e.getMessage());
}
url = ossUtil.getObjectUrl(null, salaryAtta.getAttaSrc());
fileVo = new FileVo(salaryAtta.getId(), salaryAtta.getAttaName(), url.toString());
return R.ok(fileVo);
} else {
return R.failed("failed:上传至存储空间失败");
}
}catch (Exception e){
log.error("附件上传异常:",e);
}finally {
atomicInteger.decrementAndGet();
}
url = ossUtil.getObjectUrl(null, salaryAtta.getAttaSrc());
fileVo = new FileVo(salaryAtta.getId(), salaryAtta.getAttaName(), url.toString());
return R.ok(fileVo);
} else {
return R.failed("failed:上传至存储空间失败");
}else {
atomicInteger.decrementAndGet();
log.error("超出阈值:"+ ResultConstants.FILE_UPLOADING_DATA);
return R.failed(ResultConstants.FILE_UPLOADING_DATA);
}
return null;
}
/**
......
......@@ -428,7 +428,7 @@ public class TSalaryStandardOriginalServiceImpl extends ServiceImpl<TSalaryStand
}
}
if (dataRowFlag) {
if (idCardNum != -1) {
if (idCardNum != null && idCardNum != -1) {
return R.failed("您配置的身份证列第【"+(idCardNum+1)+"】列未找到身份证,请确认表头配置或表格数据!!");
}
return R.failed("未找到身份证所在的数据行,请检查表数据!!");
......@@ -713,7 +713,7 @@ public class TSalaryStandardOriginalServiceImpl extends ServiceImpl<TSalaryStand
}
}
if (dataRowFlag) {
if (idCardNum != -1) {
if (idCardNum != null && idCardNum != -1) {
return R.failed("您配置的身份证列第【"+(idCardNum+1)+"】列未找到身份证,请确认表头配置或表格数据!!");
}
return R.failed("未找到身份证所在的数据行,请检查表数据!!");
......
......@@ -44,6 +44,12 @@ security:
- /tsalaryemployee/inner/getEmpTaxMonth
- /tsalaryemployee/inner/getSalaryEmployee
- /tsalaryemployee/inner/savePreNewEmpInfo
- /tmobilechangeinfo/add # 工资条换号申请不需要token
- /tquestionfeedbackinfo/add # 工资条问题反馈不需要token
- /salaryEmployeeSelect/getSalaryAccountForm # 工资条查询通过openId控制
- /salaryEmployeeSelect/getSalaryAccount # 工资条查询明细通过openId控制
- /tsalaryatta/ossUploadFile # 工资条查询附件上传 无token
- /tsalaryatta/ossFileDelete/** # 工资条查询附件上传删除 无token
......
......@@ -62,7 +62,7 @@
<password>QmdCaQSPmCAQEddd</password>
<SSL>true</SSL>
<asynchronousSending>true</asynchronousSending>
<to>wangpeng@wanxin-holdings.com,fangxinjiang@wanxin-holdings.com,hongguangwu@wanxin-holdings.com</to>
<to>wangpeng@wanxin-holdings.com,fangxinjiang@wanxin-holdings.com,hongguangwu@wanxin-holdings.com,huyuchen@wanxin-holdings.com</to>
<from>information@wanxin-holdings.com</from>
<subject>hro-mvp ${springAppActive}环境 ${springAppName}服务: %-20msg 错误</subject>
<charsetEncoding>UTF-8</charsetEncoding>
......
<?xml version="1.0" encoding="UTF-8"?>
<!--
~
~ Copyright (c) 2018-2025, lengleng All rights reserved.
~
~ Redistribution and use in source and binary forms, with or without
~ modification, are permitted provided that the following conditions are met:
~
~ Redistributions of source code must retain the above copyright notice,
~ this list of conditions and the following disclaimer.
~ Redistributions in binary form must reproduce the above copyright
~ notice, this list of conditions and the following disclaimer in the
~ documentation and/or other materials provided with the distribution.
~ Neither the name of the yifu4cloud.com developer nor the names of its
~ contributors may be used to endorse or promote products derived from
~ this software without specific prior written permission.
~ Author: lengleng (wangiegie@gmail.com)
~
-->
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.yifu.cloud.plus.v1.yifu.salary.mapper.TMobileChangeInfoMapper">
<resultMap id="tMobileChangeInfoMap" type="com.yifu.cloud.plus.v1.yifu.salary.entity.TMobileChangeInfo">
<id property="id" column="ID"/>
<result property="applyName" column="APPLY_NAME"/>
<result property="empIdcard" column="EMP_IDCARD"/>
<result property="mobileOld" column="MOBILE_OLD"/>
<result property="mobileNew" column="MOBILE_NEW"/>
<result property="handleStatus" column="HANDLE_STATUS"/>
<result property="handleOperator" column="HANDLE_OPERATOR"/>
<result property="handleFinishTime" column="HANDLE_FINISH_TIME"/>
<result property="handleRemark" column="HANDLE_REMARK"/>
<result property="createBy" column="CREATE_BY"/>
<result property="createName" column="CREATE_NAME"/>
<result property="createTime" column="CREATE_TIME"/>
<result property="updateBy" column="UPDATE_BY"/>
<result property="updateTime" column="UPDATE_TIME"/>
</resultMap>
<sql id="Base_Column_List">
a.ID,
a.APPLY_NAME,
a.EMP_IDCARD,
a.MOBILE_OLD,
a.MOBILE_NEW,
a.HANDLE_STATUS,
a.HANDLE_OPERATOR,
a.HANDLE_FINISH_TIME,
a.HANDLE_REMARK,
a.CREATE_BY,
a.CREATE_NAME,
a.CREATE_TIME,
a.UPDATE_BY,
a.UPDATE_TIME
</sql>
<sql id="tMobileChangeInfo_where">
<if test="tMobileChangeInfo != null">
<if test="tMobileChangeInfo.id != null and tMobileChangeInfo.id.trim() != ''">
AND a.ID = #{tMobileChangeInfo.id}
</if>
<if test="tMobileChangeInfo.applyName != null and tMobileChangeInfo.applyName.trim() != ''">
AND a.APPLY_NAME = #{tMobileChangeInfo.applyName}
</if>
<if test="tMobileChangeInfo.empIdcard != null and tMobileChangeInfo.empIdcard.trim() != ''">
AND a.EMP_IDCARD = #{tMobileChangeInfo.empIdcard}
</if>
<if test="tMobileChangeInfo.mobileOld != null and tMobileChangeInfo.mobileOld.trim() != ''">
AND a.MOBILE_OLD = #{tMobileChangeInfo.mobileOld}
</if>
<if test="tMobileChangeInfo.mobileNew != null and tMobileChangeInfo.mobileNew.trim() != ''">
AND a.MOBILE_NEW = #{tMobileChangeInfo.mobileNew}
</if>
<if test="tMobileChangeInfo.handleStatus != null and tMobileChangeInfo.handleStatus.trim() != ''">
AND a.HANDLE_STATUS = #{tMobileChangeInfo.handleStatus}
</if>
<if test="tMobileChangeInfo.handleOperator != null and tMobileChangeInfo.handleOperator.trim() != ''">
AND a.HANDLE_OPERATOR = #{tMobileChangeInfo.handleOperator}
</if>
<if test="tMobileChangeInfo.handleFinishTime != null">
AND a.HANDLE_FINISH_TIME = #{tMobileChangeInfo.handleFinishTime}
</if>
<if test="tMobileChangeInfo.handleRemark != null and tMobileChangeInfo.handleRemark.trim() != ''">
AND a.HANDLE_REMARK = #{tMobileChangeInfo.handleRemark}
</if>
<if test="tMobileChangeInfo.createBy != null and tMobileChangeInfo.createBy.trim() != ''">
AND a.CREATE_BY = #{tMobileChangeInfo.createBy}
</if>
<if test="tMobileChangeInfo.createName != null and tMobileChangeInfo.createName.trim() != ''">
AND a.CREATE_NAME = #{tMobileChangeInfo.createName}
</if>
<if test="tMobileChangeInfo.createTime != null">
AND a.CREATE_TIME = #{tMobileChangeInfo.createTime}
</if>
<if test="tMobileChangeInfo.updateBy != null and tMobileChangeInfo.updateBy.trim() != ''">
AND a.UPDATE_BY = #{tMobileChangeInfo.updateBy}
</if>
<if test="tMobileChangeInfo.updateTime != null">
AND a.UPDATE_TIME = #{tMobileChangeInfo.updateTime}
</if>
</if>
</sql>
<!--tMobileChangeInfo简单分页查询-->
<select id="getTMobileChangeInfoPage" resultMap="tMobileChangeInfoMap">
SELECT
<include refid="Base_Column_List"/>
FROM t_mobile_change_info a
<where>
1=1
<include refid="tMobileChangeInfo_where"/>
</where>
</select>
</mapper>
<?xml version="1.0" encoding="UTF-8"?>
<!--
~
~ Copyright (c) 2018-2025, lengleng All rights reserved.
~
~ Redistribution and use in source and binary forms, with or without
~ modification, are permitted provided that the following conditions are met:
~
~ Redistributions of source code must retain the above copyright notice,
~ this list of conditions and the following disclaimer.
~ Redistributions in binary form must reproduce the above copyright
~ notice, this list of conditions and the following disclaimer in the
~ documentation and/or other materials provided with the distribution.
~ Neither the name of the yifu4cloud.com developer nor the names of its
~ contributors may be used to endorse or promote products derived from
~ this software without specific prior written permission.
~ Author: lengleng (wangiegie@gmail.com)
~
-->
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.yifu.cloud.plus.v1.yifu.salary.mapper.TQuestionFeedbackInfoMapper">
<resultMap id="tQuestionFeedbackInfoMap" type="com.yifu.cloud.plus.v1.yifu.salary.entity.TQuestionFeedbackInfo">
<id property="id" column="ID"/>
<result property="name" column="NAME"/>
<result property="mobile" column="MOBILE"/>
<result property="question" column="QUESTION"/>
<result property="handleStatus" column="HANDLE_STATUS"/>
<result property="handleOperator" column="HANDLE_OPERATOR"/>
<result property="handleFinishTime" column="HANDLE_FINISH_TIME"/>
<result property="handleRemark" column="HANDLE_REMARK"/>
<result property="createBy" column="CREATE_BY"/>
<result property="createName" column="CREATE_NAME"/>
<result property="createTime" column="CREATE_TIME"/>
<result property="updateBy" column="UPDATE_BY"/>
<result property="updateTime" column="UPDATE_TIME"/>
</resultMap>
<sql id="Base_Column_List">
a.ID,
a.NAME,
a.MOBILE,
a.QUESTION,
a.HANDLE_STATUS,
a.HANDLE_OPERATOR,
a.HANDLE_FINISH_TIME,
a.HANDLE_REMARK,
a.CREATE_BY,
a.CREATE_NAME,
a.CREATE_TIME,
a.UPDATE_BY,
a.UPDATE_TIME
</sql>
<sql id="tQuestionFeedbackInfo_where">
<if test="tQuestionFeedbackInfo != null">
<if test="tQuestionFeedbackInfo.id != null and tQuestionFeedbackInfo.id.trim() != ''">
AND a.ID = #{tQuestionFeedbackInfo.id}
</if>
<if test="tQuestionFeedbackInfo.name != null and tQuestionFeedbackInfo.name.trim() != ''">
AND a.NAME = #{tQuestionFeedbackInfo.name}
</if>
<if test="tQuestionFeedbackInfo.mobile != null and tQuestionFeedbackInfo.mobile.trim() != ''">
AND a.MOBILE = #{tQuestionFeedbackInfo.mobile}
</if>
<if test="tQuestionFeedbackInfo.question != null and tQuestionFeedbackInfo.question.trim() != ''">
AND a.QUESTION = #{tQuestionFeedbackInfo.question}
</if>
<if test="tQuestionFeedbackInfo.handleStatus != null and tQuestionFeedbackInfo.handleStatus.trim() != ''">
AND a.HANDLE_STATUS = #{tQuestionFeedbackInfo.handleStatus}
</if>
<if test="tQuestionFeedbackInfo.handleOperator != null and tQuestionFeedbackInfo.handleOperator.trim() != ''">
AND a.HANDLE_OPERATOR = #{tQuestionFeedbackInfo.handleOperator}
</if>
<if test="tQuestionFeedbackInfo.handleFinishTime != null">
AND a.HANDLE_FINISH_TIME = #{tQuestionFeedbackInfo.handleFinishTime}
</if>
<if test="tQuestionFeedbackInfo.handleRemark != null and tQuestionFeedbackInfo.handleRemark.trim() != ''">
AND a.HANDLE_REMARK = #{tQuestionFeedbackInfo.handleRemark}
</if>
<if test="tQuestionFeedbackInfo.createBy != null and tQuestionFeedbackInfo.createBy.trim() != ''">
AND a.CREATE_BY = #{tQuestionFeedbackInfo.createBy}
</if>
<if test="tQuestionFeedbackInfo.createName != null and tQuestionFeedbackInfo.createName.trim() != ''">
AND a.CREATE_NAME = #{tQuestionFeedbackInfo.createName}
</if>
<if test="tQuestionFeedbackInfo.createTime != null">
AND a.CREATE_TIME = #{tQuestionFeedbackInfo.createTime}
</if>
<if test="tQuestionFeedbackInfo.updateBy != null and tQuestionFeedbackInfo.updateBy.trim() != ''">
AND a.UPDATE_BY = #{tQuestionFeedbackInfo.updateBy}
</if>
<if test="tQuestionFeedbackInfo.updateTime != null">
AND a.UPDATE_TIME = #{tQuestionFeedbackInfo.updateTime}
</if>
</if>
</sql>
<!--tQuestionFeedbackInfo简单分页查询-->
<select id="getTQuestionFeedbackInfoPage" resultMap="tQuestionFeedbackInfoMap">
SELECT
<include refid="Base_Column_List"/>
FROM t_question_feedback_info a
<where>
1=1
<include refid="tQuestionFeedbackInfo_where"/>
</where>
</select>
</mapper>
......@@ -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
......
......@@ -132,4 +132,18 @@
</where>
order by CREATE_TIME desc
</select>
<update id="updateLinkId">
update t_salary_atta
<trim prefix="set" suffixOverrides=",">
LINK_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>
</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)
*/
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,12 +203,81 @@ 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;
/**
* 是否配置公章
*/
@Schema(description ="行政区划代码")
private String areaCode;
/**
* 自动化配置状态 0 启用 1 禁用
*/
@Schema(description ="自动化配置状态")
private String autoStatus;
/**
* 医保单位编号
*/
@ExcelAttribute(name = "医保-单位编号" )
@Schema(description ="医保-单位编号")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("医保-单位编号")
private String customerNoYsd;
/**
* 审核人部门
*/
......@@ -221,4 +290,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;
/**
* 个人公积金费用
*/
......
......@@ -85,7 +85,7 @@ public class TSocialDeadlineInfo extends BaseEntity {
@TableField(updateStrategy = FieldStrategy.IGNORED)
private String town;
/**
* 社保起始日
* 社保(增员)起始日
*/
@ExcelAttribute(name = "社保起始日", isNotEmpty = true, errorInfo = "社保起始日不能为空", isDate = true)
@NotBlank(message = "社保起始日不能为空")
......@@ -93,7 +93,7 @@ public class TSocialDeadlineInfo extends BaseEntity {
@Schema(description = "社保起始日")
private Date socialStartDate;
/**
* 社保截止日
* 社保(增员)截止日
*/
@ExcelAttribute(name = "社保截止日", isNotEmpty = true, errorInfo = "社保截止日不能为空", isDate = true)
@NotBlank(message = "社保截止日不能为空")
......@@ -101,7 +101,7 @@ public class TSocialDeadlineInfo extends BaseEntity {
@Schema(description = "社保截止日")
private Date socialEndDate;
/**
* 医疗起始日
* 医疗(增员)起始日
*/
@ExcelAttribute(name = "医疗起始日", isNotEmpty = true, errorInfo = "医疗起始日不能为空", isDate = true)
@NotBlank(message = "医疗起始日不能为空")
......@@ -109,7 +109,7 @@ public class TSocialDeadlineInfo extends BaseEntity {
@Schema(description = "医疗起始日")
private Date medicalStartDate;
/**
* 医疗截止日
* 医疗(增员)截止日
*/
@ExcelAttribute(name = "医疗截止日", isNotEmpty = true, errorInfo = "医疗截止日不能为空", isDate = true)
@NotBlank(message = "医疗截止日不能为空")
......@@ -141,4 +141,41 @@ public class TSocialDeadlineInfo extends BaseEntity {
@Schema(description = "配置类型:0 非基础配置 1基础配置(后面配置都是按他生成的)")
private String type;
/**
* 社保减员起始日期
*/
@ExcelAttribute(name = "社保减员起始日期", isNotEmpty = true, errorInfo = "社保减员起始日期不能为空", isDate = true)
@NotBlank(message = "社保减员起始日期不可为空")
@ExcelProperty("社保减员起始日期")
@Schema(description = "社保减员起始日期")
private Date socialStartDateReduce;
/**
* 医疗减员起始日期
*/
@ExcelAttribute(name = "医疗减员起始日期", isNotEmpty = true, errorInfo = "医疗减员起始日期不能为空", isDate = true)
@NotBlank(message = "医疗减员起始日期不能为空")
@ExcelProperty("医疗减员起始日期")
@Schema(description = "医疗减员起始日期")
private Date medicalStartDateReduce;
/**
* 社保减员截止日期
*/
@ExcelAttribute(name = "社保减员截止日期", isNotEmpty = true, errorInfo = "社保减员截止日期不能为空", isDate = true)
@NotBlank(message = "社保减员截止日期不能为空")
@ExcelProperty("社保减员截止日期")
@Schema(description = "社保减员截止日期")
private Date socialEndDateReduce;
/**
* 医疗减员截止日期
*/
@ExcelAttribute(name = "医疗减员截止日期", isNotEmpty = true, errorInfo = "医疗减员截止日期不能为空", isDate = true)
@NotBlank(message = "医疗减员截止日期不能为空")
@ExcelProperty("医疗减员截止日期")
@Schema(description = "医疗减员截止日期")
private Date medicalEndDateReduce;
}
/*
* 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 javax.validation.constraints.NotBlank;
/**
* 社保士兵与税友切换表
*
* @author hgw
* @date 2024-12-12 09:40:56
*/
@Data
@TableName("t_social_freind_set")
@Schema(description = "社保士兵与税友切换表")
public class TSocialFreindSet {
/**
* id
*/
@TableId(type = IdType.ASSIGN_ID)
@ExcelProperty("id")
@Schema(description = "id")
private String id;
/**
* 类型:0社保士兵 1税友
*/
@ExcelAttribute(name = "类型:0社保士兵 1税友", isNotEmpty = true, errorInfo = "类型:0社保士兵 1税友不能为空")
@NotBlank(message = "类型:0社保士兵 1税友不能为空")
@ExcelProperty("类型:0社保士兵 1税友")
@Schema(description = "类型:0社保士兵 1税友")
private Integer type;
}
/*
* 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 java.time.LocalDateTime;
/**
* 社保士兵返回的数据记录表
*
* @author hgw
* @date 2024-12-12 09:40:55
*/
@Data
@TableName("t_social_friend_back_log")
@Schema(description = "社保士兵返回的数据记录表")
public class TSocialFriendBackLog {
/**
* 主键
*/
@TableId(type = IdType.ASSIGN_ID)
@ExcelProperty("主键")
@Schema(description = "主键")
private String id;
/**
* 社保ID
*/
@ExcelAttribute(name = "社保ID", maxLength = 32)
@Length(max = 32, message = "社保ID不能超过32个字符")
@ExcelProperty("社保ID")
@Schema(description = "社保ID")
private String socialId;
/**
* 请求ID
*/
@ExcelAttribute(name = "请求ID", maxLength = 50)
@Length(max = 50, message = "请求ID不能超过50个字符")
@ExcelProperty("请求ID")
@Schema(description = "请求ID")
private String requestId;
@ExcelAttribute(name = "类型")
@ExcelProperty("类型")
@Schema(description = "类型1社保增 2社保减 3医保增 4医保减 5推送的日志")
private Integer type;
/**
* 日志
*/
@ExcelAttribute(name = "日志")
@ExcelProperty("日志")
@Schema(description = "日志")
private String logInfo;
/**
* 创建时间
*/
@ExcelAttribute(name = "创建时间", isDate = true)
@ExcelProperty("创建时间")
@Schema(description = "创建时间")
private LocalDateTime createTime;
}
......@@ -1045,6 +1045,25 @@ public class TSocialInfo extends BaseEntity {
@ExcelProperty("医生大社保士兵的任务ID" )
private String ysdAddId;
/**
* 养工失税友的任务ID
*/
@Length(max = 50, message = "养工失税友的任务ID 不能超过50个字符" )
@ExcelAttribute(name = "养工失税友的任务ID", maxLength = 50)
@Schema(description = "养工失税友的任务ID" )
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("养工失税友的任务ID" )
private String ygsRequestId;
/**
* 医生大税友的任务ID
*/
@Length(max = 50, message = "医生大税友的任务ID 不能超过50个字符" )
@ExcelAttribute(name = "医生大税友的任务ID", maxLength = 50)
@Schema(description = "医生大税友的任务ID" )
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("医生大税友的任务ID" )
private String ysdRequestId;
// 派单id,社保士兵使用
@TableField(exist = false)
private String dispatchId;
......
package com.yifu.cloud.plus.v1.yifu.social.vo;
import lombok.Data;
import java.io.Serializable;
/**
* @Author fxj
* @Date 2024/5/10
* @Description
* @Version 1.0
*/
@Data
public class FriendResult implements Serializable {
// 身份证
private String idCard;
// 状态1-处理中,2-处理成功,3-处理失败,4-待办(提交成功,待网厅状态流转,上海特有)
private String zt;
// 提示或者错误信息 SUCCESS
private String cwxx;
}
package com.yifu.cloud.plus.v1.yifu.social.vo;
import com.alibaba.excel.annotation.ExcelIgnore;
import com.alibaba.excel.annotation.ExcelProperty;
import lombok.Data;
import java.io.Serializable;
import java.math.BigDecimal;
/**
* @Author hgw
* @Description 社保士兵养工失增加模板
* @Date 2024-5-10 21:05:29
**/
@Data
public class SociaFriendYgsAddVo implements Serializable {
// 社保id,用于回写
@ExcelIgnore
private String socialId;
@ExcelProperty("社保户")
private String socialHouseholdName;
// 户配置的“单位统一信用代码”
private String unitCreditCode;
// "行政区划代码"
private String areaCode;
// "社保-登录账户"
private String socialAccount;
// "社保-登录密码"
private String socialPassword;
// "医保-登录账户"
private String mediclAccount;
// "医保-登录密码"
private String mediclPassword;
// "单位编号"
private String customerNo;
// "单位编号" 医保
private String customerNoYsd;
@ExcelProperty("员工姓名")
private String empName;
@ExcelProperty("员工身份证")
private String empIdcard;
@ExcelProperty("民族")
private String empNational;
@ExcelProperty("手机号码")
private String empMobile;
// yyyy-MM-dd
@ExcelProperty("社保起缴日期")
private String socialStartDate;
// whcd 见字典“受教育程度” 空的默认“大学专科”
@ExcelProperty("学历")
private String educationName;
@ExcelProperty("备案基数")
private String recordBase;
// yyyyMM
@ExcelProperty("社保起缴月")
private String socialStartMonth;
// 用工形式ygxs contractType
// 0 订立以完成一定工作任务为期限的劳动合同 1 订立固定期限劳动合同 2 订立无固定期限劳动合同
private String contractType;
// 工作时间制度 派单表的 工时制 1=标准工作时间制度,2=综合计算工时制度,3=不定时工作时间制度
@ExcelProperty("工时制")
private String workingHours;
// 0 以完成一定工作为期限的劳动合同 1 固定期限劳动合同 2 无固定期限劳动合同
private String contractTypeTwo;
// "合同到期时间" 劳动合同截止日期 yyyy-MM-dd
@ExcelProperty("合同到期时间")
private String contractEnd;
// 中断原因 除死亡以外,其他停保原因默认:“在职人员解除/终止劳动合同” 死亡对应“死亡或失踪”
@ExcelProperty("中断原因")
private String tbyy;
// 单位提出协商一致21 职工与用人单位协商一致解除劳动合同(18条1款)
// 退休5 第四十四条第二项,劳动者开始依法享受基本养老保险待遇
//死亡16 劳动者死亡,或者被人民法院宣告死亡或者宣告失踪
//个人辞职1 劳动者提前30天书面通知解除或试用期提前3天通知解除合同
//其他20 法律、行政法规规定的其他情形
//合同期满12 劳动合同期满
//单位辞退2 劳动者严重违反用人单位的规章制度
// 其他的默认 个人辞职1 劳动者提前30天书面通知解除或试用期提前3天通知解除合同 2024-12-12 09:19:59 昨晚盛宇沟通的结果
@ExcelProperty("劳动用工备案解除/终止原因")
private String zzyy;
// 企业职工社会保险增员花名册 qyzgshbxzyhmc
private String qyzgshbxzyhmc;
// 企业职工基本医疗保险参保登记表 qyzgshbxzyhmc
private String qyzgjbylbxcbdjb;
private String socialProvince;
private String socialCity;
private String socialTown;
@ExcelProperty("单位医疗金额标志,1有,0无" )
private Integer unitMedicalMoney;
@ExcelProperty("单位生育金额标志,1有,0无" )
private Integer unitBirthMoney;
@ExcelProperty("单位大病救助金额标志,1有,0无" )
private Integer unitBigailmentMoney;
@ExcelProperty("派单类型")
private String type;
}
......@@ -145,4 +145,20 @@ public class SocialHandleSearchVo extends TDispatchInfo {
@ExcelProperty("医生大反馈" )
@ExcelIgnore
private String ysdRemark;
/**
* 社保ID
*/
@TableField(exist = false)
@Schema(description ="社保ID")
@ExcelIgnore
private String socialId;
/**
* 税友自动化办理,此标识区分于页面的导出功能,值为1 时 默认取值派单审核通过 且 未办理的派单数据
*/
@ExcelAttribute(name = "税友自动化办理")
@ExcelIgnore
@Schema(description = "税友自动化办理")
private String syFlag;
}
......@@ -84,7 +84,7 @@ public class SocialSoldierYsdAddVo implements Serializable {
private String socialTown;
@ExcelProperty("养老起缴日期")
private String pensionStart;
;
@ExcelProperty("养老基数")
private BigDecimal unitPensionCardinal;
@ExcelProperty("医疗起缴日期")
......
......@@ -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;
/**
* 个人公积金费用
*/
......
......@@ -359,6 +359,14 @@ public class TPaymentInfoNewVo extends RowIndex implements Serializable {
@ExcelProperty("个人公积金费用")
private BigDecimal personalProvidentSum;
/**
* 个人公积金比例
*/
@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;
/**
* 创建者
......
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
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