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 { ...@@ -59,11 +59,11 @@ public class TAttaInfo extends BaseEntity {
/** /**
* 关系类型(0客户附件1联系人附件2跟进记录附件3合同附件4合同归档附件5报价单6招投标7业务评估8二维码9身份证 10 户口本 * 关系类型(0客户附件1联系人附件2跟进记录附件3合同附件4合同归档附件5报价单6招投标7业务评估8二维码9身份证 10 户口本
* ;21(预入职申明签名);22(预入职确认签名);23(预入职pdf文件);0(最高教育经历);2(执业资格证书);24 身份证国徽 * ;21(预入职申明签名);22(预入职确认签名);23(预入职pdf文件);0(最高教育经历);2(执业资格证书);24 身份证国徽
* 25 户口本本人页26学信27预入职其他附件 * 25 户口本本人页26学信27预入职其他附件28户配置
*/ */
@NotBlank(message = "关系类型不能为空") @NotBlank(message = "关系类型不能为空")
@Length(max = 2, message = "关系类型不能超过2个字符") @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; private String relationType;
/** /**
* 实体id和关系类型共同确定附件所属(9、10、21、22、23、24、25存项目档案id,0、2、26存附属表id) * 实体id和关系类型共同确定附件所属(9、10、21、22、23、24、25存项目档案id,0、2、26存附属表id)
......
package com.yifu.cloud.plus.v1.yifu.archives.entity; package com.yifu.cloud.plus.v1.yifu.archives.entity;
import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableName;
import com.yifu.cloud.plus.v1.yifu.common.mybatis.base.BaseEntity; import com.yifu.cloud.plus.v1.yifu.common.mybatis.base.BaseEntity;
......
...@@ -17,10 +17,12 @@ ...@@ -17,10 +17,12 @@
package com.yifu.cloud.plus.v1.yifu.archives.entity; package com.yifu.cloud.plus.v1.yifu.archives.entity;
import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableName;
import com.yifu.cloud.plus.v1.yifu.common.mybatis.base.BaseEntity; 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.media.Schema;
import jdk.nashorn.internal.ir.annotations.Ignore;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
...@@ -251,6 +253,7 @@ public class TCustomerInfo extends BaseEntity { ...@@ -251,6 +253,7 @@ public class TCustomerInfo extends BaseEntity {
@Schema(description = "账户余额") @Schema(description = "账户余额")
private BigDecimal balance; private BigDecimal balance;
@TableField(exist = false)
private List<String> customerIds; private List<String> customerIds;
} }
...@@ -107,7 +107,7 @@ public class TEmployeeContractInfo extends BaseEntity { ...@@ -107,7 +107,7 @@ public class TEmployeeContractInfo extends BaseEntity {
* 合同起始时间 * 合同起始时间
*/ */
@NotBlank(message = "合同起始时间不能为空") @NotBlank(message = "合同起始时间不能为空")
@ExcelAttribute(name = "合同起始时间", needExport = true) @ExcelAttribute(name = "合同起始时间", needExport = true,isNotEmpty = true)
@Schema(description = "合同起始时间", name = "contractStart") @Schema(description = "合同起始时间", name = "contractStart")
@JsonFormat(shape= JsonFormat.Shape.STRING,pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+08:00") @JsonFormat(shape= JsonFormat.Shape.STRING,pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+08:00")
private Date contractStart; private Date contractStart;
......
package com.yifu.cloud.plus.v1.yifu.archives.vo; 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 com.yifu.cloud.plus.v1.yifu.archives.entity.TCompleteMonitor;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data; import lombok.Data;
...@@ -42,4 +43,10 @@ public class TCompleteMonitorSearchVo extends TCompleteMonitor { ...@@ -42,4 +43,10 @@ public class TCompleteMonitorSearchVo extends TCompleteMonitor {
@Schema(description = "查询limit 数据条数") @Schema(description = "查询limit 数据条数")
private int limitEnd; private int limitEnd;
@Schema(description = "在项人数区间开始")
private Integer inusePersonNumStart;
@Schema(description = "在项人数区间结束")
private Integer inusePersonNumEnd;
} }
...@@ -16,6 +16,7 @@ ...@@ -16,6 +16,7 @@
*/ */
package com.yifu.cloud.plus.v1.yifu.archives.vo; 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 com.yifu.cloud.plus.v1.yifu.archives.entity.TRiskMonitor;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data; import lombok.Data;
...@@ -49,4 +50,12 @@ public class TRiskMonitorSearchVo extends TRiskMonitor { ...@@ -49,4 +50,12 @@ public class TRiskMonitorSearchVo extends TRiskMonitor {
@Schema(description = "查询limit 数据条数") @Schema(description = "查询limit 数据条数")
private int limitEnd; 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 { ...@@ -57,15 +57,15 @@ public class TCompleteMonitorController {
/** /**
* 简单分页查询 * 简单分页查询
* @param page 分页对象 * @param page 分页对象
* @param tCompleteMonitor 档案完整度监控 * @param searchVo 档案完整度监控
* @return * @return
*/ */
@Operation(description = "简单分页查询") @Operation(description = "简单分页查询")
@GetMapping("/page") @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(); YifuUser user = SecurityUtils.getUser();
menuUtil.setAuthSql(user, tCompleteMonitor); menuUtil.setAuthSql(user, searchVo);
return new R<>(tCompleteMonitorService.getTCompleteMonitorPage(page,tCompleteMonitor)); return new R<>(tCompleteMonitorService.getTCompleteMonitorPage(page,searchVo));
} }
/** /**
......
...@@ -23,7 +23,6 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; ...@@ -23,7 +23,6 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.pig4cloud.plugin.excel.annotation.RequestExcel; import com.pig4cloud.plugin.excel.annotation.RequestExcel;
import com.pig4cloud.plugin.excel.vo.ErrorMessage; 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.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.TEmpChangeInfo;
import com.yifu.cloud.plus.v1.yifu.archives.entity.TSettleDomain; import com.yifu.cloud.plus.v1.yifu.archives.entity.TSettleDomain;
import com.yifu.cloud.plus.v1.yifu.archives.service.TEmpChangeInfoService; import com.yifu.cloud.plus.v1.yifu.archives.service.TEmpChangeInfoService;
...@@ -145,6 +144,20 @@ public class TEmpChangeInfoController { ...@@ -145,6 +144,20 @@ public class TEmpChangeInfoController {
,@RequestParam(required = false) String customerId, @RequestParam(required = false) String flag) { ,@RequestParam(required = false) String customerId, @RequestParam(required = false) String flag) {
return new R<>(tEmpChangeInfoService.getAllDeptPagePermission(page,departName, nameOrNo, customerId,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 * @return R
......
...@@ -22,12 +22,12 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; ...@@ -22,12 +22,12 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 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.TDepartSettlementInfo;
import com.yifu.cloud.plus.v1.yifu.archives.entity.TSettleDomain; 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.TDepartSettlementInfoService;
import com.yifu.cloud.plus.v1.yifu.archives.service.TSettleDomainService; 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.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.constant.CommonConstants;
import com.yifu.cloud.plus.v1.yifu.common.core.util.Common; import com.yifu.cloud.plus.v1.yifu.common.core.util.Common;
import com.yifu.cloud.plus.v1.yifu.common.core.util.R; import com.yifu.cloud.plus.v1.yifu.common.core.util.R;
...@@ -76,12 +76,22 @@ public class TSettleDomainController { ...@@ -76,12 +76,22 @@ public class TSettleDomainController {
@Operation(summary = "分页查询", description = "分页查询") @Operation(summary = "分页查询", description = "分页查询")
@GetMapping("/page") @GetMapping("/page")
public R<IPage<TSettleDomain>> getTSettleDomainPage(Page<TSettleDomain> page, TSettleDomain tSettleDomain) { public R<IPage<TSettleDomain>> getTSettleDomainPage(Page<TSettleDomain> page, TSettleDomain tSettleDomain) {
YifuUser user = SecurityUtils.getUser(); YifuUser user = SecurityUtils.getUser();
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); menuUtil.setAuthSql(user, tSettleDomain);
if (Common.isNotNull(tSettleDomain.getAuthSql()) && tSettleDomain.getAuthSql().contains("or a.dept_id")) { if (Common.isNotNull(tSettleDomain.getAuthSql()) && tSettleDomain.getAuthSql().contains("or a.dept_id")) {
tSettleDomain.setAuthSql(tSettleDomain.getAuthSql().replace("or a.dept_id", "or a.id ")); tSettleDomain.setAuthSql(tSettleDomain.getAuthSql().replace("or a.dept_id", "or a.id "));
} }
}
return R.ok(tSettleDomainService.getPage(page, tSettleDomain)); return R.ok(tSettleDomainService.getPage(page, tSettleDomain));
} }
...@@ -364,7 +374,8 @@ public class TSettleDomainController { ...@@ -364,7 +374,8 @@ public class TSettleDomainController {
@PostMapping("/updateProjectInfo") @PostMapping("/updateProjectInfo")
public R updateProjectInfo(@RequestBody String jsonStr) { public R updateProjectInfo(@RequestBody String jsonStr) {
try { 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) { } catch (UnsupportedEncodingException e) {
e.printStackTrace(); e.printStackTrace();
} }
...@@ -394,7 +405,8 @@ public class TSettleDomainController { ...@@ -394,7 +405,8 @@ public class TSettleDomainController {
@PostMapping("/updateProjectStopStatus") @PostMapping("/updateProjectStopStatus")
public R updateProjectStopStatus(@RequestBody String jsonStr) { public R updateProjectStopStatus(@RequestBody String jsonStr) {
try { 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) { } catch (UnsupportedEncodingException e) {
e.printStackTrace(); e.printStackTrace();
} }
...@@ -413,7 +425,8 @@ public class TSettleDomainController { ...@@ -413,7 +425,8 @@ public class TSettleDomainController {
@PostMapping("/updateProjectServerTeam") @PostMapping("/updateProjectServerTeam")
public R<Boolean> updateProjectServerTeam(@RequestBody String jsonStr) { public R<Boolean> updateProjectServerTeam(@RequestBody String jsonStr) {
try { 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) { } catch (UnsupportedEncodingException e) {
e.printStackTrace(); e.printStackTrace();
} }
......
...@@ -40,7 +40,7 @@ public interface TCompleteMonitorMapper extends BaseMapper<TCompleteMonitor> { ...@@ -40,7 +40,7 @@ public interface TCompleteMonitorMapper extends BaseMapper<TCompleteMonitor> {
* @param tCompleteMonitor 档案完整度监控 * @param tCompleteMonitor 档案完整度监控
* @return * @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> { ...@@ -24,7 +24,7 @@ public interface TCompleteMonitorService extends IService<TCompleteMonitor> {
* @param tCompleteMonitor 档案完整度监控 * @param tCompleteMonitor 档案完整度监控
* @return * @return
*/ */
IPage<TCompleteMonitor> getTCompleteMonitorPage(Page<TCompleteMonitor> page, TCompleteMonitor tCompleteMonitor); IPage<TCompleteMonitor> getTCompleteMonitorPage(Page<TCompleteMonitor> page, TCompleteMonitorSearchVo tCompleteMonitor);
/** /**
* @Description: 详情 * @Description: 详情
......
...@@ -22,7 +22,6 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; ...@@ -22,7 +22,6 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
import com.pig4cloud.plugin.excel.vo.ErrorMessage; 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.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.TEmpChangeInfo;
import com.yifu.cloud.plus.v1.yifu.archives.entity.TSettleDomain; import com.yifu.cloud.plus.v1.yifu.archives.entity.TSettleDomain;
import com.yifu.cloud.plus.v1.yifu.archives.vo.TEmpChangeInfoNewVO; import com.yifu.cloud.plus.v1.yifu.archives.vo.TEmpChangeInfoNewVO;
...@@ -86,7 +85,18 @@ public interface TEmpChangeInfoService extends IService<TEmpChangeInfo> { ...@@ -86,7 +85,18 @@ public interface TEmpChangeInfoService extends IService<TEmpChangeInfo> {
*/ */
IPage<TSettleDomain> getAllDeptPagePermission(Page page, String departName, String nameOrNo, String customerId,String flag); 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); IPage<TSettleDomain> getAllDeptPage(Page page, String deptName, String nameOrNo, String customerId,String flag);
R<Boolean> changeEmpProArcNew(TEmpChangeInfoNewVO changeVo); R<Boolean> changeEmpProArcNew(TEmpChangeInfoNewVO changeVo);
......
...@@ -88,7 +88,7 @@ public class TCompleteMonitorServiceImpl extends ServiceImpl<TCompleteMonitorMap ...@@ -88,7 +88,7 @@ public class TCompleteMonitorServiceImpl extends ServiceImpl<TCompleteMonitorMap
* @return * @return
*/ */
@Override @Override
public IPage<TCompleteMonitor> getTCompleteMonitorPage(Page<TCompleteMonitor> page, TCompleteMonitor tCompleteMonitor){ public IPage<TCompleteMonitor> getTCompleteMonitorPage(Page<TCompleteMonitor> page, TCompleteMonitorSearchVo tCompleteMonitor){
return baseMapper.getTCompleteMonitorPage(page,tCompleteMonitor); return baseMapper.getTCompleteMonitorPage(page,tCompleteMonitor);
} }
...@@ -465,8 +465,8 @@ public class TCompleteMonitorServiceImpl extends ServiceImpl<TCompleteMonitorMap ...@@ -465,8 +465,8 @@ public class TCompleteMonitorServiceImpl extends ServiceImpl<TCompleteMonitorMap
ExcelWriterSheetBuilder writeSheet; ExcelWriterSheetBuilder writeSheet;
List<TMainExportAllVO> listWork; List<TMainExportAllVO> listWork;
Map<String, TMainExportAllVO> mapWork; Map<String, TMainExportAllVO> mapWork;
List<TMainExportAllVO> listContract; // List<TMainExportAllVO> listContract;
Map<String, TMainExportAllVO> mapContract; // Map<String, TMainExportAllVO> mapContract;
List<TMainExportAllVO> listEducation; List<TMainExportAllVO> listEducation;
Map<String, TMainExportAllVO> mapEducation; Map<String, TMainExportAllVO> mapEducation;
List<TMainExportAllVO> listBad; List<TMainExportAllVO> listBad;
...@@ -492,25 +492,25 @@ public class TCompleteMonitorServiceImpl extends ServiceImpl<TCompleteMonitorMap ...@@ -492,25 +492,25 @@ public class TCompleteMonitorServiceImpl extends ServiceImpl<TCompleteMonitorMap
for (TMainExportAllVO vo : list) { for (TMainExportAllVO vo : list) {
empIdList.add(vo.getMainId()); empIdList.add(vo.getMainId());
} }
listContract = baseMapper.getTEmpMainAllListByContract(empIdList); // listContract = baseMapper.getTEmpMainAllListByContract(empIdList);
listEducation = baseMapper.getTEmpMainAllListByEducation(empIdList); listEducation = baseMapper.getTEmpMainAllListByEducation(empIdList);
listBad = baseMapper.getTEmpMainAllListByBad(empIdList); listBad = baseMapper.getTEmpMainAllListByBad(empIdList);
listDisability = baseMapper.getTEmpMainAllListByDisability(empIdList); listDisability = baseMapper.getTEmpMainAllListByDisability(empIdList);
listWork = baseMapper.getTEmpMainAllListByWork(empIdList); listWork = baseMapper.getTEmpMainAllListByWork(empIdList);
listFamily = baseMapper.getTEmpMainAllListByFamily(empIdList); listFamily = baseMapper.getTEmpMainAllListByFamily(empIdList);
listProfessional = baseMapper.getTEmpMainAllListByProfessional(empIdList); listProfessional = baseMapper.getTEmpMainAllListByProfessional(empIdList);
mapContract = new HashMap<>(); // mapContract = new HashMap<>();
mapEducation = new HashMap<>(); mapEducation = new HashMap<>();
mapBad = new HashMap<>(); mapBad = new HashMap<>();
mapDisability = new HashMap<>(); mapDisability = new HashMap<>();
mapWork = new HashMap<>(); mapWork = new HashMap<>();
mapFamily = new HashMap<>(); mapFamily = new HashMap<>();
mapProfessional = new HashMap<>(); mapProfessional = new HashMap<>();
if (listContract != null && !listContract.isEmpty()) { // if (listContract != null && !listContract.isEmpty()) {
for (TMainExportAllVO vo : listContract) { // for (TMainExportAllVO vo : listContract) {
mapContract.putIfAbsent(vo.getMainId(), vo); // mapContract.putIfAbsent(vo.getMainId(), vo);
} // }
} // }
if (listEducation != null && !listEducation.isEmpty()) { if (listEducation != null && !listEducation.isEmpty()) {
for (TMainExportAllVO vo : listEducation) { for (TMainExportAllVO vo : listEducation) {
mapEducation.putIfAbsent(vo.getMainId(), vo); mapEducation.putIfAbsent(vo.getMainId(), vo);
...@@ -518,7 +518,7 @@ public class TCompleteMonitorServiceImpl extends ServiceImpl<TCompleteMonitorMap ...@@ -518,7 +518,7 @@ public class TCompleteMonitorServiceImpl extends ServiceImpl<TCompleteMonitorMap
} }
if (listBad != null && !listBad.isEmpty()) { if (listBad != null && !listBad.isEmpty()) {
for (TMainExportAllVO vo : listBad) { for (TMainExportAllVO vo : listBad) {
mapEducation.putIfAbsent(vo.getMainId(), vo); mapBad.putIfAbsent(vo.getMainId(), vo);
} }
} }
if (listDisability != null && !listDisability.isEmpty()) { if (listDisability != null && !listDisability.isEmpty()) {
...@@ -542,14 +542,14 @@ public class TCompleteMonitorServiceImpl extends ServiceImpl<TCompleteMonitorMap ...@@ -542,14 +542,14 @@ public class TCompleteMonitorServiceImpl extends ServiceImpl<TCompleteMonitorMap
} }
} }
for (TMainExportAllVO vo : list) { for (TMainExportAllVO vo : list) {
temp = mapContract.get(vo.getMainId()); // temp = mapContract.get(vo.getMainId());
if (temp != null) { // if (temp != null) {
vo.setField26(temp.getField26()); // vo.setField26(temp.getField26());
vo.setField27(temp.getField27()); // vo.setField27(temp.getField27());
vo.setField28(temp.getField28()); // vo.setField28(temp.getField28());
vo.setField29(temp.getField29()); // vo.setField29(temp.getField29());
vo.setField30(temp.getField30()); // vo.setField30(temp.getField30());
} // }
temp = mapEducation.get(vo.getMainId()); temp = mapEducation.get(vo.getMainId());
if (temp != null) { if (temp != null) {
vo.setField36(temp.getField36()); vo.setField36(temp.getField36());
......
...@@ -368,6 +368,36 @@ public class TEmpChangeInfoServiceImpl extends ServiceImpl<TEmpChangeInfoMapper, ...@@ -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: 检测是否有某个角色权限 * @Description: 检测是否有某个角色权限
* @Author: hgw * @Author: hgw
......
...@@ -91,7 +91,6 @@ public class TEmployeeContractInfoServiceImpl extends ServiceImpl<TEmployeeContr ...@@ -91,7 +91,6 @@ public class TEmployeeContractInfoServiceImpl extends ServiceImpl<TEmployeeContr
private final TEmployeeInfoMapper tEmployeeInfoMapper; private final TEmployeeInfoMapper tEmployeeInfoMapper;
private final TEmployeeProjectService tEmployeeProjectService; private final TEmployeeProjectService tEmployeeProjectService;
private final TSettleDomainService tSettleDomainService; private final TSettleDomainService tSettleDomainService;
private final TCustomerInfoService tCustomerInfoService;
private final TAttaInfoService tAttaInfoService; private final TAttaInfoService tAttaInfoService;
private final TEmployeeContractAuditService tEmployeeContractAuditService; private final TEmployeeContractAuditService tEmployeeContractAuditService;
private final TEmployeeLogService tEmployeeLogService; private final TEmployeeLogService tEmployeeLogService;
...@@ -467,13 +466,8 @@ public class TEmployeeContractInfoServiceImpl extends ServiceImpl<TEmployeeContr ...@@ -467,13 +466,8 @@ public class TEmployeeContractInfoServiceImpl extends ServiceImpl<TEmployeeContr
if (Common.isEmpty(tEmployeeContractInfo.getSubjectDepart())) { if (Common.isEmpty(tEmployeeContractInfo.getSubjectDepart())) {
tEmployeeContractInfo.setSubjectDepart(settleDomain.getDepartName()); tEmployeeContractInfo.setSubjectDepart(settleDomain.getDepartName());
tEmployeeContractInfo.setDeptNo(settleDomain.getDepartNo()); tEmployeeContractInfo.setDeptNo(settleDomain.getDepartNo());
} tEmployeeContractInfo.setSubjectUnit(settleDomain.getCustomerName());
if (null != settleDomain.getCustomerId() && Common.isEmpty(tEmployeeContractInfo.getSubjectUnit())) { tEmployeeContractInfo.setUnitNo(settleDomain.getCustomerNo());
TCustomerInfo customerInfo = tCustomerInfoService.getById(settleDomain.getCustomerId());
if (null != customerInfo) {
tEmployeeContractInfo.setSubjectUnit(customerInfo.getCustomerName());
tEmployeeContractInfo.setUnitNo(customerInfo.getCustomerCode());
}
} }
} }
} }
......
...@@ -150,8 +150,9 @@ public class TPersonnelRosterServiceImpl extends ServiceImpl<TPersonnelRosterMap ...@@ -150,8 +150,9 @@ public class TPersonnelRosterServiceImpl extends ServiceImpl<TPersonnelRosterMap
@Override @Override
public void everyMonthUpdateRoster() { public void everyMonthUpdateRoster() {
// 清空重新生成 // 清空重新生成
String dataMonth = DateUtil.addMonth(-1);
baseMapper.delete(Wrappers.<TPersonnelRoster>query().lambda() baseMapper.delete(Wrappers.<TPersonnelRoster>query().lambda()
.eq(TPersonnelRoster::getDataCreateMonth,DateUtil.getYearAndMonth(LocalDateTime.now(),0))); .eq(TPersonnelRoster::getDataCreateMonth, dataMonth));
TPersonnelRosterSearchVo searchVo = new TPersonnelRosterSearchVo(); TPersonnelRosterSearchVo searchVo = new TPersonnelRosterSearchVo();
long count = baseMapper.getTPersonnelRosterCount(searchVo); long count = baseMapper.getTPersonnelRosterCount(searchVo);
List<TPersonnelRoster> list; List<TPersonnelRoster> list;
...@@ -186,7 +187,7 @@ public class TPersonnelRosterServiceImpl extends ServiceImpl<TPersonnelRosterMap ...@@ -186,7 +187,7 @@ public class TPersonnelRosterServiceImpl extends ServiceImpl<TPersonnelRosterMap
r.setBankProvince(rosterVo.getBankProvince()); r.setBankProvince(rosterVo.getBankProvince());
} }
} }
r.setDataCreateMonth(DateUtil.getYearAndMonth(LocalDateTime.now(),0)); r.setDataCreateMonth(dataMonth);
} }
this.saveBatch(list); this.saveBatch(list);
} }
......
...@@ -84,6 +84,12 @@ ...@@ -84,6 +84,12 @@
</if> </if>
<if test="tCompleteMonitor.afterIsComplete != null and tCompleteMonitor.afterIsComplete.trim() != ''"> <if test="tCompleteMonitor.afterIsComplete != null and tCompleteMonitor.afterIsComplete.trim() != ''">
AND a.AFTER_IS_COMPLETE = #{tCompleteMonitor.afterIsComplete} 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>
<if test="tCompleteMonitor.authSql != null and tCompleteMonitor.authSql.trim() != ''"> <if test="tCompleteMonitor.authSql != null and tCompleteMonitor.authSql.trim() != ''">
${tCompleteMonitor.authSql} ${tCompleteMonitor.authSql}
...@@ -348,6 +354,7 @@ ...@@ -348,6 +354,7 @@
,e.FILE_PROVINCE field20,e.FILE_CITY field71,e.FILE_TOWN field72,if(e.status=0,'草稿','已审核') field21 ,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 ,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 ,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 ,p.EMP_LABEL field31
,ec.EMP_NAME field32,ec.RELATION_TYPE field33,ec.ADDRESS field34,ec.TEL field35 ,ec.EMP_NAME field32,ec.RELATION_TYPE field33,ec.ADDRESS field34,ec.TEL field35
,if(e.IS_COLLEGE=0,'否','是') field39 ,if(e.IS_COLLEGE=0,'否','是') field39
...@@ -357,7 +364,8 @@ ...@@ -357,7 +364,8 @@
FROM t_complete_monitor a FROM t_complete_monitor a
left join t_employee_project p on a.DEPT_NO=p.DEPT_NO 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_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> <where>
p.DELETE_FLAG = '0' and p.PROJECT_STATUS = 0 p.DELETE_FLAG = '0' and p.PROJECT_STATUS = 0
<include refid="tCompleteMonitor_where"/> <include refid="tCompleteMonitor_where"/>
......
...@@ -157,6 +157,12 @@ ...@@ -157,6 +157,12 @@
<if test="tRiskMonitor.riskType != null and tRiskMonitor.riskType.trim() != ''"> <if test="tRiskMonitor.riskType != null and tRiskMonitor.riskType.trim() != ''">
AND a.RISK_TYPE regexp #{tRiskMonitor.riskType} AND a.RISK_TYPE regexp #{tRiskMonitor.riskType}
</if> </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() != ''"> <if test="tRiskMonitor.authSql != null and tRiskMonitor.authSql.trim() != ''">
${tRiskMonitor.authSql} ${tRiskMonitor.authSql}
</if> </if>
......
...@@ -320,7 +320,7 @@ ...@@ -320,7 +320,7 @@
FROM FROM
t_settle_domain a t_settle_domain a
<if test="userId != null and userId.trim() != '-999'"> <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> </if>
WHERE a.DELETE_FLAG = '0' WHERE a.DELETE_FLAG = '0'
/* 2023-6-12 11:12:15 hgw根据 */ /* 2023-6-12 11:12:15 hgw根据 */
......
...@@ -241,6 +241,7 @@ public class YifuTokenEndpoint { ...@@ -241,6 +241,7 @@ public class YifuTokenEndpoint {
if (null != userInfo && null != userInfo.getOpenid()) { if (null != userInfo && null != userInfo.getOpenid()) {
SysUser user = new SysUser(); SysUser user = new SysUser();
user.setWxOpenid(userInfo.getOpenid()); user.setWxOpenid(userInfo.getOpenid());
user.setWxNickName(userInfo.getNickname());
R<UserInfo> result = HttpDaprUtil.invokeMethodPost(daprUpmsProperties.getAppUrl(), daprUpmsProperties.getAppId() R<UserInfo> result = HttpDaprUtil.invokeMethodPost(daprUpmsProperties.getAppUrl(), daprUpmsProperties.getAppId()
, "/user/inner/getSysUserByWxOpenId", user, UserInfo.class, SecurityConstants.FROM_IN); , "/user/inner/getSysUserByWxOpenId", user, UserInfo.class, SecurityConstants.FROM_IN);
OAuth2AccessToken oAuth2AccessToken = null; OAuth2AccessToken oAuth2AccessToken = null;
......
...@@ -96,7 +96,8 @@ public class TCertInfoServiceImpl extends ServiceImpl<TCertInfoMapper, TCertInfo ...@@ -96,7 +96,8 @@ public class TCertInfoServiceImpl extends ServiceImpl<TCertInfoMapper, TCertInfo
// 导入字段封装 // 导入字段封装
initBusiDict(otherMap, CommonConstants.ZERO_INT); initBusiDict(otherMap, CommonConstants.ZERO_INT);
try { 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 = new ExcelUtil<>(TCertInfo.class);
util1.getJsonStringToList(jsonStr, initMapForImport(otherMap)); util1.getJsonStringToList(jsonStr, initMapForImport(otherMap));
List<TCertInfo> list = util1.getEntityList(); List<TCertInfo> list = util1.getEntityList();
...@@ -315,7 +316,8 @@ public class TCertInfoServiceImpl extends ServiceImpl<TCertInfoMapper, TCertInfo ...@@ -315,7 +316,8 @@ public class TCertInfoServiceImpl extends ServiceImpl<TCertInfoMapper, TCertInfo
// 导入字段封装 // 导入字段封装
initBusiDict(otherMap, CommonConstants.ZERO_INT); initBusiDict(otherMap, CommonConstants.ZERO_INT);
try { 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 = new ExcelUtil<>(TCertInfo.class);
util.getJsonStringToList(jsonStr, initMapForImport(otherMap)); util.getJsonStringToList(jsonStr, initMapForImport(otherMap));
List<TCertInfo> list = util.getEntityList(); List<TCertInfo> list = util.getEntityList();
......
...@@ -154,6 +154,10 @@ public interface CacheConstants { ...@@ -154,6 +154,10 @@ public interface CacheConstants {
String PAYMENT_DISPATCH_BATCH_ADD_IMPORT = "payment_dispatch_batch_add_import"; 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_SEARCH_REPEAT = "payment_search_repeat";
String PAYMENT_EXPORT_REPEAT = "payment_export_repeat"; String PAYMENT_EXPORT_REPEAT = "payment_export_repeat";
......
...@@ -632,4 +632,6 @@ public interface CommonConstants { ...@@ -632,4 +632,6 @@ public interface CommonConstants {
List<String> socialInfoStatus = Stream.of("1","3","5","7").collect(Collectors.toList()); 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 { ...@@ -1619,6 +1619,15 @@ public class DateUtil {
return sf.format(new Date()); 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: 返回当前年月日字符串 * @Description: 返回当前年月日字符串
* @Author: hgw * @Author: hgw
......
...@@ -98,6 +98,10 @@ public class R<T> implements Serializable { ...@@ -98,6 +98,10 @@ public class R<T> implements Serializable {
public static <T> R<T> other(int code, String msg) { public static <T> R<T> other(int code, String msg) {
return restResult(null, code, 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) { public static <T> R<T> other(T data, String msg, int code) {
return restResult(data, code, msg); return restResult(data, code, msg);
} }
......
...@@ -118,7 +118,7 @@ public class SocialDaprUtils { ...@@ -118,7 +118,7 @@ public class SocialDaprUtils {
* @return * @return
**/ **/
public R<TPaymentVo> getPaymentSocialAndFound(TPaymentInfo infoVo) { 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)){ if (Common.isEmpty(listVo)){
return R.failed("查询人员缴费库数据失败!"); return R.failed("查询人员缴费库数据失败!");
} }
......
...@@ -68,6 +68,21 @@ public class UpmsDaprUtils { ...@@ -68,6 +68,21 @@ public class UpmsDaprUtils {
return allUserVoR; 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 * @Author fxj
* @Description 获取指定用户名对应用户IDs * @Description 获取指定用户名对应用户IDs
......
...@@ -30,7 +30,7 @@ import javax.validation.constraints.NotBlank; ...@@ -30,7 +30,7 @@ import javax.validation.constraints.NotBlank;
import java.time.LocalDateTime; import java.time.LocalDateTime;
/** /**
* 银企付款查询卡号所属行号记录表 * 银企付款查询卡号所属行号记录表——有可能重复
* *
* @author hgw * @author hgw
* @date 2024-11-18 17:04:20 * @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; package com.yifu.cloud.plus.v1.ekp.controller;
import com.icbc.api.IcbcApiException; 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.EkpBankCodeSet;
import com.yifu.cloud.plus.v1.ekp.service.IcbcTransactionFlowQueryService; import com.yifu.cloud.plus.v1.ekp.service.IcbcTransactionFlowQueryService;
import com.yifu.cloud.plus.v1.yifu.common.core.util.Common; import com.yifu.cloud.plus.v1.yifu.common.core.util.Common;
...@@ -109,4 +108,30 @@ public class IcbcTransactionFlowQueryController { ...@@ -109,4 +108,30 @@ public class IcbcTransactionFlowQueryController {
} }
return icbcTransactionFlowQueryService.querybankinfo(cardNo); 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 { ...@@ -60,7 +60,8 @@ public class TEkpSocialInfoController {
@PostMapping("/updateScoialStatus") @PostMapping("/updateScoialStatus")
public R updateScoialStatus(@RequestBody String jsonStr) { public R updateScoialStatus(@RequestBody String jsonStr) {
try { 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) { } catch (UnsupportedEncodingException e) {
e.printStackTrace(); e.printStackTrace();
} }
......
...@@ -19,6 +19,7 @@ package com.yifu.cloud.plus.v1.ekp.mapper; ...@@ -19,6 +19,7 @@ package com.yifu.cloud.plus.v1.ekp.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.yifu.cloud.plus.v1.ekp.entity.EkpBankGrantDetail; 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 com.yifu.cloud.plus.v1.ekp.vo.EkpBankExcelVo;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
...@@ -64,4 +65,17 @@ public interface EkpBankGrantDetailMapper extends BaseMapper<EkpBankGrantDetail> ...@@ -64,4 +65,17 @@ public interface EkpBankGrantDetailMapper extends BaseMapper<EkpBankGrantDetail>
// 获取明细表ID来更新状态 // 获取明细表ID来更新状态
List<EkpBankGrantDetail> getListByParentId(@Param("fdParentId") String fdParentId); 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; ...@@ -19,10 +19,12 @@ package com.yifu.cloud.plus.v1.ekp.service;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
import com.yifu.cloud.plus.v1.ekp.entity.EkpBankGrantDetail; 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 com.yifu.cloud.plus.v1.ekp.vo.EkpBankExcelVo;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import java.util.List; import java.util.List;
import java.util.Map;
/** /**
* 发放结果明细(银企付款任务) * 发放结果明细(银企付款任务)
...@@ -61,4 +63,26 @@ public interface EkpBankGrantDetailService extends IService<EkpBankGrantDetail> ...@@ -61,4 +63,26 @@ public interface EkpBankGrantDetailService extends IService<EkpBankGrantDetail>
// 获取明细表ID来更新状态 // 获取明细表ID来更新状态
List<EkpBankGrantDetail> getListByParentId(String fdParentId); 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; ...@@ -2,7 +2,6 @@ package com.yifu.cloud.plus.v1.ekp.service;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
import com.icbc.api.IcbcApiException; 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.EkpBankCodeSet;
import com.yifu.cloud.plus.v1.ekp.entity.EkpSocialInfo; import com.yifu.cloud.plus.v1.ekp.entity.EkpSocialInfo;
import com.yifu.cloud.plus.v1.yifu.common.core.util.R; import com.yifu.cloud.plus.v1.yifu.common.core.util.R;
...@@ -31,4 +30,20 @@ public interface IcbcTransactionFlowQueryService extends IService<EkpSocialInfo> ...@@ -31,4 +30,20 @@ public interface IcbcTransactionFlowQueryService extends IService<EkpSocialInfo>
**/ **/
R<EkpBankCodeSet> querybankinfo(String cardNo); 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; ...@@ -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.entity.EkpBankGrantDetail;
import com.yifu.cloud.plus.v1.ekp.mapper.EkpBankGrantDetailMapper; 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.service.EkpBankGrantDetailService;
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.EkpBankExcelVo;
import lombok.extern.log4j.Log4j2; import lombok.extern.log4j.Log4j2;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map;
/** /**
* 发放结果明细(银企付款任务) * 发放结果明细(银企付款任务)
...@@ -96,4 +99,34 @@ public class EkpBankGrantDetailServiceImpl extends ServiceImpl<EkpBankGrantDetai ...@@ -96,4 +99,34 @@ public class EkpBankGrantDetailServiceImpl extends ServiceImpl<EkpBankGrantDetai
return baseMapper.getListByParentId(fdParentId); 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; ...@@ -3,7 +3,6 @@ package com.yifu.cloud.plus.v1.ekp.service.impl;
import com.alibaba.excel.EasyExcelFactory; import com.alibaba.excel.EasyExcelFactory;
import com.alibaba.excel.support.ExcelTypeEnum; import com.alibaba.excel.support.ExcelTypeEnum;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.ObjectMapper;
import com.icbc.api.DefaultIcbcClient; import com.icbc.api.DefaultIcbcClient;
...@@ -22,6 +21,7 @@ import com.yifu.cloud.plus.v1.ekp.entity.*; ...@@ -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.mapper.EkpSocialInfoMapper;
import com.yifu.cloud.plus.v1.ekp.service.*; 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.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.EkpBankExcelVo;
import com.yifu.cloud.plus.v1.ekp.vo.EkpBankResultVo; import com.yifu.cloud.plus.v1.ekp.vo.EkpBankResultVo;
import com.yifu.cloud.plus.v1.yifu.common.core.constant.CommonConstants; import com.yifu.cloud.plus.v1.yifu.common.core.constant.CommonConstants;
...@@ -407,7 +407,8 @@ public class IcbcTransactionFlowIssueServiceImpl extends ServiceImpl<EkpSocialIn ...@@ -407,7 +407,8 @@ public class IcbcTransactionFlowIssueServiceImpl extends ServiceImpl<EkpSocialIn
EkpBankAttaReturnVo vo = new EkpBankAttaReturnVo(); EkpBankAttaReturnVo vo = new EkpBankAttaReturnVo();
List<EkpBankExcelVo> list; List<EkpBankExcelVo> list;
// 获取配置的行号
Map<String, EkpBankCodeConfiglVo> bankMap = ekpBankGrantDetailService.getEkpBankCodeConfiglVo();
// 1主表整体下载 // 1主表整体下载
if (CommonConstants.ONE_STRING.equals(type)) { if (CommonConstants.ONE_STRING.equals(type)) {
EkpBankPayTask main = ekpBankPayTaskService.getById(fdId); EkpBankPayTask main = ekpBankPayTaskService.getById(fdId);
...@@ -422,7 +423,7 @@ public class IcbcTransactionFlowIssueServiceImpl extends ServiceImpl<EkpSocialIn ...@@ -422,7 +423,7 @@ public class IcbcTransactionFlowIssueServiceImpl extends ServiceImpl<EkpSocialIn
} }
// 新下载 // 新下载
list = ekpBankGrantDetailService.getEkpBankExcelVoByIdAndMain(fdId); 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); redisUtil.remove(redisKey);
return returnVoR; return returnVoR;
} else if (Common.isNotNull(main.getFdAttaSrc())) { } else if (Common.isNotNull(main.getFdAttaSrc())) {
...@@ -443,7 +444,7 @@ public class IcbcTransactionFlowIssueServiceImpl extends ServiceImpl<EkpSocialIn ...@@ -443,7 +444,7 @@ public class IcbcTransactionFlowIssueServiceImpl extends ServiceImpl<EkpSocialIn
} }
// 新下载 // 新下载
list = ekpBankGrantDetailService.getEkpBankExcelVoByIdAndDetail(fdId); 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); redisUtil.remove(redisKey);
return returnVoR; return returnVoR;
} else if (Common.isNotNull(detail.getFdAttaSrc())) { } else if (Common.isNotNull(detail.getFdAttaSrc())) {
...@@ -482,9 +483,10 @@ public class IcbcTransactionFlowIssueServiceImpl extends ServiceImpl<EkpSocialIn ...@@ -482,9 +483,10 @@ public class IcbcTransactionFlowIssueServiceImpl extends ServiceImpl<EkpSocialIn
* @Date: 2024/11/20 17:08 * @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> * @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()) { if (list != null && !list.isEmpty()) {
EkpBankAtta atta = getNewFileCore(fdId, type, vo, list); EkpBankAtta atta = getNewFileCore(fdId, type, vo, list, bankMap);
if (atta != null) { if (atta != null) {
main.setFdAttaName(atta.getFdAttaName()); main.setFdAttaName(atta.getFdAttaName());
main.setFdAttaSrc(atta.getFdAttaSrc()); main.setFdAttaSrc(atta.getFdAttaSrc());
...@@ -510,9 +512,10 @@ public class IcbcTransactionFlowIssueServiceImpl extends ServiceImpl<EkpSocialIn ...@@ -510,9 +512,10 @@ public class IcbcTransactionFlowIssueServiceImpl extends ServiceImpl<EkpSocialIn
* @Date: 2024/11/20 17:08 * @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> * @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()) { if (list != null && !list.isEmpty()) {
EkpBankAtta atta = getNewFileCore(fdId, type, vo, list); EkpBankAtta atta = getNewFileCore(fdId, type, vo, list, bankMap);
if (atta != null) { if (atta != null) {
main.setFdAttaName(atta.getFdAttaName()); main.setFdAttaName(atta.getFdAttaName());
main.setFdAttaSrc(atta.getFdAttaSrc()); main.setFdAttaSrc(atta.getFdAttaSrc());
...@@ -527,18 +530,26 @@ public class IcbcTransactionFlowIssueServiceImpl extends ServiceImpl<EkpSocialIn ...@@ -527,18 +530,26 @@ public class IcbcTransactionFlowIssueServiceImpl extends ServiceImpl<EkpSocialIn
return R.failed("未找到待发放的明细数据,下载失败!!"); 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; EkpBankCodeSet codeSet;
R<EkpBankCodeSet> bankInfoQuery; R<EkpBankCodeSet> bankInfoQuery;
EkpBankCodeConfiglVo bankVo;
// 组装 // 组装
for (EkpBankExcelVo excelVo : list) { for (EkpBankExcelVo excelVo : list) {
if (Common.isEmpty(excelVo.getFdRecipientBankCode())) { if (Common.isEmpty(excelVo.getFdRecipientBankCode())) {
// 查询行号 // 查询行号
bankInfoQuery = icbcTransactionFlowQueryService.querybankinfo(excelVo.getFdPayeeAccount()); 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(); codeSet = bankInfoQuery.getData();
excelVo.setFdRecipientBankCode(codeSet.getFdRecipientBankCode()); excelVo.setFdRecipientBankCode(codeSet.getFdRecipientBankCode());
excelVo.setFdRecipientBank(codeSet.getFdRecipientBank()); 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 ...@@ -719,6 +730,9 @@ public class IcbcTransactionFlowIssueServiceImpl extends ServiceImpl<EkpSocialIn
ekpBankPayTaskService.updateById(main); ekpBankPayTaskService.updateById(main);
// 同步更新明细的发放时间、发放状态 // 同步更新明细的发放时间、发放状态
ekpBankGrantDetailService.updateStatusByGrant(fdId); ekpBankGrantDetailService.updateStatusByGrant(fdId);
// 更新 工资支出 的 银企出纳名字
ekpBankGrantDetailService.updateGongZiZhiChuTable(fdId, submitUser);
ekpBankGrantDetailService.updateGongZiZhiChuMain(fdId, submitUser);
} }
redisUtil.remove(redisKey); redisUtil.remove(redisKey);
return returnR; return returnR;
......
...@@ -6,14 +6,8 @@ import com.fasterxml.jackson.databind.ObjectMapper; ...@@ -6,14 +6,8 @@ import com.fasterxml.jackson.databind.ObjectMapper;
import com.icbc.api.DefaultIcbcClient; import com.icbc.api.DefaultIcbcClient;
import com.icbc.api.IcbcApiException; import com.icbc.api.IcbcApiException;
import com.icbc.api.IcbcConstants; import com.icbc.api.IcbcConstants;
import com.icbc.api.request.JftApiB2bpayTransqueryRequestV1; import com.icbc.api.request.*;
import com.icbc.api.request.JftApiPayB2bpayGenpreorderRequestV1; import com.icbc.api.response.*;
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.yifu.cloud.plus.v1.ekp.config.EkpEntryProperties; 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.config.IcbcConfigProperties;
import com.yifu.cloud.plus.v1.ekp.entity.EkpBankCodeSet; import com.yifu.cloud.plus.v1.ekp.entity.EkpBankCodeSet;
...@@ -22,7 +16,6 @@ import com.yifu.cloud.plus.v1.ekp.mapper.EkpSocialInfoMapper; ...@@ -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.EkpBankCodeSetService;
import com.yifu.cloud.plus.v1.ekp.service.IcbcTransactionFlowQueryService; import com.yifu.cloud.plus.v1.ekp.service.IcbcTransactionFlowQueryService;
import com.yifu.cloud.plus.v1.ekp.vo.EKPEntryPushParam; 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.DateUtil;
import com.yifu.cloud.plus.v1.yifu.common.core.util.R; import com.yifu.cloud.plus.v1.yifu.common.core.util.R;
import io.micrometer.core.instrument.util.StringUtils; import io.micrometer.core.instrument.util.StringUtils;
...@@ -498,6 +491,87 @@ public class IcbcTransactionFlowQueryServiceImpl extends ServiceImpl<EkpSocialIn ...@@ -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, private void initValue(MybankEnterpriseTradeQhisdResponseV1.MybankEnterpriseTradeQhisdResponseRdV1 entry,
EKPEntryPushParam pushParam,String bankName,String bankNo) throws ParseException { EKPEntryPushParam pushParam,String bankName,String bankNo) throws ParseException {
pushParam.setFd_recipName(entry.getRecipName()); pushParam.setFd_recipName(entry.getRecipName());
......
...@@ -90,12 +90,16 @@ ...@@ -90,12 +90,16 @@
<select id="getEkpBankExcelVoByIdAndMain" resultType="com.yifu.cloud.plus.v1.ekp.vo.EkpBankExcelVo"> <select id="getEkpBankExcelVoByIdAndMain" resultType="com.yifu.cloud.plus.v1.ekp.vo.EkpBankExcelVo">
<include refid="Base_Excel_Sql"/> <include refid="Base_Excel_Sql"/>
(a.fd_handle_status is null or a.fd_handle_status = '待发放') and a.fd_parent_id = #{fdParentId} (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>
<!-- 查询主表下的所有待发放数据 --> <!-- 查询主表下的所有待发放数据 -->
<select id="getEkpBankExcelVoByIdAndDetail" resultType="com.yifu.cloud.plus.v1.ekp.vo.EkpBankExcelVo"> <select id="getEkpBankExcelVoByIdAndDetail" resultType="com.yifu.cloud.plus.v1.ekp.vo.EkpBankExcelVo">
<include refid="Base_Excel_Sql"/> <include refid="Base_Excel_Sql"/>
a.fd_handle_status = '待发放' and a.fd_id = #{fdId} a.fd_handle_status = '待发放' and a.fd_id = #{fdId}
GROUP BY a.fd_id
ORDER BY (a.fd_serial_number-0) asc
</select> </select>
<!-- 查询编号是否重复 --> <!-- 查询编号是否重复 -->
...@@ -177,4 +181,21 @@ ...@@ -177,4 +181,21 @@
</if> </if>
</update> </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> </mapper>
...@@ -156,7 +156,20 @@ public class DeptChangeCheckParam implements Serializable { ...@@ -156,7 +156,20 @@ public class DeptChangeCheckParam implements Serializable {
* 客户编码 * 客户编码
*/ */
@Schema(description = "客户编码") @Schema(description = "客户编码")
private String oldCustomerCode; 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; 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.EkpInsuranceViewVo;
import com.yifu.cloud.plus.v1.yifu.insurances.vo.EkpSocialViewVo; import com.yifu.cloud.plus.v1.yifu.insurances.vo.EkpSocialViewVo;
import com.yifu.cloud.plus.v1.yifu.insurances.vo.SettleVo; import com.yifu.cloud.plus.v1.yifu.insurances.vo.SettleVo;
...@@ -24,6 +25,24 @@ public interface EkpSettleMapper { ...@@ -24,6 +25,24 @@ public interface EkpSettleMapper {
*/ */
SettleVo getSettle(String id); 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; ...@@ -3,6 +3,7 @@ package com.yifu.cloud.plus.v1.yifu.insurances.service.ekp;
import com.baomidou.mybatisplus.extension.service.IService; 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.common.core.util.R;
import com.yifu.cloud.plus.v1.yifu.insurances.entity.TInsuranceTypeRate; 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.EkpInsuranceViewVo;
import com.yifu.cloud.plus.v1.yifu.insurances.vo.EkpSocialViewVo; import com.yifu.cloud.plus.v1.yifu.insurances.vo.EkpSocialViewVo;
import com.yifu.cloud.plus.v1.yifu.insurances.vo.SettleVo; import com.yifu.cloud.plus.v1.yifu.insurances.vo.SettleVo;
...@@ -25,6 +26,10 @@ public interface EkpSettleService extends IService<TInsuranceTypeRate> { ...@@ -25,6 +26,10 @@ public interface EkpSettleService extends IService<TInsuranceTypeRate> {
*/ */
SettleVo getSettle(String id); SettleVo getSettle(String id);
DeptSettleVo getDeptSettle(String id);
DeptSettleVo getDeptYgSettle(String id);
/** /**
* 从商险订单明细中获取当前保单的结算状态 * 从商险订单明细中获取当前保单的结算状态
* *
......
...@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; ...@@ -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.entity.TInsuranceTypeRate;
import com.yifu.cloud.plus.v1.yifu.insurances.mapper.ekp.EkpSettleMapper; 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.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.EkpInsuranceViewVo;
import com.yifu.cloud.plus.v1.yifu.insurances.vo.EkpSocialViewVo; import com.yifu.cloud.plus.v1.yifu.insurances.vo.EkpSocialViewVo;
import com.yifu.cloud.plus.v1.yifu.insurances.vo.SettleVo; import com.yifu.cloud.plus.v1.yifu.insurances.vo.SettleVo;
...@@ -31,6 +32,16 @@ public class EkpSettleServiceImpl implements EkpSettleService { ...@@ -31,6 +32,16 @@ public class EkpSettleServiceImpl implements EkpSettleService {
return ekpSettleMapper.getSettle(id); 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 @Override
public String getSettleStatusFromEkpInsuranceDetail(String id) { public String getSettleStatusFromEkpInsuranceDetail(String id) {
return ekpSettleMapper.getSettleStatusFromEkpInsuranceDetail(id); return ekpSettleMapper.getSettleStatusFromEkpInsuranceDetail(id);
......
...@@ -468,6 +468,10 @@ public interface TInsuranceDetailService extends IService<TInsuranceDetail> { ...@@ -468,6 +468,10 @@ public interface TInsuranceDetailService extends IService<TInsuranceDetail> {
SettleVo getInsuranceDetailSettleStatus(String detailId, String defaultSettleId); SettleVo getInsuranceDetailSettleStatus(String detailId, String defaultSettleId);
DeptSettleVo deptUpdGetSettleStatusFromEkpInsuranceDetail(String detailId, String defaultSettleId);
DeptSettleVo deptYgGetSettleStatusFromEkpInsuranceDetail(String detailId, String defaultSettleId);
/** /**
* @param changeDeptVo * @param changeDeptVo
* @Description: ekp费用划转,商险划转项目 * @Description: ekp费用划转,商险划转项目
......
...@@ -11,6 +11,13 @@ ...@@ -11,6 +11,13 @@
<result property="actualStatus" column="fd_3b05bd5ed0b976" jdbcType="VARCHAR"/> <result property="actualStatus" column="fd_3b05bd5ed0b976" jdbcType="VARCHAR"/>
</resultMap> </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"> <resultMap id="BaseResultStatusMap" type="com.yifu.cloud.plus.v1.yifu.insurances.vo.EkpInsuranceViewVo">
<id property="id" column="detailsId" jdbcType="VARCHAR"/> <id property="id" column="detailsId" jdbcType="VARCHAR"/>
<result property="incomeSettleFlag" column="earningStatus" jdbcType="VARCHAR"/> <result property="incomeSettleFlag" column="earningStatus" jdbcType="VARCHAR"/>
...@@ -37,6 +44,10 @@ ...@@ -37,6 +44,10 @@
detailsId,earningStatus,receiptStatus,zhichuEarningStatus,payStatus,orderType detailsId,earningStatus,receiptStatus,zhichuEarningStatus,payStatus,orderType
</sql> </sql>
<sql id="Base_Column_Dept">
fd_id,fd_3b0a5743acab7e,fd_3adfe6ec6a8cbe,fd_3adfe6eda67236
</sql>
<select id="getSettle" resultMap="BaseResultMap"> <select id="getSettle" resultMap="BaseResultMap">
select select
<include refid="Base_Column_List"></include> <include refid="Base_Column_List"></include>
...@@ -55,6 +66,24 @@ ...@@ -55,6 +66,24 @@
fd_3b0a5743acab7e = #{id} limit 1 fd_3b0a5743acab7e = #{id} limit 1
</select> </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 id="selectSettleStatusBySettleNo" resultMap="BaseResultStatusMap">
select select
......
...@@ -194,6 +194,29 @@ public class SocialTask { ...@@ -194,6 +194,29 @@ public class SocialTask {
log.info("------------2定时任务推送社保士兵-定时任务结束------------"); 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每日定时任务推送社保士兵审核结果查询 * @Description: 3每日定时任务推送社保士兵审核结果查询
* @Author: hgw * @Author: hgw
......
...@@ -174,7 +174,8 @@ public class SysUserPermissionController { ...@@ -174,7 +174,8 @@ public class SysUserPermissionController {
@PostMapping("/autoCreateAuth") @PostMapping("/autoCreateAuth")
public R<String> autoCreateAuth(@RequestBody String jsonStr) { public R<String> autoCreateAuth(@RequestBody String jsonStr) {
try { 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) { } catch (UnsupportedEncodingException e) {
e.printStackTrace(); 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 { ...@@ -105,7 +105,7 @@ public class TSalaryAtta extends BaseEntity {
/** /**
* 类型:0工资;1工程工资;2暂停发;3自定义项暂停发;4打印记录;5核准表打印记录;6:非扣税项;8自有员工附件 * 类型:0工资;1工程工资;2暂停发;3自定义项暂停发;4打印记录;5核准表打印记录;6:非扣税项;8自有员工附件
* ;9财务回执附件;10换人换卡;11薪资原表;12劳务费或稿酬已有发薪记录;13薪资特殊值(3500、5000) * ;9财务回执附件;10换人换卡;11薪资原表;12劳务费或稿酬已有发薪记录;13薪资特殊值(3500、5000)
* 14:薪资详情导出组装的附件 * 14:薪资详情导出组装的附件 15:工资查询问题反馈附件
*/ */
@ExcelAttribute(name = "类型") @ExcelAttribute(name = "类型")
@HeadFontStyle(fontHeightInPoints = 11) @HeadFontStyle(fontHeightInPoints = 11)
......
...@@ -212,4 +212,8 @@ public class TSalaryEmployee extends BaseEntity { ...@@ -212,4 +212,8 @@ public class TSalaryEmployee extends BaseEntity {
@TableField(exist = false) @TableField(exist = false)
private String salaryGiveTime; 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; ...@@ -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.entity.*;
import com.yifu.cloud.plus.v1.yifu.salary.service.*; 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.AccountForWxVo;
import com.yifu.cloud.plus.v1.yifu.salary.vo.TSalaryEmployeeWxVo;
import com.yifu.cloud.plus.v1.yifu.salary.vo.TSalarySetVo; import com.yifu.cloud.plus.v1.yifu.salary.vo.TSalarySetVo;
import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag; import io.swagger.v3.oas.annotations.tags.Tag;
...@@ -64,7 +65,14 @@ public class TSalaryAccountPhoneController { ...@@ -64,7 +65,14 @@ public class TSalaryAccountPhoneController {
**/ **/
@Operation(description = "获取工资报账信息") @Operation(description = "获取工资报账信息")
@GetMapping("/getSalaryAccount") @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(); AccountForWxVo result = new AccountForWxVo();
//处理身份证防止小写干扰 //处理身份证防止小写干扰
idNumber = idNumber.toUpperCase(); idNumber = idNumber.toUpperCase();
...@@ -121,7 +129,11 @@ public class TSalaryAccountPhoneController { ...@@ -121,7 +129,11 @@ public class TSalaryAccountPhoneController {
**/ **/
@Operation(description = "获取工资明细信息") @Operation(description = "获取工资明细信息")
@GetMapping("/getSalaryAccountForm") @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) { if (null == type) {
return R.failed("查询类型不能为空"); return R.failed("查询类型不能为空");
...@@ -161,7 +173,7 @@ public class TSalaryAccountPhoneController { ...@@ -161,7 +173,7 @@ public class TSalaryAccountPhoneController {
*/ */
@Operation(description = "根据手机号获取员工信息") @Operation(description = "根据手机号获取员工信息")
@GetMapping("/getInfoByEmpPhone") @GetMapping("/getInfoByEmpPhone")
public R<TSalaryEmployee> getInfoByEmpPhone(@RequestParam String empPhone) { public R<TSalaryEmployeeWxVo> getInfoByEmpPhone(@RequestParam String empPhone) {
if (Common.isEmpty(empPhone)) { if (Common.isEmpty(empPhone)) {
return R.failed("手机号不能为空"); return R.failed("手机号不能为空");
} }
...@@ -170,7 +182,7 @@ public class TSalaryAccountPhoneController { ...@@ -170,7 +182,7 @@ public class TSalaryAccountPhoneController {
.eq(TSalaryEmployee::getEmpPhone, empPhone).last(CommonConstants.LAST_ONE_SQL)); .eq(TSalaryEmployee::getEmpPhone, empPhone).last(CommonConstants.LAST_ONE_SQL));
//判断是查到员工信息 //判断是查到员工信息
if (Common.isNotNull(employee) && Common.isNotNull(employee.getEmpIdcard())) { if (Common.isNotNull(employee) && Common.isNotNull(employee.getEmpIdcard())) {
return this.getUserCount(employee); return this.getUserAndEmp(employee);
} else { } else {
return R.failed("未查到信息,请核实手机号!"); return R.failed("未查到信息,请核实手机号!");
} }
...@@ -192,6 +204,26 @@ public class TSalaryAccountPhoneController { ...@@ -192,6 +204,26 @@ public class TSalaryAccountPhoneController {
} }
return R.ok(em); 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 手机号 * @param phone 手机号
...@@ -221,4 +253,12 @@ public class TSalaryAccountPhoneController { ...@@ -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 { ...@@ -74,7 +74,7 @@ public class TSalaryAttaController {
* @Date: 2021-12-8 15:36:58 * @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>> * @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") @GetMapping("/getTSalaryAttaListByIdType")
public R<List<TSalaryAtta>> getTSalaryAttaListByIdType(@RequestParam String linkId, @RequestParam Integer linkType) { public R<List<TSalaryAtta>> getTSalaryAttaListByIdType(@RequestParam String linkId, @RequestParam Integer linkType) {
return new R<>(tSalaryAttaService.getAttaListHaveSrc(linkId, linkType)); return new R<>(tSalaryAttaService.getAttaListHaveSrc(linkId, linkType));
...@@ -89,7 +89,7 @@ public class TSalaryAttaController { ...@@ -89,7 +89,7 @@ public class TSalaryAttaController {
* @throws IOException * @throws IOException
*/ */
@SysLog("薪资附件上传") @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({ /*@ApiImplicitParams({
@ApiImplicitParam(name = "file", value = "Form文件上传", required = true, dataType = "__file", paramType = "form"), @ApiImplicitParam(name = "file", value = "Form文件上传", required = true, dataType = "__file", paramType = "form"),
@ApiImplicitParam(name = "filePath", value = "文件上传路径", dataType = "String", 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> { ...@@ -43,4 +43,6 @@ public interface TSalaryAttaMapper extends BaseMapper<TSalaryAtta> {
IPage<TSalaryAtta> getTAttaPage(Page page, @Param("tAtta") TSalaryAtta tAtta); IPage<TSalaryAtta> getTAttaPage(Page page, @Param("tAtta") TSalaryAtta tAtta);
List<TSalaryAtta> getTAttaList(@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, ...@@ -181,7 +181,8 @@ public class SalaryUploadServiceImpl extends ServiceImpl<TSalaryStandardMapper,
} }
} }
try { 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); vo.setJsonString(jsonString);
SalaryAccountUtil util1 = new SalaryAccountUtil(); SalaryAccountUtil util1 = new SalaryAccountUtil();
...@@ -1554,7 +1555,7 @@ public class SalaryUploadServiceImpl extends ServiceImpl<TSalaryStandardMapper, ...@@ -1554,7 +1555,7 @@ public class SalaryUploadServiceImpl extends ServiceImpl<TSalaryStandardMapper,
/** /**
* @param savList 报账表Vo * @param savList 报账表Vo
* @param orderId * @param vo
* @Description: 保存并提交 * @Description: 保存并提交
* @Author: huyc * @Author: huyc
* @Date: 2022/8/16 * @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; ...@@ -22,6 +22,7 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; 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.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.Common;
import com.yifu.cloud.plus.v1.yifu.common.core.util.DateUtil; import com.yifu.cloud.plus.v1.yifu.common.core.util.DateUtil;
import com.yifu.cloud.plus.v1.yifu.common.core.util.OSSUtil; import com.yifu.cloud.plus.v1.yifu.common.core.util.OSSUtil;
...@@ -55,6 +56,7 @@ import java.io.InputStream; ...@@ -55,6 +56,7 @@ import java.io.InputStream;
import java.net.URL; import java.net.URL;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.List; import java.util.List;
import java.util.concurrent.atomic.AtomicInteger;
/** /**
* 薪资结算附件表 * 薪资结算附件表
...@@ -72,6 +74,8 @@ public class TSalaryAttaServiceImpl extends ServiceImpl<TSalaryAttaMapper, TSala ...@@ -72,6 +74,8 @@ public class TSalaryAttaServiceImpl extends ServiceImpl<TSalaryAttaMapper, TSala
private final TSalaryStandardService tSalaryStandardService; private final TSalaryStandardService tSalaryStandardService;
private final TSalaryAccountService tSalaryAccountService; private final TSalaryAccountService tSalaryAccountService;
private final AtomicInteger atomicInteger = new AtomicInteger(0);
/** /**
* 薪资结算附件表简单分页查询 * 薪资结算附件表简单分页查询
* *
...@@ -139,6 +143,10 @@ public class TSalaryAttaServiceImpl extends ServiceImpl<TSalaryAttaMapper, TSala ...@@ -139,6 +143,10 @@ public class TSalaryAttaServiceImpl extends ServiceImpl<TSalaryAttaMapper, TSala
@Override @Override
public R<FileVo> uploadAtta(@RequestBody MultipartFile file, String filePath, String linkId public R<FileVo> uploadAtta(@RequestBody MultipartFile file, String filePath, String linkId
, Integer linkType, Integer engineerType, String printRemark, String recordId) throws IOException { , Integer linkType, Integer engineerType, String printRemark, String recordId) throws IOException {
//初始化附件上传队列上限值
int maxLimit = 5;
if (atomicInteger.incrementAndGet() <= maxLimit){
try {
String fileName = System.currentTimeMillis() + "_" + file.getOriginalFilename(); String fileName = System.currentTimeMillis() + "_" + file.getOriginalFilename();
//filePath不传默认存储空间的根目录 //filePath不传默认存储空间的根目录
//jpg,jpeg,png,bmp //jpg,jpeg,png,bmp
...@@ -153,7 +161,6 @@ public class TSalaryAttaServiceImpl extends ServiceImpl<TSalaryAttaMapper, TSala ...@@ -153,7 +161,6 @@ public class TSalaryAttaServiceImpl extends ServiceImpl<TSalaryAttaMapper, TSala
TSalaryAtta salaryAtta; TSalaryAtta salaryAtta;
URL url = null; URL url = null;
if (flag) { if (flag) {
log.info("文件:" + fileName + "上传至存储空间" + ossUtil.getBucketName() + "成功!");
salaryAtta = this.saveTSalaryAtta(fileName, key, file.getSize(), linkId, linkType, engineerType, printRemark, recordId); salaryAtta = this.saveTSalaryAtta(fileName, key, file.getSize(), linkId, linkType, engineerType, printRemark, recordId);
try { try {
this.save(salaryAtta); this.save(salaryAtta);
...@@ -168,6 +175,17 @@ public class TSalaryAttaServiceImpl extends ServiceImpl<TSalaryAttaMapper, TSala ...@@ -168,6 +175,17 @@ public class TSalaryAttaServiceImpl extends ServiceImpl<TSalaryAttaMapper, TSala
} else { } else {
return R.failed("failed:上传至存储空间失败"); return R.failed("failed:上传至存储空间失败");
} }
}catch (Exception e){
log.error("附件上传异常:",e);
}finally {
atomicInteger.decrementAndGet();
}
}else {
atomicInteger.decrementAndGet();
log.error("超出阈值:"+ ResultConstants.FILE_UPLOADING_DATA);
return R.failed(ResultConstants.FILE_UPLOADING_DATA);
}
return null;
} }
/** /**
......
...@@ -428,7 +428,7 @@ public class TSalaryStandardOriginalServiceImpl extends ServiceImpl<TSalaryStand ...@@ -428,7 +428,7 @@ public class TSalaryStandardOriginalServiceImpl extends ServiceImpl<TSalaryStand
} }
} }
if (dataRowFlag) { if (dataRowFlag) {
if (idCardNum != -1) { if (idCardNum != null && idCardNum != -1) {
return R.failed("您配置的身份证列第【"+(idCardNum+1)+"】列未找到身份证,请确认表头配置或表格数据!!"); return R.failed("您配置的身份证列第【"+(idCardNum+1)+"】列未找到身份证,请确认表头配置或表格数据!!");
} }
return R.failed("未找到身份证所在的数据行,请检查表数据!!"); return R.failed("未找到身份证所在的数据行,请检查表数据!!");
...@@ -713,7 +713,7 @@ public class TSalaryStandardOriginalServiceImpl extends ServiceImpl<TSalaryStand ...@@ -713,7 +713,7 @@ public class TSalaryStandardOriginalServiceImpl extends ServiceImpl<TSalaryStand
} }
} }
if (dataRowFlag) { if (dataRowFlag) {
if (idCardNum != -1) { if (idCardNum != null && idCardNum != -1) {
return R.failed("您配置的身份证列第【"+(idCardNum+1)+"】列未找到身份证,请确认表头配置或表格数据!!"); return R.failed("您配置的身份证列第【"+(idCardNum+1)+"】列未找到身份证,请确认表头配置或表格数据!!");
} }
return R.failed("未找到身份证所在的数据行,请检查表数据!!"); return R.failed("未找到身份证所在的数据行,请检查表数据!!");
......
...@@ -44,6 +44,12 @@ security: ...@@ -44,6 +44,12 @@ security:
- /tsalaryemployee/inner/getEmpTaxMonth - /tsalaryemployee/inner/getEmpTaxMonth
- /tsalaryemployee/inner/getSalaryEmployee - /tsalaryemployee/inner/getSalaryEmployee
- /tsalaryemployee/inner/savePreNewEmpInfo - /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 @@ ...@@ -62,7 +62,7 @@
<password>QmdCaQSPmCAQEddd</password> <password>QmdCaQSPmCAQEddd</password>
<SSL>true</SSL> <SSL>true</SSL>
<asynchronousSending>true</asynchronousSending> <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> <from>information@wanxin-holdings.com</from>
<subject>hro-mvp ${springAppActive}环境 ${springAppName}服务: %-20msg 错误</subject> <subject>hro-mvp ${springAppActive}环境 ${springAppName}服务: %-20msg 错误</subject>
<charsetEncoding>UTF-8</charsetEncoding> <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 @@ ...@@ -554,9 +554,7 @@
</if> </if>
<where> <where>
a.DELETE_FLAG = 0 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"/> <include refid="tSalaryAccount_where"/>
<if test="deptNos != null and deptNos.size>0"> <if test="deptNos != null and deptNos.size>0">
AND a.DEPT_NO not in AND a.DEPT_NO not in
...@@ -877,9 +875,7 @@ ...@@ -877,9 +875,7 @@
left join sys_area ap on ap.id=a.BANK_PROVINCE left join sys_area ap on ap.id=a.BANK_PROVINCE
left join sys_area ac on ac.id=a.BANK_CITY left join sys_area ac on ac.id=a.BANK_CITY
<where> <where>
a.DELETE_FLAG = 0 and not EXISTS ( a.DELETE_FLAG = 0
select 1 from t_dept_see d where a.DEPT_NO = d.DEPT_NO and d.CAN_SEE = 1
)
<include refid="where_export"/> <include refid="where_export"/>
<if test="searchVo.authSql != null and searchVo.authSql.trim() != ''"> <if test="searchVo.authSql != null and searchVo.authSql.trim() != ''">
${searchVo.authSql} ${searchVo.authSql}
...@@ -1067,9 +1063,7 @@ ...@@ -1067,9 +1063,7 @@
t_salary_account_hro_2021 a t_salary_account_hro_2021 a
</if> </if>
<where> <where>
a.DELETE_FLAG = 0 and not EXISTS ( a.DELETE_FLAG = 0
select 1 from t_dept_see d where a.DEPT_NO = d.DEPT_NO and d.CAN_SEE = 1
)
<include refid="where_export"/> <include refid="where_export"/>
<if test="searchVo.authSql != null and searchVo.authSql.trim() != ''"> <if test="searchVo.authSql != null and searchVo.authSql.trim() != ''">
${searchVo.authSql} ${searchVo.authSql}
...@@ -1529,9 +1523,7 @@ ...@@ -1529,9 +1523,7 @@
left join sys_area ac on ac.id=a.BANK_CITY left join sys_area ac on ac.id=a.BANK_CITY
<where> <where>
a.DELETE_FLAG = 0 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"/> <include refid="where_export"/>
<if test="deptNos != null and deptNos.size>0"> <if test="deptNos != null and deptNos.size>0">
AND a.DEPT_NO not in AND a.DEPT_NO not in
...@@ -1564,9 +1556,7 @@ ...@@ -1564,9 +1556,7 @@
</if> </if>
<where> <where>
a.DELETE_FLAG = 0 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"/> <include refid="where_export"/>
<if test="deptNos != null and deptNos.size>0"> <if test="deptNos != null and deptNos.size>0">
AND a.DEPT_NO not in AND a.DEPT_NO not in
......
...@@ -132,4 +132,18 @@ ...@@ -132,4 +132,18 @@
</where> </where>
order by CREATE_TIME desc order by CREATE_TIME desc
</select> </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> </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 { ...@@ -203,12 +203,81 @@ public class SysHouseHoldInfo extends BaseEntity {
@ExcelProperty("公积金承办银行") @ExcelProperty("公积金承办银行")
private String fundBank; 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 禁用 * 自动化配置状态 0 启用 1 禁用
*/ */
@Schema(description ="自动化配置状态") @Schema(description ="自动化配置状态")
private String autoStatus; private String autoStatus;
/**
* 医保单位编号
*/
@ExcelAttribute(name = "医保-单位编号" )
@Schema(description ="医保-单位编号")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("医保-单位编号")
private String customerNoYsd;
/** /**
* 审核人部门 * 审核人部门
*/ */
...@@ -221,4 +290,16 @@ public class SysHouseHoldInfo extends BaseEntity { ...@@ -221,4 +290,16 @@ public class SysHouseHoldInfo extends BaseEntity {
@TableField(exist = false) @TableField(exist = false)
private String handleUserDeptName; 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 { ...@@ -597,6 +597,13 @@ public class TPaymentInfo extends BaseEntity {
@HeadFontStyle(fontHeightInPoints = 11) @HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("个人公积金基数") @ExcelProperty("个人公积金基数")
private BigDecimal personalProidentSet; private BigDecimal personalProidentSet;
/**
* 个人公积金比例
*/
@ExcelAttribute(name = "个人公积金比例")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("个人公积金比例")
private BigDecimal personalProvidentPercent;
/** /**
* 个人公积金费用 * 个人公积金费用
*/ */
......
...@@ -85,7 +85,7 @@ public class TSocialDeadlineInfo extends BaseEntity { ...@@ -85,7 +85,7 @@ public class TSocialDeadlineInfo extends BaseEntity {
@TableField(updateStrategy = FieldStrategy.IGNORED) @TableField(updateStrategy = FieldStrategy.IGNORED)
private String town; private String town;
/** /**
* 社保起始日 * 社保(增员)起始日
*/ */
@ExcelAttribute(name = "社保起始日", isNotEmpty = true, errorInfo = "社保起始日不能为空", isDate = true) @ExcelAttribute(name = "社保起始日", isNotEmpty = true, errorInfo = "社保起始日不能为空", isDate = true)
@NotBlank(message = "社保起始日不能为空") @NotBlank(message = "社保起始日不能为空")
...@@ -93,7 +93,7 @@ public class TSocialDeadlineInfo extends BaseEntity { ...@@ -93,7 +93,7 @@ public class TSocialDeadlineInfo extends BaseEntity {
@Schema(description = "社保起始日") @Schema(description = "社保起始日")
private Date socialStartDate; private Date socialStartDate;
/** /**
* 社保截止日 * 社保(增员)截止日
*/ */
@ExcelAttribute(name = "社保截止日", isNotEmpty = true, errorInfo = "社保截止日不能为空", isDate = true) @ExcelAttribute(name = "社保截止日", isNotEmpty = true, errorInfo = "社保截止日不能为空", isDate = true)
@NotBlank(message = "社保截止日不能为空") @NotBlank(message = "社保截止日不能为空")
...@@ -101,7 +101,7 @@ public class TSocialDeadlineInfo extends BaseEntity { ...@@ -101,7 +101,7 @@ public class TSocialDeadlineInfo extends BaseEntity {
@Schema(description = "社保截止日") @Schema(description = "社保截止日")
private Date socialEndDate; private Date socialEndDate;
/** /**
* 医疗起始日 * 医疗(增员)起始日
*/ */
@ExcelAttribute(name = "医疗起始日", isNotEmpty = true, errorInfo = "医疗起始日不能为空", isDate = true) @ExcelAttribute(name = "医疗起始日", isNotEmpty = true, errorInfo = "医疗起始日不能为空", isDate = true)
@NotBlank(message = "医疗起始日不能为空") @NotBlank(message = "医疗起始日不能为空")
...@@ -109,7 +109,7 @@ public class TSocialDeadlineInfo extends BaseEntity { ...@@ -109,7 +109,7 @@ public class TSocialDeadlineInfo extends BaseEntity {
@Schema(description = "医疗起始日") @Schema(description = "医疗起始日")
private Date medicalStartDate; private Date medicalStartDate;
/** /**
* 医疗截止日 * 医疗(增员)截止日
*/ */
@ExcelAttribute(name = "医疗截止日", isNotEmpty = true, errorInfo = "医疗截止日不能为空", isDate = true) @ExcelAttribute(name = "医疗截止日", isNotEmpty = true, errorInfo = "医疗截止日不能为空", isDate = true)
@NotBlank(message = "医疗截止日不能为空") @NotBlank(message = "医疗截止日不能为空")
...@@ -141,4 +141,41 @@ public class TSocialDeadlineInfo extends BaseEntity { ...@@ -141,4 +141,41 @@ public class TSocialDeadlineInfo extends BaseEntity {
@Schema(description = "配置类型:0 非基础配置 1基础配置(后面配置都是按他生成的)") @Schema(description = "配置类型:0 非基础配置 1基础配置(后面配置都是按他生成的)")
private String type; 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 { ...@@ -1045,6 +1045,25 @@ public class TSocialInfo extends BaseEntity {
@ExcelProperty("医生大社保士兵的任务ID" ) @ExcelProperty("医生大社保士兵的任务ID" )
private String ysdAddId; 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,社保士兵使用 // 派单id,社保士兵使用
@TableField(exist = false) @TableField(exist = false)
private String dispatchId; 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 { ...@@ -145,4 +145,20 @@ public class SocialHandleSearchVo extends TDispatchInfo {
@ExcelProperty("医生大反馈" ) @ExcelProperty("医生大反馈" )
@ExcelIgnore @ExcelIgnore
private String ysdRemark; 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 { ...@@ -84,7 +84,7 @@ public class SocialSoldierYsdAddVo implements Serializable {
private String socialTown; private String socialTown;
@ExcelProperty("养老起缴日期") @ExcelProperty("养老起缴日期")
private String pensionStart; private String pensionStart;
;
@ExcelProperty("养老基数") @ExcelProperty("养老基数")
private BigDecimal unitPensionCardinal; private BigDecimal unitPensionCardinal;
@ExcelProperty("医疗起缴日期") @ExcelProperty("医疗起缴日期")
......
...@@ -475,15 +475,34 @@ public class TDispatchImportVo extends RowIndex implements Serializable { ...@@ -475,15 +475,34 @@ public class TDispatchImportVo extends RowIndex implements Serializable {
private BigDecimal providentCardinal; private BigDecimal providentCardinal;
/** /**
* 公积金比例 * 单位公积金比例(原‘公积金比例’)
*/ */
@ExcelAttribute(name = "公积金比例" ) @ExcelAttribute(name = "单位公积金缴纳比例" )
@Schema(description = "公积金比例" ) @Schema(description = "单位公积金缴纳比例" )
@HeadFontStyle(fontHeightInPoints = 11) @HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("公积金比例" ) @ExcelProperty("单位公积金缴纳比例" )
private BigDecimal providentPer; 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 { ...@@ -295,14 +295,23 @@ public class TDispatchInfoExportVo {
private BigDecimal unitProvidengCardinal; private BigDecimal unitProvidengCardinal;
/** /**
* 公积金缴纳比例 * 单位公积金缴纳比例(原:公积金缴纳比例)
*/ */
@ExcelAttribute(name = "公积金缴纳比例" ) @ExcelAttribute(name = "单位公积金缴纳比例" )
@Schema(description = "公积金缴纳比例" ) @Schema(description = "单位公积金缴纳比例" )
@HeadFontStyle(fontHeightInPoints = 11) @HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("公积金缴纳比例" ) @ExcelProperty("单位公积金缴纳比例" )
private BigDecimal unitProvidentPer; private BigDecimal unitProvidentPer;
/**
* 个人公积金缴纳比例
*/
@ExcelAttribute(name = "个人公积金缴纳比例" )
@Schema(description = "个人公积金缴纳比例" )
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("个人公积金缴纳比例" )
private BigDecimal personalProvidentPer;
/** /**
* 养老基数 * 养老基数
*/ */
......
...@@ -432,6 +432,14 @@ public class TPaymentInfoBatchVo { ...@@ -432,6 +432,14 @@ public class TPaymentInfoBatchVo {
@HeadFontStyle(fontHeightInPoints = 11) @HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("个人公积金基数") @ExcelProperty("个人公积金基数")
private BigDecimal personalProidentSet; private BigDecimal personalProidentSet;
/**
* 个人公积金比例
*/
@ExcelAttribute(name = "个人公积金比例")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("个人公积金比例")
private BigDecimal personalProvidentPercent;
/** /**
* 个人公积金缴费 * 个人公积金缴费
*/ */
......
...@@ -377,6 +377,13 @@ public class TPaymentInfoExportVo extends RowIndex implements Serializable { ...@@ -377,6 +377,13 @@ public class TPaymentInfoExportVo extends RowIndex implements Serializable {
@HeadFontStyle(fontHeightInPoints = 11) @HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("个人公积金基数") @ExcelProperty("个人公积金基数")
private BigDecimal personalProidentSet; private BigDecimal personalProidentSet;
/**
* 个人公积金比例
*/
@ExcelAttribute(name = "个人公积金比例")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("个人公积金比例")
private BigDecimal personalProvidentPercent;
/** /**
* 个人公积金费用 * 个人公积金费用
*/ */
......
...@@ -468,6 +468,13 @@ public class TPaymentInfoNewExportVo extends RowIndex implements Serializable { ...@@ -468,6 +468,13 @@ public class TPaymentInfoNewExportVo extends RowIndex implements Serializable {
@HeadFontStyle(fontHeightInPoints = 11) @HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("个人公积金基数") @ExcelProperty("个人公积金基数")
private BigDecimal personalProidentSet; private BigDecimal personalProidentSet;
/**
* 个人公积金比例
*/
@ExcelAttribute(name = "个人公积金比例")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("个人公积金比例")
private BigDecimal personalProvidentPercent;
/** /**
* 个人公积金费用 * 个人公积金费用
*/ */
......
...@@ -359,6 +359,14 @@ public class TPaymentInfoNewVo extends RowIndex implements Serializable { ...@@ -359,6 +359,14 @@ public class TPaymentInfoNewVo extends RowIndex implements Serializable {
@ExcelProperty("个人公积金费用") @ExcelProperty("个人公积金费用")
private BigDecimal personalProvidentSum; private BigDecimal personalProvidentSum;
/**
* 个人公积金比例
*/
@ExcelAttribute(name = "个人公积金比例")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("个人公积金比例")
private BigDecimal personalProvidentPercent;
/** /**
* 公积金户 * 公积金户
*/ */
......
...@@ -578,6 +578,15 @@ public class TPaymentInfoVo extends RowIndex implements Serializable { ...@@ -578,6 +578,15 @@ public class TPaymentInfoVo extends RowIndex implements Serializable {
@HeadFontStyle(fontHeightInPoints = 11) @HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty(value = "公积金单边比例", converter = BigDecimalConverter.class) @ExcelProperty(value = "公积金单边比例", converter = BigDecimalConverter.class)
private BigDecimal providentPercent; 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 { ...@@ -586,6 +595,15 @@ public class TPaymentInfoVo extends RowIndex implements Serializable {
@HeadFontStyle(fontHeightInPoints = 11) @HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty(value = "公积金单边金额", converter = BigDecimalConverter.class) @ExcelProperty(value = "公积金单边金额", converter = BigDecimalConverter.class)
private BigDecimal unitProvidentSum; 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 { ...@@ -594,13 +612,23 @@ public class TPaymentInfoVo extends RowIndex implements Serializable {
@HeadFontStyle(fontHeightInPoints = 11) @HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty(value = "个人公积金基数", converter = BigDecimalConverter.class) @ExcelProperty(value = "个人公积金基数", converter = BigDecimalConverter.class)
private BigDecimal personalProidentSet; 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 = "个人公积金费用") @ExcelAttribute(name = "个人公积金金额")
@Schema(description ="个人公积金费用") @Schema(description ="个人公积金金额")
@HeadFontStyle(fontHeightInPoints = 11) @HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty(value = "个人公积金费用", converter = BigDecimalConverter.class) @ExcelProperty(value = "个人公积金金额", converter = BigDecimalConverter.class)
private BigDecimal personalProvidentSum; private BigDecimal personalProvidentSum;
/** /**
* 创建者 * 创建者
......
/*
* Copyright (c) 2018-2025, lengleng All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* Neither the name of the yifu4cloud.com developer nor the names of its
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
* Author: lengleng (wangiegie@gmail.com)
*/
package com.yifu.cloud.plus.v1.yifu.social.vo;
import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.annotation.write.style.HeadFontStyle;
import com.yifu.cloud.plus.v1.yifu.common.core.constant.ExcelAttribute;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import org.hibernate.validator.constraints.Length;
import java.io.Serializable;
/**
* 社保户批量导出
*
* @author huych
* @date 2024-12-5 11:38:05
*/
@Data
public class TSocialHouseholdExportVo implements Serializable {
@ExcelAttribute(name = "账户性质" )
@Schema(description = "账户性质")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("账户性质")
private String type;
/**
* 员工姓名
*/
@Length(max = 50, message = "户名不能超过50个字符")
@ExcelAttribute(name = "户名", maxLength = 50,isNotEmpty = true)
@Schema(description = "户名")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty(value = "户名")
private String name;
/**
* 缴纳地所在省
*/
@Length(max = 50, message = "缴纳地所在省不能超过32个字符")
@ExcelAttribute(name = "缴纳地所在省", maxLength = 50,isNotEmpty = true, isArea = true, parentField = "")
@Schema(description = "缴纳地所在省")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty(value = "缴纳地所在省")
private String province;
/**
* 缴纳地所在市
*/
@Length(max = 50, message = "缴纳地所在市不能超过50个字符")
@ExcelAttribute(name = "缴纳地所在市", maxLength = 50,isNotEmpty = true, isArea = true, parentField = "province")
@Schema(description = "缴纳地所在市")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty(value = "缴纳地所在市")
private String city;
/**
* 缴纳地所在县
*/
@Length(max = 50, message = "缴纳地所在县不能超过50个字符")
@ExcelAttribute(name = "缴纳地所在县", maxLength = 50, isArea = true, parentField = "city")
@Schema(description = "缴纳地所在县")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty(value = "缴纳地所在县")
private String town;
/**
* 所属机构
*/
@ExcelAttribute(name = "所属机构", maxLength = 50,isNotEmpty = true)
@Schema(description ="所属机构")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("所属机构")
private String organName;
/**
* 审核人
*/
@ExcelAttribute(name = "审核人", maxLength = 50,isNotEmpty = true )
@Schema(description ="审核人")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("审核人")
private String auditUserName;
/**
* 办理人
*/
@ExcelAttribute(name = "办理人", maxLength = 50,isNotEmpty = true )
@Schema(description ="办理人")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("办理人")
private String handleUserName;
/**
* 手机号
*/
@ExcelAttribute(name = "手机号", maxLength = 50,isNotEmpty = true )
@Schema(description ="手机号")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("手机号")
private String phone;
/**
* 类型 0 独立户 1 自由户
*/
@ExcelAttribute(name = "户类型", maxLength = 3,isNotEmpty = true)
@Schema(description ="户类型")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("户类型")
private String houseType;
/**
* 单位编号
*/
@ExcelAttribute(name = "单位编号" )
@Schema(description ="单位编号")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("单位编号")
private String customerNo;
/**
* 单位统一信用代码
*/
@ExcelAttribute(name = "单位统一信用代码" )
@Schema(description ="单位统一信用代码")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("单位统一信用代码")
private String unitCreditCode;
/**
* 医保单位编号
*/
@ExcelAttribute(name = "医保-单位编号", maxLength = 20 )
@Schema(description ="医保-单位编号")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("医保-单位编号")
private String customerNoYsd;
/**
* 社保-登录账户
*/
@ExcelAttribute(name = "社保-登录账户", maxLength = 50 )
@Schema(description ="社保-登录账户")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("社保-登录账户")
private String socialAccount;
/**
* 社保-登录密码
*/
@ExcelAttribute(name = "社保-登录密码", maxLength = 50 )
@Schema(description ="社保-登录密码")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("社保-登录密码")
private String socialPassword;
/**
* 医保-登录账户
*/
@ExcelAttribute(name = "医保-登录账户", maxLength = 50 )
@Schema(description ="医保-登录账户")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("医保-登录账户")
private String mediclAccount;
/**
* 医保-登录密码
*/
@ExcelAttribute(name = "医保-登录密码", maxLength = 50 )
@Schema(description ="医保-登录密码")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("医保-登录密码")
private String mediclPassword;
@ExcelAttribute(name = "是否配置公章" )
@Schema(description ="是否配置公章")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("是否配置公章")
private String isSign;
/**
* 自动化配置状态 0 是 1 否
*/
@ExcelAttribute(name = "是否自动办理" )
@Schema(description ="是否自动办理")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("是否自动办理")
private String autoStatus;
}
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