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