Commit 93244a09 authored by hongguangwu's avatar hongguangwu

Merge remote-tracking branch 'origin/MVP1.7.12' into MVP1.7.12

# Conflicts:
#	yifu-archives/yifu-archives-api/src/main/java/com/yifu/cloud/plus/v1/yifu/archives/vo/TGzOfferInfoExportSearchVo.java
#	yifu-archives/yifu-archives-api/src/main/java/com/yifu/cloud/plus/v1/yifu/archives/vo/TGzOfferInfoVo.java
parents ef9867c3 713a6491
...@@ -41,11 +41,11 @@ public class TGzEmpInfoSearchVo extends TGzEmpInfo { ...@@ -41,11 +41,11 @@ public class TGzEmpInfoSearchVo extends TGzEmpInfo {
/** /**
* 查询使用:提交档案时间开始 * 查询使用:提交档案时间开始
*/ */
private LocalDate createTimeStart; private String createTimeStart;
/** /**
* 查询使用:提交档案时间结束 * 查询使用:提交档案时间结束
*/ */
private LocalDate createTimeEnd; private String createTimeEnd;
/** /**
* @Author fxj * @Author fxj
......
...@@ -33,20 +33,14 @@ import java.util.List; ...@@ -33,20 +33,14 @@ import java.util.List;
@Data @Data
public class TGzOfferInfoVo extends TGzOfferInfo { public class TGzOfferInfoVo extends TGzOfferInfo {
// @Schema(description = "人员类别展示值")
// private String empTypeLabel;
//
// @Schema(description = "外签类型展示值")
// private String outSginTypeLabel;
/** /**
* 查询使用:接收时间开始 * 查询使用:接收时间开始
*/ */
private LocalDate createTimeStart; private String createTimeStart;
/** /**
* 查询使用:接收时间结束 * 查询使用:接收时间结束
*/ */
private LocalDate createTimeEnd; private String createTimeEnd;
/** /**
* 批量发送短信使用 * 批量发送短信使用
...@@ -54,6 +48,21 @@ public class TGzOfferInfoVo extends TGzOfferInfo { ...@@ -54,6 +48,21 @@ public class TGzOfferInfoVo extends TGzOfferInfo {
@Schema(description = "瓜子状态数组") @Schema(description = "瓜子状态数组")
private List<String> statusList; private List<String> statusList;
/**
* 批量更新失败的offer信息列表
*/
@Schema(description = "更新失败的offer信息列表")
private List<TGzOfferInfo> updateFailOfferList;
/**
* 批量更新的状态的offerId列表
*/
@Schema(description = "批量更新的状态的offerId列表")
private List<Integer> offerIdList;
@Schema(description = "瓜子Offer状态查询数组")
private String[] offerStatusArray;
@TableField(exist = false) @TableField(exist = false)
@Schema(description = "查询起") @Schema(description = "查询起")
private int limitStart; private int limitStart;
......
...@@ -229,4 +229,16 @@ public class TGzOfferInfoController { ...@@ -229,4 +229,16 @@ public class TGzOfferInfoController {
tGzOfferInfoService.exportDetail(response, searchVo); tGzOfferInfoService.exportDetail(response, searchVo);
} }
/**
* 瓜子批量更新offer状态
* @param tGzOfferInfo 瓜子offer信息接收表
* @return R
*/
@Operation(summary = "瓜子批量更新offer状态")
@SysLog("瓜子批量更新offer状态" )
@PutMapping("/batchUpdateStatus")
public R batchUpdateStatus(@RequestBody TGzOfferInfoVo tGzOfferInfo) {
return tGzOfferInfoService.batchUpdateStatus(tGzOfferInfo);
}
} }
...@@ -117,5 +117,12 @@ public interface TGzOfferInfoService extends IService<TGzOfferInfo> { ...@@ -117,5 +117,12 @@ public interface TGzOfferInfoService extends IService<TGzOfferInfo> {
**/ **/
void exportDetail(HttpServletResponse response, TGzOfferInfoVo searchVo); void exportDetail(HttpServletResponse response, TGzOfferInfoVo searchVo);
/**
* 瓜子批量更新offer状态
* @param tGzOfferInfo 瓜子offer信息接收表
* @return R
*/
R batchUpdateStatus(TGzOfferInfoVo tGzOfferInfo);
} }
...@@ -25,11 +25,13 @@ import com.alibaba.excel.read.listener.ReadListener; ...@@ -25,11 +25,13 @@ import com.alibaba.excel.read.listener.ReadListener;
import com.alibaba.excel.read.metadata.holder.ReadRowHolder; import com.alibaba.excel.read.metadata.holder.ReadRowHolder;
import com.alibaba.excel.util.ListUtils; import com.alibaba.excel.util.ListUtils;
import com.alibaba.excel.write.metadata.WriteSheet; import com.alibaba.excel.write.metadata.WriteSheet;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
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.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.yifu.cloud.plus.v1.yifu.archives.entity.TGzEmpContactInfo;
import com.yifu.cloud.plus.v1.yifu.archives.entity.TGzOfferInfo; import com.yifu.cloud.plus.v1.yifu.archives.entity.TGzOfferInfo;
import com.yifu.cloud.plus.v1.yifu.archives.entity.TRegisteWarningEmployee; import com.yifu.cloud.plus.v1.yifu.archives.entity.TRegisteWarningEmployee;
import com.yifu.cloud.plus.v1.yifu.archives.mapper.EmployeeRegistrationPreMapper; import com.yifu.cloud.plus.v1.yifu.archives.mapper.EmployeeRegistrationPreMapper;
...@@ -78,6 +80,12 @@ public class TGzOfferInfoServiceImpl extends ServiceImpl<TGzOfferInfoMapper, TGz ...@@ -78,6 +80,12 @@ public class TGzOfferInfoServiceImpl extends ServiceImpl<TGzOfferInfoMapper, TGz
private final EmployeeRegistrationPreMapper registrationPreMapper; private final EmployeeRegistrationPreMapper registrationPreMapper;
// 禁止手动变更的状态:3:待发送Offer,9:候选人填写信息,12:候选人信息审核,13:待签署,8:合同审核通过,99:已归档,97:候选人审核通过
private final String[] forbidStatusArr = {"3", "9", "12", "13", "8","99","97"};
// 当前Offer更新状态,无法再发起更新:5:拒绝Offer、10:取消offer、8:合同审核通过、99:已归档
private final String[] failStatusArr = {"5", "10", "8", "99"};
/** /**
* 瓜子offer信息接收表简单分页查询 * 瓜子offer信息接收表简单分页查询
* @param tGzOfferInfo 瓜子offer信息接收表 * @param tGzOfferInfo 瓜子offer信息接收表
...@@ -159,6 +167,11 @@ public class TGzOfferInfoServiceImpl extends ServiceImpl<TGzOfferInfoMapper, TGz ...@@ -159,6 +167,11 @@ public class TGzOfferInfoServiceImpl extends ServiceImpl<TGzOfferInfoMapper, TGz
if (Common.isEmpty(tGzOfferInfo.getOfferStatus())) { if (Common.isEmpty(tGzOfferInfo.getOfferStatus())) {
return R.failed("更新状态不能为空"); return R.failed("更新状态不能为空");
} }
// 禁止手动变更的状态
if (ArrayUtils.contains(forbidStatusArr, tGzOfferInfo.getOfferStatus())) {
return R.failed("参数错误,禁止手动变更为该状态");
}
TGzOfferInfo findInfo = this.getInfoCommon(tGzOfferInfo.getId()); TGzOfferInfo findInfo = this.getInfoCommon(tGzOfferInfo.getId());
if (Common.isEmpty(findInfo)) { if (Common.isEmpty(findInfo)) {
return R.failed(CommonConstants.ERROR_NO_DOMAIN); return R.failed(CommonConstants.ERROR_NO_DOMAIN);
...@@ -167,10 +180,9 @@ public class TGzOfferInfoServiceImpl extends ServiceImpl<TGzOfferInfoMapper, TGz ...@@ -167,10 +180,9 @@ public class TGzOfferInfoServiceImpl extends ServiceImpl<TGzOfferInfoMapper, TGz
if (findInfo.getOfferStatus().equals(tGzOfferInfo.getOfferStatus())) { if (findInfo.getOfferStatus().equals(tGzOfferInfo.getOfferStatus())) {
return R.failed("当前Offer更新状态失败,请刷新页面后重试"); return R.failed("当前Offer更新状态失败,请刷新页面后重试");
} }
// 当前Offer更新状态,无法再发起更新:5:拒绝Offer、10:取消offer、8:合同审核通过、99:已归档 // 当前Offer更新状态,无法再发起更新
String[] forbidStatusArr = {"5", "10", "8", "99"}; if (ArrayUtils.contains(failStatusArr, findInfo.getOfferStatus())) {
if (ArrayUtils.contains(forbidStatusArr, findInfo.getOfferStatus())) { return R.failed("当前Offer状态,无法再发起手动更新");
return R.failed("当前Offer更新状态,无法再发起更新");
} }
// 获取当前状态下,允许更新的状态列表 // 获取当前状态下,允许更新的状态列表
List<String> allowUpdateStatusList = this.allowUpdateStatus(findInfo.getOfferStatus()); List<String> allowUpdateStatusList = this.allowUpdateStatus(findInfo.getOfferStatus());
...@@ -683,4 +695,78 @@ public class TGzOfferInfoServiceImpl extends ServiceImpl<TGzOfferInfoMapper, TGz ...@@ -683,4 +695,78 @@ public class TGzOfferInfoServiceImpl extends ServiceImpl<TGzOfferInfoMapper, TGz
} }
} }
/**
* 瓜子批量更新offer状态
*
* @param tGzOfferInfo 瓜子offer信息接收表
* @return R
*/
@Override
public R batchUpdateStatus(TGzOfferInfoVo tGzOfferInfo) {
YifuUser user = SecurityUtils.getUser();
if (user == null || Common.isEmpty(user.getId())) {
return R.failed(CommonConstants.PLEASE_LOG_IN);
}
if(Common.isEmpty(tGzOfferInfo.getOfferIdList())){
return R.failed("需要更新的档案集合不能为空");
}
if(Common.isEmpty(tGzOfferInfo.getOfferStatus())){
return R.failed("需要更新的状态选项不能为空");
}
// 禁止手动变更的状态
if (ArrayUtils.contains(forbidStatusArr, tGzOfferInfo.getOfferStatus())) {
return R.failed("参数错误,禁止手动变更为该状态");
}
LambdaQueryWrapper<TGzOfferInfo> queryOffer = Wrappers.<TGzOfferInfo>lambdaQuery()
.in(TGzOfferInfo::getId, tGzOfferInfo.getOfferIdList())
.eq(TGzOfferInfo::getDelFlag, CommonConstants.ZERO_STRING);
List<TGzOfferInfo> findOfferList = this.list(queryOffer);
if(Common.isEmpty(findOfferList)){
return R.failed("没有任何符合更新条件的数据");
}
// 存更新失败的offer信息
List<TGzOfferInfo> updateFailOfferList = new ArrayList<>();
for(TGzOfferInfo findInfo : findOfferList){
// 当前Offer更新状态,无法再发起更新
if (ArrayUtils.contains(failStatusArr, findInfo.getOfferStatus())) {
updateFailOfferList.add(findInfo);
continue;
}
// 更新为同一状态的提示操作失败
if (findInfo.getOfferStatus().equals(tGzOfferInfo.getOfferStatus())) {
updateFailOfferList.add(findInfo);
continue;
}
// 获取当前状态下,允许更新的状态列表
List<String> allowUpdateStatusList = this.allowUpdateStatus(findInfo.getOfferStatus());
if (!allowUpdateStatusList.contains(tGzOfferInfo.getOfferStatus())) {
updateFailOfferList.add(findInfo);
continue;
}
// 更新状态
LambdaUpdateWrapper<TGzOfferInfo> updateOfferWrapper = new LambdaUpdateWrapper<>();
updateOfferWrapper.eq(TGzOfferInfo::getId, findInfo.getId())
.set(TGzOfferInfo::getOfferStatus, tGzOfferInfo.getOfferStatus())
.set(TGzOfferInfo::getUpdateTime, LocalDateTime.now())
.set(TGzOfferInfo::getUpdateBy, user.getId());
boolean res = this.update(null, updateOfferWrapper);
if(!res){
updateFailOfferList.add(findInfo);
continue;
}
// todo 记录offer操作日志
}
if(Common.isEmpty(updateFailOfferList)){
return R.ok("批量更新成功");
}
return R.failed(updateFailOfferList,"存在更新失败的数据,未找到该状态下需要更新的人员信息");
}
} }
...@@ -209,10 +209,10 @@ ...@@ -209,10 +209,10 @@
</if> </if>
<!--查询提交档案时间--> <!--查询提交档案时间-->
<if test="tGzEmpInfo.createTimeStart != null "> <if test="tGzEmpInfo.createTimeStart != null ">
AND a.create_time &gt;= concat(#{tGzEmpInfo.createTimeStart},' 00:00:00') AND a.create_time &gt;= #{tGzEmpInfo.createTimeStart}
</if> </if>
<if test="tGzEmpInfo.createTimeEnd != null "> <if test="tGzEmpInfo.createTimeEnd != null ">
AND a.create_time &lt;= concat(#{tGzEmpInfo.createTimeEnd},' 23:59:59') AND a.create_time &lt;= #{tGzEmpInfo.createTimeEnd}
</if> </if>
<if test="tGzEmpInfo.createBy != null and tGzEmpInfo.createBy.trim() != ''"> <if test="tGzEmpInfo.createBy != null and tGzEmpInfo.createBy.trim() != ''">
AND a.create_by = #{tGzEmpInfo.createBy} AND a.create_by = #{tGzEmpInfo.createBy}
......
...@@ -126,10 +126,10 @@ ...@@ -126,10 +126,10 @@
</if> </if>
<!--查询接收时间--> <!--查询接收时间-->
<if test="tGzOfferInfo.createTimeStart != null "> <if test="tGzOfferInfo.createTimeStart != null ">
AND a.create_time &gt;= concat(#{tGzOfferInfo.createTimeStart},' 00:00:00') AND a.create_time &gt;= #{tGzOfferInfo.createTimeStart}
</if> </if>
<if test="tGzOfferInfo.createTimeEnd != null "> <if test="tGzOfferInfo.createTimeEnd != null ">
AND a.create_time &lt;= concat(#{tGzOfferInfo.createTimeEnd},' 23:59:59') AND a.create_time &lt;= #{tGzOfferInfo.createTimeEnd}
</if> </if>
<if test="tGzOfferInfo.offerStatus != null and tGzOfferInfo.offerStatus.trim() != ''"> <if test="tGzOfferInfo.offerStatus != null and tGzOfferInfo.offerStatus.trim() != ''">
AND a.offer_status = #{tGzOfferInfo.offerStatus} AND a.offer_status = #{tGzOfferInfo.offerStatus}
...@@ -137,9 +137,9 @@ ...@@ -137,9 +137,9 @@
<if test="tGzOfferInfo.offerSendStatus != null and tGzOfferInfo.offerSendStatus.trim() != ''"> <if test="tGzOfferInfo.offerSendStatus != null and tGzOfferInfo.offerSendStatus.trim() != ''">
AND a.offer_send_status = #{tGzOfferInfo.offerSendStatus} AND a.offer_send_status = #{tGzOfferInfo.offerSendStatus}
</if> </if>
<if test="tGzOfferInfo.statusList != null and tGzOfferInfo.statusList.size() > 0"> <if test="tGzOfferInfo.offerStatusArray != null and tGzOfferInfo.offerStatusArray.length > 0">
AND a.offer_status in AND a.offer_status in
<foreach item="item" index="index" collection="tGzOfferInfo.statusList" open="(" separator="," close=")"> <foreach item="item" index="index" collection="tGzOfferInfo.offerStatusArray" open="(" separator="," close=")">
'${item}' '${item}'
</foreach> </foreach>
</if> </if>
......
...@@ -1380,7 +1380,8 @@ public class EmployeeRegistrationServiceImpl extends ServiceImpl<EmployeeRegistr ...@@ -1380,7 +1380,8 @@ public class EmployeeRegistrationServiceImpl extends ServiceImpl<EmployeeRegistr
// 添加年数和月数 // 添加年数和月数
localDate = localDate localDate = localDate
.plusYears(vo.getYearAfter()) .plusYears(vo.getYearAfter())
.plusMonths(vo.getMonthAfter()); .plusMonths(vo.getMonthAfter())
.minusDays(1);
// 转回Date类型 // 转回Date类型
return Date.from(localDate.atStartOfDay() return Date.from(localDate.atStartOfDay()
.atZone(ZoneId.systemDefault()) .atZone(ZoneId.systemDefault())
......
...@@ -236,10 +236,9 @@ public class SysHouseHoldInfoController { ...@@ -236,10 +236,9 @@ public class SysHouseHoldInfoController {
* @date 2024-12-5 10:18:05 * @date 2024-12-5 10:18:05
**/ **/
@SneakyThrows @SneakyThrows
@Operation(description = "批量更新社保户配置数据 hasPermission('syshouseholdinfo_batch_update')") @Operation(description = "批量更新社保户配置数据")
@SysLog("批量更新社保户配置数据") @SysLog("批量更新社保户配置数据")
@PostMapping("/importListUpdate") @PostMapping("/importListUpdate")
@PreAuthorize("@pms.hasPermission('syshouseholdinfo_batch_add')")
public R<List<ErrorMessage>> importListUpdate(@RequestBody MultipartFile file){ public R<List<ErrorMessage>> importListUpdate(@RequestBody MultipartFile file){
return sysHouseHoldInfoService.importListUpdate(file.getInputStream()); return sysHouseHoldInfoService.importListUpdate(file.getInputStream());
} }
......
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