Commit eab12910 authored by fangxinjiang's avatar fangxinjiang

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

parents 6b4b282d 1188e096
......@@ -215,7 +215,6 @@ public class TEmployeePreLogServiceImpl extends ServiceImpl<TEmployeePreLogMappe
CONTRACT_IGNORE_FIELD.add("internshipPeriodNum");
CONTRACT_IGNORE_FIELD.add("tryPeriodNum");
CONTRACT_IGNORE_FIELD.add("fundUpdateFlag");
CONTRACT_IGNORE_FIELD.add("processStatus");
}
private static final List<String> SOCIAL_IGNORE_FIELD = new ArrayList<>();
......@@ -320,6 +319,8 @@ public class TEmployeePreLogServiceImpl extends ServiceImpl<TEmployeePreLogMappe
List<TEmployeeInsurancePre> saveOrUpdateList = new ArrayList<>();
//加一个禁止编辑的判断
List<TEmployeeInsurancePre> unUpdateList = new ArrayList<>();
//删除的判断
List<TEmployeeInsurancePre> delInsuracneList = new ArrayList<>();
// 是否修改了商险
boolean isModifyInsurance = false;
TEmployeeInsurancePre oldInsurance;
......@@ -343,7 +344,7 @@ public class TEmployeePreLogServiceImpl extends ServiceImpl<TEmployeePreLogMappe
isModifyInsurance = true;
detailList.add(detailInsuranceLog);
}
if (!newInfo.getExitInsuranceInfoList().isEmpty()) {
if (null != newInfo.getExitInsuranceInfoList() && !newInfo.getExitInsuranceInfoList().isEmpty()) {
newInfo.getExitInsuranceInfoList().forEach(insurancePreVo -> insurancePreVo.setRegisterId(empPreId));
}
HttpDaprUtil.invokeMethodPost(daprInsurancesProperties.getAppUrl(), daprInsurancesProperties.getAppId()
......@@ -404,6 +405,7 @@ public class TEmployeePreLogServiceImpl extends ServiceImpl<TEmployeePreLogMappe
this.setLogBaseInfo(empPreId, newInsurance, null, user, differenceInsuranceKey, logId, detailInsuranceLog);
isModifyInsurance = true;
detailList.add(detailInsuranceLog);
delInsuracneList.add(newInsurance);
} else if (CommonConstants.FOUR_STRING.equals(newInsurance.getModelType())) {
// 4:不可编辑
unUpdateList.add(newInsurance);
......@@ -451,6 +453,34 @@ public class TEmployeePreLogServiceImpl extends ServiceImpl<TEmployeePreLogMappe
.in(TEmployeeContractPre::getProcessStatus, Arrays.asList("0","1","3","5","7","10","11"))
.eq(TEmployeeContractPre::getId,contractOld.getId()));
}
//是的场景删除合同待购买数据
if (newInfo.getServerItem().contains("合同") && Common.isNotNull(contractOld)
&& Common.isEmpty(employeeContractPre) && null != newInfo.getContractUpdateFlag()
&& newInfo.getContractUpdateFlag()) {
//记录操作记录
contractOld.setAttaList(null);
detailEmpLog = new TEmployeePreLogDetail();
detailEmpLog.setModelType(CommonConstants.THREE_STRING);
detailEmpLog.setType(CommonConstants.THREE_STRING);
this.setLogBaseInfo(empPreId, contractOld, null, user, differenceContractKey, logId, detailEmpLog);
detailList.add(detailEmpLog);
if (Common.isNotNull(diffTitle)) {
diffTitle += "、合同信息";
} else {
diffTitle = "合同信息";
}
// 创建更新条件构造器
LambdaUpdateWrapper<TAttaInfo> updateWrapperContract = new LambdaUpdateWrapper<>();
// 设置更新条件和新值
updateWrapperContract.eq(TAttaInfo::getDomainId, contractOld.getId())
.set(TAttaInfo::getDomainId, CommonConstants.EMPTY_STRING);
// 执行更新操作,清空附件的关联ID
attaInfoService.update(updateWrapperContract);
//删除历史的合同待签订数据
contractPreService.remove(Wrappers.<TEmployeeContractPre>query().lambda()
.in(TEmployeeContractPre::getProcessStatus, Arrays.asList("0","1","3","5","7","10","11"))
.eq(TEmployeeContractPre::getId,contractOld.getId()));
}
if (newInfo.getServerItem().contains("合同") && contractOld != null && employeeContractPre != null
&& null != newInfo.getContractUpdateFlag() && newInfo.getContractUpdateFlag()) {
//1.9.11 huych 附件类型不比较差异
......@@ -676,7 +706,7 @@ public class TEmployeePreLogServiceImpl extends ServiceImpl<TEmployeePreLogMappe
HttpDaprUtil.invokeMethodPost(daprInsurancesProperties.getAppUrl(), daprInsurancesProperties.getAppId()
, "/temployeeinsurancepre/inner/saveOrUpdateInsuranceList"
, saveOrUpdateList, Boolean.class, SecurityConstants.FROM_IN);
} else if (unUpdateList.isEmpty()){
} else if (unUpdateList.isEmpty() || !delInsuracneList.isEmpty()){
HttpDaprUtil.invokeMethodPost(daprInsurancesProperties.getAppUrl(), daprInsurancesProperties.getAppId()
, "/temployeeinsurancepre/inner/deleteInsuranceByPreId"
, empPreId, Boolean.class, SecurityConstants.FROM_IN);
......@@ -750,6 +780,30 @@ public class TEmployeePreLogServiceImpl extends ServiceImpl<TEmployeePreLogMappe
.toInstant());
}
}
/**
* @Description: 填充基本信息
* @Author: hgw
* @Date: 2025/4/8 10:49
* @return: void
**/
private void setLogBaseInfo(String empPreId, Object oldInfo, Object newInfo
, YifuUser user, String differenceKey, String logId, TEmployeePreLogDetail detailEmpLog) {
detailEmpLog.setPreId(empPreId);
detailEmpLog.setPreLogId(logId);
detailEmpLog.setDifferenceInfo(differenceKey);
detailEmpLog.setCreateTime(LocalDateTime.now());
if (Common.isNotNull(user)) {
detailEmpLog.setCreateBy(user.getId());
detailEmpLog.setCreateName(user.getNickname());
}
if (Common.isNotNull(oldInfo)) {
detailEmpLog.setOldInfo(JSON.toJSONString(oldInfo, features));
}
if (Common.isNotNull(newInfo)) {
detailEmpLog.setNewInfo(JSON.toJSONString(newInfo, features));
}
}
@Override
public void saveUpdateInsurance(String empPreId, EmployeeRegistrationPre oldInfo
, EmployeeRegistrationPre newInfo, String userId, String nickName, Map<String, TEmployeeInsurancePre> oldMap
......@@ -884,7 +938,7 @@ public class TEmployeePreLogServiceImpl extends ServiceImpl<TEmployeePreLogMappe
attaInfoService.update(updateWrapperContract);
//删除历史的合同待签订数据
contractPreService.remove(Wrappers.<TEmployeeContractPre>query().lambda()
.in(TEmployeeContractPre::getProcessStatus, Arrays.asList("0","1","3","5","7","10","11"))
.in(TEmployeeContractPre::getProcessStatus, Arrays.asList("0","1","3","5","7","10","11"))
.eq(TEmployeeContractPre::getId,contractOld.getId()));
}
......@@ -1034,30 +1088,6 @@ public class TEmployeePreLogServiceImpl extends ServiceImpl<TEmployeePreLogMappe
}
}
/**
* @Description: 填充基本信息
* @Author: hgw
* @Date: 2025/4/8 10:49
* @return: void
**/
private void setLogBaseInfo(String empPreId, Object oldInfo, Object newInfo
, YifuUser user, String differenceKey, String logId, TEmployeePreLogDetail detailEmpLog) {
detailEmpLog.setPreId(empPreId);
detailEmpLog.setPreLogId(logId);
detailEmpLog.setDifferenceInfo(differenceKey);
detailEmpLog.setCreateTime(LocalDateTime.now());
if (Common.isNotNull(user)) {
detailEmpLog.setCreateBy(user.getId());
detailEmpLog.setCreateName(user.getNickname());
}
if (Common.isNotNull(oldInfo)) {
detailEmpLog.setOldInfo(JSON.toJSONString(oldInfo, features));
}
if (Common.isNotNull(newInfo)) {
detailEmpLog.setNewInfo(JSON.toJSONString(newInfo, features));
}
}
/**
* @Description: 填充基本信息
* @Author: huyc
......
......@@ -47,6 +47,8 @@ import java.io.IOException;
import java.io.InputStream;
import java.util.*;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.util.stream.Collectors;
/**
......@@ -594,7 +596,7 @@ public class ElectronicArchiveImportServiceImpl implements ElectronicArchiveImpo
} else {
// ZIP中存在该人员的文件夹,处理其附件(可能有多个文件夹)
List<String> materialTypes = new ArrayList<>();
List<String> failReasons = new ArrayList<>();
List<String> failReasons = new ArrayList<>();
// 遍历该人员的所有文件夹
for (File personDir : personDirs) {
......@@ -1232,43 +1234,59 @@ public class ElectronicArchiveImportServiceImpl implements ElectronicArchiveImpo
*/
private Map<String, String> parseIdCardAndName(String folderName) {
Map<String, String> result = new HashMap<>();
if (folderName == null || folderName.trim().isEmpty()) {
return result;
}
// 尝试用-分隔
if (folderName.contains("-") || folderName.contains("—")) {
String[] parts;
if (folderName.contains("-")) {
parts = folderName.split("-");
}else {
parts = folderName.split("—");
}
// 统一处理全角和半角横线
folderName = folderName.replace("—", "-");
// 身份证正则表达式:18位,前17位为数字,最后一位可以是数字或X(大小写)
String idCardPattern = "\\d{17}[\\dXx]";
// 情况1:包含分隔符"-"
if (folderName.contains("-")) {
String[] parts = folderName.split("-");
if (parts.length == 2) {
// 判断哪个是身份证号(18位数字)
if (parts[0].matches("\\d{18}")) {
result.put("idCard", parts[0]);
result.put("name", parts[1]);
} else if (parts[1].matches("\\d{18}")) {
result.put("name", parts[0]);
result.put("idCard", parts[1]);
}
}
} else {
// 尝试提取18位身份证号
int idCardStart = -1;
for (int i = 0; i <= folderName.length() - 18; i++) {
String sub = folderName.substring(i, i + 18);
if (sub.matches("\\d{18}")) {
idCardStart = i;
break;
String part1 = parts[0].trim();
String part2 = parts[1].trim();
if (part1.matches(idCardPattern)) {
result.put("idCard", part1.toUpperCase()); // 统一转为大写
result.put("name", part2);
} else if (part2.matches(idCardPattern)) {
result.put("name", part1);
result.put("idCard", part2.toUpperCase());
}
}
return result;
}
if (idCardStart >= 0) {
String idCard = folderName.substring(idCardStart, idCardStart + 18);
String name = folderName.substring(0, idCardStart) +
folderName.substring(idCardStart + 18);
result.put("idCard", idCard);
result.put("name", name);
// 情况2:无分隔符,直接拼接
// 使用正则表达式查找身份证号
Pattern pattern = Pattern.compile(idCardPattern);
Matcher matcher = pattern.matcher(folderName);
if (matcher.find()) {
String idCard = matcher.group().toUpperCase();
int start = matcher.start();
int end = matcher.end();
// 提取姓名部分(身份证前后部分合并)
String name;
if (start == 0) {
// 身份证在开头
name = folderName.substring(end).trim();
} else if (end == folderName.length()) {
// 身份证在结尾
name = folderName.substring(0, start).trim();
} else {
// 身份证在中间(理论上不应该出现,但处理一下)
name = (folderName.substring(0, start) + folderName.substring(end)).trim();
}
result.put("idCard", idCard);
result.put("name", name);
}
return result;
......
......@@ -1361,6 +1361,19 @@ public class TElectronicArchiveDetailServiceImpl extends ServiceImpl<TElectronic
return R.failed("电子档案明细不存在");
}
List<TTaskArchiveRelation> relationList = relationService.list(Wrappers.<TTaskArchiveRelation>lambdaQuery()
.eq(TTaskArchiveRelation::getArchiveDetailId, id));
if (Common.isNotNull(relationList)) {
for (TTaskArchiveRelation relation: relationList) {
//查找是否存在任务
TElectronicArchiveTask task = taskService.getById(relation.getTaskId());
if (Common.isNotNull(task) && task.getStatus().equals(ArchiveConstants.TASK_STATUS_NOT_UPLOADED)) {
return R.failed("该明细正在被待上传zip文件的任务使用,请先删除任务或者上传对应的zip文件,"
+ "任务编码:" +task.getTaskCode());
}
}
}
// 2. 查询该明细下所有的附件(包括可用和不可用的)
List<TAttaInfo> attachments = attaInfoService.list(Wrappers.<TAttaInfo>lambdaQuery()
.eq(TAttaInfo::getDomainId, id)
......@@ -1415,7 +1428,6 @@ public class TElectronicArchiveDetailServiceImpl extends ServiceImpl<TElectronic
}
// 7. 构建返回消息
YifuUser user = SecurityUtils.getUser();
String resultMsg = String.format("删除成功。明细:%s-%s-%s,附件删除成功:%d个",
detail.getDeptNo(), detail.getEmpName(), detail.getEmpIdcard(), attachmentSuccessCount);
......
......@@ -1269,7 +1269,7 @@
<!-- 社保状态:派增(0待审核、1待办理、2办理中 3办理成功、4部分办理失败 5 办理失败 10 审核不通过)、派减(6待审核 7待办理 8办理成功 9 办理失败 11派减办理中 12 派减部分办理失败) -->
and a.social_status in ('0', '1', '2', '3', '4', '6', '7', '9', '11', '12')
<if test="type != null and type = '1'">
and a.create_name not like '自动化%'
and d.create_name not like '自动化%'
</if>
</select>
<!--tSocialFundInfo简单分页查询-->
......@@ -1296,7 +1296,7 @@
and a.fund_status in ('0', '1', '3', '5', '6', '8')
<if test="type != null and type == '1'">
and a.create_name not like '自动化%'
and d.create_name not like '自动化%'
</if>
</select>
<select id="selectSocialFundInfoCountByEmpIdcard" resultType="java.lang.Long">
......
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