Commit 6e8f2427 authored by fangxinjiang's avatar fangxinjiang

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

parents 4f549f7d 3e9d4551
......@@ -655,8 +655,9 @@ public class EmployeeRegistrationPreServiceImpl extends ServiceImpl<EmployeeRegi
|| !CommonConstants.FOUR_STRING.equals(insurancePreVo.getModelType())) {
checkVo = checkInsuranceExit(preVo);
if (null != checkVo) {
errorTemp.append("保单开始日期:" + insurancePreVo.getPolicyStart().toString()
+ ",保单结束日期:" + insurancePreVo.getPolicyEnd().toString() + "这条数据存在流程中/已完结的商险数据;");
errorTemp.append("保单开始日期:" + DateUtil.dateToString(insurancePreVo.getPolicyStart(), "yyyy-MM-dd")
+ ",保单结束日期:" + DateUtil.dateToString(insurancePreVo.getPolicyEnd(), "yyyy-MM-dd")
+ "这条数据存在流程中/已完结的商险数据;");
// errorList.add(checkVo);
} else {
if (Common.isNotNull(preVo.getProcessStatus())) {
......
package com.yifu.cloud.plus.v1.batch.constants;
import sun.net.www.content.image.gif;
import sun.net.www.content.image.jpeg;
import sun.net.www.content.image.png;
/**
* 电子档案相关常量
*
......@@ -121,6 +125,7 @@ public interface ArchiveConstants {
/**
* 支持的文件格式
*/
String[] SUPPORTED_FILE_FORMATS = {"png", "jpg", "jpeg", "xlsx", "xls", "doc", "docx", "pdf", "ppt", "pptx", "txt"};
String[] SUPPORTED_FILE_FORMATS = {"gif", "jpg", "jpeg", "png", "bmp", "xls", "xlsx", "csv", "pdf", "docx", "doc", "m4a", "mp3", "zip", "rar", "txt"};
}
......@@ -59,6 +59,14 @@ public class TElectronicArchiveDetail extends BaseEntity {
@Schema(description = "项目编码")
private String deptNo;
/**
* 项目ID
*/
@ExcelAttribute(name = "项目ID")
@ExcelProperty("项目ID")
@Schema(description = "项目ID")
private String deptId;
/**
* 项目名称
*/
......
......@@ -261,6 +261,7 @@ public class ElectronicArchiveImportServiceImpl implements ElectronicArchiveImpo
detail.setEmpName(data.getEmpName());
detail.setEmpIdcard(data.getEmpIdcard());
detail.setDeptNo(data.getDeptNo());
detail.setDeptId(settleResult.getId());
detail.setDeptName(data.getDeptName());
detail.setCustomerName(settleResult.getCustomerName());
detail.setCustomerCode(settleResult.getCustomerCode());
......@@ -558,15 +559,16 @@ public class ElectronicArchiveImportServiceImpl implements ElectronicArchiveImpo
// 获取ZIP包的根目录(第一级目录,身份证+姓名目录)
File[] zipRootDirs = tempDir.listFiles(File::isDirectory);
Map<String, File> zipDirMap = new HashMap<>();
Map<String, List<File>> zipDirMap = new HashMap<>();
if (zipRootDirs != null && zipRootDirs.length > 0) {
// 将ZIP中的目录按照 身份证_姓名 建立映射
// 将ZIP中的目录按照 身份证_姓名 建立映射,支持同一个人有多个文件夹
for (File personDir : zipRootDirs) {
String dirName = personDir.getName();
Map<String, String> idNameMap = parseIdCardAndName(dirName);
if (!idNameMap.isEmpty() && idNameMap.containsKey("idCard") && idNameMap.containsKey("name")) {
String uniqueKey = idNameMap.get("idCard") + "_" + idNameMap.get("name");
zipDirMap.put(uniqueKey, personDir);
// 使用List存储,支持同一个人有多个文件夹
zipDirMap.computeIfAbsent(uniqueKey, k -> new ArrayList<>()).add(personDir);
}
}
}
......@@ -582,19 +584,22 @@ public class ElectronicArchiveImportServiceImpl implements ElectronicArchiveImpo
String uniqueKey = detail.getEmpIdcard() + "_" + detail.getEmpName();
// 检查ZIP中是否存在该人员的目录
File personDir = zipDirMap.get(uniqueKey);
List<File> personDirs = zipDirMap.get(uniqueKey);
if (personDir == null) {
if (personDirs == null || personDirs.isEmpty()) {
// ZIP中没有该人员的文件夹,记录为跳过
personProcessResultMap.put(uniqueKey, ArchiveConstants.PROCESS_RESULT_SKIP);
personFailReasonMap.put(uniqueKey, "压缩包中未找到对应文件夹,跳过处理");
personMaterialTypesMap.put(uniqueKey, new ArrayList<>());
} else {
// ZIP中存在该人员的文件夹,处理其附件
// ZIP中存在该人员的文件夹,处理其附件(可能有多个文件夹)
List<String> materialTypes = new ArrayList<>();
List<String> failReasons = new ArrayList<>();
// 遍历该人员的所有文件夹
for (File personDir : personDirs) {
processPersonDirectoryWithResult(personDir, detail, materialTypes, failReasons, taskId);
}
personMaterialTypesMap.put(uniqueKey, materialTypes);
......@@ -836,6 +841,9 @@ public class ElectronicArchiveImportServiceImpl implements ElectronicArchiveImpo
// 用于记录该人员的所有资料类型
Set<String> materialTypesSet = new HashSet<>();
// 收集直接文件(作为存量类型处理)
List<File> stockFiles = new ArrayList<>();
// 遍历第三级,按资料类型分组处理所有文件
for (File subFile : subFiles) {
if (subFile.isDirectory()) {
......@@ -865,17 +873,20 @@ public class ElectronicArchiveImportServiceImpl implements ElectronicArchiveImpo
failReasons.add(materialType + ":" + result);
}
} else {
// 直接是文件,默认为存量类型,按单个文件处理
List<File> singleFileList = new ArrayList<>();
singleFileList.add(subFile);
String result = processMaterialTypeFilesWithResult(singleFileList, detail, ArchiveConstants.MATERIAL_TYPE_STOCK, taskId);
// 直接是文件,收集起来统一作为存量类型处理
stockFiles.add(subFile);
}
}
// 统一处理所有直接文件(存量类型)
if (!stockFiles.isEmpty()) {
String result = processMaterialTypeFilesWithResult(stockFiles, detail, ArchiveConstants.MATERIAL_TYPE_STOCK, taskId);
if ("success".equals(result)) {
materialTypesSet.add(ArchiveConstants.MATERIAL_TYPE_STOCK);
} else {
failReasons.add(ArchiveConstants.MATERIAL_TYPE_STOCK + ":" + result);
}
}
}
// 更新明细表的资料类型和状态
if (!materialTypesSet.isEmpty()) {
......@@ -965,7 +976,7 @@ public class ElectronicArchiveImportServiceImpl implements ElectronicArchiveImpo
// 有文件格式不符,整体失败,不再处理后续文件
ArchiveFeedbackVO feedback = createFeedbackVO(detail, materialType,
ArchiveConstants.PROCESS_RESULT_FAILED,
"文件格式不符,文件格式需为png\\jpg\\jpeg\\xlsx\\xls\\doc\\docx\\pdf\\ppt\\pptx\\txt:" + fileName);
"文件格式不符,文件格式需为gif|jpg|jpeg|png|bmp|xls|xlsx|csv|pdf|docx|doc|m4a|mp3|zip|rar|txt:" + fileName);
feedbackList.add(feedback);
return;
}
......@@ -1039,7 +1050,7 @@ public class ElectronicArchiveImportServiceImpl implements ElectronicArchiveImpo
String fileName = file.getName();
if (checkFileFormat(fileName)) {
// 有文件格式不符,整体失败
return "文件格式不符,文件格式需为png\\jpg\\jpeg\\xlsx\\xls\\doc\\docx\\pdf\\ppt\\pptx\\txt:" + fileName;
return "文件格式不符,文件格式需为gif|jpg|jpeg|png|bmp|xls|xlsx|csv|pdf|docx|doc|m4a|mp3|zip|rar|txt:" + fileName;
}
}
......@@ -1346,6 +1357,7 @@ public class ElectronicArchiveImportServiceImpl implements ElectronicArchiveImpo
detail.setEmpIdcard(empIdcard);
detail.setDeptNo(deptNo);
detail.setDeptName(deptName);
detail.setDeptId(settleResult.getId());
detail.setCustomerName(settleResult.getCustomerName());
detail.setCustomerCode(settleResult.getCustomerCode());
detail.setMaterialType(materialType);
......@@ -1498,6 +1510,7 @@ public class ElectronicArchiveImportServiceImpl implements ElectronicArchiveImpo
detail.setEmpIdcard(empIdcard);
detail.setDeptNo(deptNo);
detail.setDeptName(deptName);
detail.setDeptId(settleResult.getId());
detail.setCustomerName(settleResult.getCustomerName());
detail.setCustomerCode(settleResult.getCustomerCode());
detail.setMaterialType(materialType);
......
......@@ -24,6 +24,7 @@
<result property="updateBy" column="UPDATE_BY"/>
<result property="updateTime" column="UPDATE_TIME"/>
<result property="fileAddress" column="FILE_ADDRESS"/>
<result property="deptId" column="DEPT_ID"/>
</resultMap>
<sql id="Base_Column_List">
a.ID,
......@@ -44,7 +45,8 @@
a.CREATE_TIME,
a.UPDATE_BY,
a.UPDATE_TIME,
a.FILE_ADDRESS
a.FILE_ADDRESS,
a.DEPT_ID
</sql>
<sql id="tElectronicArchiveDetail_where">
<if test="tElectronicArchiveDetail != null">
......
......@@ -604,8 +604,9 @@ public class EmployeeRegistrationServiceImpl extends ServiceImpl<EmployeeRegistr
//商险是否存在判断
checkVo = checkInsuranceExit(insurancePreVo,registration);
if (null != checkVo) {
errorTemp.append("保单开始日期:" + insurancePreVo.getPolicyStart().toString()
+ ",保单结束日期:" + insurancePreVo.getPolicyEnd().toString() + "这条数据存在流程中/已完结的商险数据;");
errorTemp.append("保单开始日期:" + DateUtil.dateToString(insurancePreVo.getPolicyStart(), "yyyy-MM-dd")
+ ",保单结束日期:" + DateUtil.dateToString(insurancePreVo.getPolicyEnd(), "yyyy-MM-dd")
+ "这条数据存在流程中/已完结的商险数据;");
// errorList.add(checkVo);
} else {
if (Common.isEmpty(insurancePreVo.getProcessStatus())) {
......
package com.yifu.cloud.plus.v1.ekp.service.impl;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.fasterxml.jackson.databind.ObjectMapper;
......@@ -648,7 +649,10 @@ public class IcbcTransactionFlowQueryServiceImpl extends ServiceImpl<EkpSocialIn
bizContent.setRd(rd);
request.setServiceUrl("https://gw.open.icbc.com.cn/api/mybank/enterprise/pay/payent/V2");
request.setBizContent(bizContent);
String json = JSON.toJSONString(bizContent);
MybankEnterprisePayPayentResponseV2 response = client.execute(request);
//huych-注意response中有发送成功的指令号。需保存
//result 指令状态:0:提交成功,等待银行处理 1:授权成功,等待银行处理 2:等待授权 3:等待二次授权 4:等待银行答复 5:主机返回待处理
// 6:被银行拒绝 7:处理成功 8:指令被拒绝授权 9:银行正在处理 10:预约指令 11:预约取消 12:等待监管审批
......
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