Commit a01c7d7e authored by huyuchen's avatar huyuchen

Merge remote-tracking branch 'origin/develop'

parents 8d35f90b cc3f97ab
...@@ -49,6 +49,7 @@ ...@@ -49,6 +49,7 @@
<docker.password>password</docker.password> <docker.password>password</docker.password>
<git.commit.plugin>4.9.9</git.commit.plugin> <git.commit.plugin>4.9.9</git.commit.plugin>
<spring.checkstyle.plugin>0.0.29</spring.checkstyle.plugin> <spring.checkstyle.plugin>0.0.29</spring.checkstyle.plugin>
<mail.version>1.4.7</mail.version>
</properties> </properties>
<!-- 以下依赖 全局所有的模块都会引入 --> <!-- 以下依赖 全局所有的模块都会引入 -->
...@@ -88,6 +89,12 @@ ...@@ -88,6 +89,12 @@
<artifactId>spring-boot-starter-test</artifactId> <artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope> <scope>test</scope>
</dependency> </dependency>
<!-- 发送邮件依赖 -->
<dependency>
<groupId>javax.mail</groupId>
<artifactId>mail</artifactId>
<version>${mail.version}</version>
</dependency>
</dependencies> </dependencies>
<modules> <modules>
......
...@@ -203,4 +203,12 @@ public class DispatchEmpVo implements Serializable { ...@@ -203,4 +203,12 @@ public class DispatchEmpVo implements Serializable {
*/ */
private String contactAddress; private String contactAddress;
/**
* 试用期(单位月)
*/
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty(value ="试用期")
private String tryPeriod;
} }
...@@ -203,7 +203,7 @@ public class EmpProjectDispatchVo implements Serializable { ...@@ -203,7 +203,7 @@ public class EmpProjectDispatchVo implements Serializable {
* 是否更新岗位信息 * 是否更新岗位信息
*/ */
@Schema(description ="是否更新岗位信息") @Schema(description ="是否更新岗位信息")
private Boolean postUpdate; private Boolean needUpdate;
/** /**
* 入职日期 * 入职日期
......
...@@ -97,6 +97,8 @@ public class TMainExportAllVO { ...@@ -97,6 +97,8 @@ public class TMainExportAllVO {
private String field23; private String field23;
@ExcelAttribute(needExport = true, name ="项目名称") @ExcelAttribute(needExport = true, name ="项目名称")
private String field24; private String field24;
@ExcelAttribute(needExport = true, name ="项目编码")
private String field64;
@ExcelAttribute(needExport = true, name ="业务类型") @ExcelAttribute(needExport = true, name ="业务类型")
private String field25; private String field25;
@ExcelAttribute(needExport = true, name = "合同类型", isDataId = true, dataType = ExcelAttributeConstants.PERSONNEL_TYPE) @ExcelAttribute(needExport = true, name = "合同类型", isDataId = true, dataType = ExcelAttributeConstants.PERSONNEL_TYPE)
......
...@@ -33,6 +33,7 @@ import lombok.extern.slf4j.Slf4j; ...@@ -33,6 +33,7 @@ import lombok.extern.slf4j.Slf4j;
import org.springframework.cache.CacheManager; import org.springframework.cache.CacheManager;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
import javax.validation.Valid; import javax.validation.Valid;
import java.util.*; import java.util.*;
import java.util.stream.Collectors; import java.util.stream.Collectors;
...@@ -62,6 +63,7 @@ public class CustomerBusinessContoller { ...@@ -62,6 +63,7 @@ public class CustomerBusinessContoller {
private final UpmsDaprUtils upmsDaprUtils; private final UpmsDaprUtils upmsDaprUtils;
private final CacheManager cacheManager; private final CacheManager cacheManager;
/** /**
* 简单分页查询 * 简单分页查询
* @param page 分页对象 * @param page 分页对象
......
...@@ -117,7 +117,7 @@ public interface TEmployeeProjectMapper extends BaseMapper<TEmployeeProject> { ...@@ -117,7 +117,7 @@ public interface TEmployeeProjectMapper extends BaseMapper<TEmployeeProject> {
void updateContractStatus(@Param("empId") String empId, @Param("deptId") String deptId, @Param("status")int status); void updateContractStatus(@Param("empId") String empId, @Param("deptId") String deptId, @Param("status")int status);
int updatePostByEmpDeptNo(@Param("deptNo")String deptNo, @Param("post")String post,@Param("empIdcard")String empIdcard); int updatePostByEmpDeptNo(@Param("deptNo")String deptNo, @Param("tryPeriod")String tryPeriod, @Param("post")String post,@Param("empIdcard")String empIdcard);
/** /**
......
...@@ -271,7 +271,7 @@ public interface TEmployeeProjectService extends IService<TEmployeeProject> { ...@@ -271,7 +271,7 @@ public interface TEmployeeProjectService extends IService<TEmployeeProject> {
void updateContractStatus(String empId, String deptId, int status); void updateContractStatus(String empId, String deptId, int status);
void updatePostByEmpDeptNo(String deptNo, String post, String empIdcard); void updatePostByEmpDeptNo(String deptNo, String tryPeriod, String post, String empIdcard);
/** /**
* @param deptId 项目id * @param deptId 项目id
......
...@@ -352,13 +352,6 @@ public class TCompleteMonitorServiceImpl extends ServiceImpl<TCompleteMonitorMap ...@@ -352,13 +352,6 @@ public class TCompleteMonitorServiceImpl extends ServiceImpl<TCompleteMonitorMap
response.setHeader(CommonConstants.CONTENT_DISPOSITION, CommonConstants.ATTACHMENT_FILENAME + URLEncoder.encode(fileName, CommonConstants.UTF8)); response.setHeader(CommonConstants.CONTENT_DISPOSITION, CommonConstants.ATTACHMENT_FILENAME + URLEncoder.encode(fileName, CommonConstants.UTF8));
ExcelWriter excelWriter = null; ExcelWriter excelWriter = null;
if (count > 200000) { if (count > 200000) {
//if (count > CommonConstants.EXCEL_EXPORT_LIMIT)
/*List<List<String>> strList = new ArrayList<>();
strList.add(this.getNewArrayList(new String[]{"数据超过20万条,请联系管理员后端导出!"}));
List<List<String>> headList = Lists.newArrayList();
headList.add(this.getNewArrayList(new String[]{"提示"}));
EasyExcelFactory.write(out).head(headList).sheet("数据超限")
.registerConverter(new DictConverter(null, null)).doWrite(strList);*/
exportError(response, "数据超过20万条,请联系管理员后端导出"); exportError(response, "数据超过20万条,请联系管理员后端导出");
} else { } else {
exportLimit.setDeleteFlag(CommonConstants.ZERO_INT); exportLimit.setDeleteFlag(CommonConstants.ZERO_INT);
...@@ -398,6 +391,7 @@ public class TCompleteMonitorServiceImpl extends ServiceImpl<TCompleteMonitorMap ...@@ -398,6 +391,7 @@ public class TCompleteMonitorServiceImpl extends ServiceImpl<TCompleteMonitorMap
oneTitle = "在项信息"; oneTitle = "在项信息";
headList.add(this.getNewArrayList(new String[]{oneTitle, "客户名称"})); headList.add(this.getNewArrayList(new String[]{oneTitle, "客户名称"}));
headList.add(this.getNewArrayList(new String[]{oneTitle, "项目名称"})); headList.add(this.getNewArrayList(new String[]{oneTitle, "项目名称"}));
headList.add(this.getNewArrayList(new String[]{oneTitle, "项目编码"}));
headList.add(this.getNewArrayList(new String[]{oneTitle, "业务类型"})); headList.add(this.getNewArrayList(new String[]{oneTitle, "业务类型"}));
headList.add(this.getNewArrayList(new String[]{oneTitle, "合同类型"})); headList.add(this.getNewArrayList(new String[]{oneTitle, "合同类型"}));
headList.add(this.getNewArrayList(new String[]{oneTitle, "工时制"})); headList.add(this.getNewArrayList(new String[]{oneTitle, "工时制"}));
......
...@@ -2788,7 +2788,7 @@ public class TEmployeeInfoServiceImpl extends ServiceImpl<TEmployeeInfoMapper, T ...@@ -2788,7 +2788,7 @@ public class TEmployeeInfoServiceImpl extends ServiceImpl<TEmployeeInfoMapper, T
EmpAddDispatchVo emp; EmpAddDispatchVo emp;
for (Map.Entry<String, EmpProjectDispatchVo> entry : projectsMap.entrySet()) { for (Map.Entry<String, EmpProjectDispatchVo> entry : projectsMap.entrySet()) {
projectAdd = entry.getValue(); projectAdd = entry.getValue();
if (Common.isNotNull(projectAdd.getPostUpdate()) && projectAdd.getPostUpdate()) { if (Common.isNotNull(projectAdd.getNeedUpdate()) && projectAdd.getNeedUpdate()) {
continue; continue;
} }
try { try {
...@@ -2838,8 +2838,8 @@ public class TEmployeeInfoServiceImpl extends ServiceImpl<TEmployeeInfoMapper, T ...@@ -2838,8 +2838,8 @@ public class TEmployeeInfoServiceImpl extends ServiceImpl<TEmployeeInfoMapper, T
EmpProjectDispatchVo projectAdd; EmpProjectDispatchVo projectAdd;
for (Map.Entry<String, EmpProjectDispatchVo> entry : projectsMap.entrySet()) { for (Map.Entry<String, EmpProjectDispatchVo> entry : projectsMap.entrySet()) {
projectAdd = entry.getValue(); projectAdd = entry.getValue();
if (Common.isNotNull(projectAdd.getPostUpdate()) && projectAdd.getPostUpdate()) { if (Common.isNotNull(projectAdd.getNeedUpdate()) && projectAdd.getNeedUpdate()) {
tEmployeeProjectService.updatePostByEmpDeptNo(projectAdd.getDeptNo(), projectAdd.getPost(), projectAdd.getEmpIdcard()); tEmployeeProjectService.updatePostByEmpDeptNo(projectAdd.getDeptNo(), projectAdd.getTryPeriod(), projectAdd.getPost(), projectAdd.getEmpIdcard());
} }
} }
} }
......
...@@ -1905,8 +1905,8 @@ public class TEmployeeProjectServiceImpl extends ServiceImpl<TEmployeeProjectMap ...@@ -1905,8 +1905,8 @@ public class TEmployeeProjectServiceImpl extends ServiceImpl<TEmployeeProjectMap
} }
@Override @Override
public void updatePostByEmpDeptNo(String deptNo, String post, String empIdcard) { public void updatePostByEmpDeptNo(String deptNo,String tryPeriod, String post, String empIdcard) {
baseMapper.updatePostByEmpDeptNo(deptNo,post,empIdcard); baseMapper.updatePostByEmpDeptNo(deptNo,tryPeriod,post,empIdcard);
} }
/** /**
......
...@@ -1743,6 +1743,8 @@ public class TPreEmpMainServiceImpl extends ServiceImpl<TPreEmpMainMapper, TPreE ...@@ -1743,6 +1743,8 @@ public class TPreEmpMainServiceImpl extends ServiceImpl<TPreEmpMainMapper, TPreE
empId = tPreEmployeeInfo.getOldId(); empId = tPreEmployeeInfo.getOldId();
emp = tEmployeeInfoService.getById(empId); emp = tEmployeeInfoService.getById(empId);
if (emp != null) { if (emp != null) {
// 生成性别年龄等:
this.setBaseSexInfo(tPreEmployeeInfo);
BeanUtil.copyProperties(tPreEmployeeInfo, emp, ID); BeanUtil.copyProperties(tPreEmployeeInfo, emp, ID);
if (CommonConstants.ONE_INT == emp.getFileStatus()) { if (CommonConstants.ONE_INT == emp.getFileStatus()) {
emp.setCreateTime(LocalDateTime.now()); emp.setCreateTime(LocalDateTime.now());
......
...@@ -16,6 +16,7 @@ spring: ...@@ -16,6 +16,7 @@ spring:
password: yf_zsk password: yf_zsk
#url: jdbc:mysql://127.0.0.1:3306/yifu_upms?characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&allowMultiQueries=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=Asia/Shanghai&nullCatalogMeansCurrent=true&allowPublicKeyRetrieval=true #url: jdbc:mysql://127.0.0.1:3306/yifu_upms?characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&allowMultiQueries=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=Asia/Shanghai&nullCatalogMeansCurrent=true&allowPublicKeyRetrieval=true
url: jdbc:mysql://192.168.1.65:43306/mvp_archives?characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&allowMultiQueries=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=Asia/Shanghai&rewriteBatchedStatements=true&nullCatalogMeansCurrent=true&allowPublicKeyRetrieval=true url: jdbc:mysql://192.168.1.65:43306/mvp_archives?characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&allowMultiQueries=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=Asia/Shanghai&rewriteBatchedStatements=true&nullCatalogMeansCurrent=true&allowPublicKeyRetrieval=true
#url: jdbc:mysql://119.96.147.6:22306/mvp_archives?characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&allowMultiQueries=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=Asia/Shanghai&rewriteBatchedStatements=true&nullCatalogMeansCurrent=true&allowPublicKeyRetrieval=true
hikari: hikari:
driver-class-name: ${spring.datasource.driver-class-name} driver-class-name: ${spring.datasource.driver-class-name}
jdbc-url: ${spring.datasource.url} jdbc-url: ${spring.datasource.url}
......
...@@ -55,7 +55,6 @@ security: ...@@ -55,7 +55,6 @@ security:
- /tpreempmain/checkCode - /tpreempmain/checkCode
# 文件上传相关 支持阿里云、华为云、腾讯、minio # 文件上传相关 支持阿里云、华为云、腾讯、minio
oss: oss:
endpoint: http://oss-cn-beijing.aliyuncs.com endpoint: http://oss-cn-beijing.aliyuncs.com
......
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<configuration debug="false" scan="false"> <configuration debug="false" scan="false">
<springProperty scop="context" name="spring.application.name" source="spring.application.name" defaultValue=""/> <springProperty scop="context" name="springAppName" source="spring.application.name" defaultValue=""/>
<property name="log.path" value="logs/${spring.application.name}"/> <springProperty scop="context" name="springAppActive" source="spring.profiles.active" defaultValue=""/>
<property name="log.path" value="logs/${springAppName}"/>
<!-- 彩色日志格式 --> <!-- 彩色日志格式 -->
<property name="CONSOLE_LOG_PATTERN" <property name="CONSOLE_LOG_PATTERN"
value="${CONSOLE_LOG_PATTERN:-%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}"/> value="${CONSOLE_LOG_PATTERN:-%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}"/>
...@@ -19,6 +20,7 @@ ...@@ -19,6 +20,7 @@
</encoder> </encoder>
</appender> </appender>
<!-- Log file debug output --> <!-- Log file debug output -->
<appender name="debug" class="ch.qos.logback.core.rolling.RollingFileAppender"> <appender name="debug" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${log.path}/debug.log</file> <file>${log.path}/debug.log</file>
...@@ -47,13 +49,50 @@ ...@@ -47,13 +49,50 @@
<level>ERROR</level> <level>ERROR</level>
</filter> </filter>
</appender> </appender>
<!--邮件提醒-->
<appender name="MAIL" class="ch.qos.logback.classic.net.SMTPAppender">
<smtpHost>smtp.exmail.qq.com</smtpHost>
<smtpPort>465</smtpPort>
<username>information@wanxin-holdings.com</username>
<password>QmdCaQSPmCAQEddd</password>
<SSL>true</SSL>
<asynchronousSending>true</asynchronousSending>
<to>wangpeng@wanxin-holdings.com,fangxinjiang@wanxin-holdings.com,hongguangwu@wanxin-holdings.com</to>
<from>information@wanxin-holdings.com</from>
<subject>hro-mvp ${springAppActive}环境 ${springAppName}服务: %-20msg 错误</subject>
<charsetEncoding>UTF-8</charsetEncoding>
<cyclicBufferTracker class="ch.qos.logback.core.spi.CyclicBufferTracker">
<!-- &lt;!&ndash; 每个电子邮件只发送一个日志条目 &ndash;&gt;-->
<bufferSize>1</bufferSize>
</cyclicBufferTracker>
<layout class="ch.qos.logback.classic.html.HTMLLayout"/>
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>ERROR</level>
</filter>
</appender>
<springProfile name="prd">
<root level="error">
<appender-ref ref="console"/>
<appender-ref ref="debug"/>
<appender-ref ref="error"/>
<appender-ref ref="MAIL"/>
</root>
</springProfile>
<springProfile name="dev">
<root level="error">
<appender-ref ref="console"/>
<appender-ref ref="debug"/>
<appender-ref ref="error"/>
</root>
</springProfile>
<springProfile name="test">
<!-- Level: FATAL 0 ERROR 3 WARN 4 INFO 6 DEBUG 7 --> <!-- Level: FATAL 0 ERROR 3 WARN 4 INFO 6 DEBUG 7 -->
<root level="error"> <root level="error">
<appender-ref ref="console"/> <appender-ref ref="console"/>
<appender-ref ref="debug"/> <appender-ref ref="debug"/>
<appender-ref ref="error"/> <appender-ref ref="error"/>
</root> </root>
</springProfile>
</configuration> </configuration>
...@@ -346,7 +346,7 @@ ...@@ -346,7 +346,7 @@
,e.POLITICAL_STATUS field15,e.EMP_PHONE field16,e.EMP_EMAIL field17 ,e.POLITICAL_STATUS field15,e.EMP_PHONE field16,e.EMP_EMAIL field17
,e.ID_PROVINCE field18,e.ID_CITY field69,e.ID_TOWN field70,e.ID_PROVINCE field18,e.EMP_REGIS_TYPE field19 ,e.ID_PROVINCE field18,e.ID_CITY field69,e.ID_TOWN field70,e.ID_PROVINCE field18,e.EMP_REGIS_TYPE field19
,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 ,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.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
......
...@@ -197,6 +197,7 @@ ...@@ -197,6 +197,7 @@
<result property="deptNo" column="DEPT_NO"/> <result property="deptNo" column="DEPT_NO"/>
<result property="post" column="POST"/> <result property="post" column="POST"/>
<result property="empNo" column="EMP_NO"/> <result property="empNo" column="EMP_NO"/>
<result property="tryPeriod" column="TRY_PERIOD"/>
</resultMap> </resultMap>
<sql id="baseParam"> <sql id="baseParam">
...@@ -968,7 +969,7 @@ ...@@ -968,7 +969,7 @@
b.CONTRACT_START,b.CONTRACT_END,b.CONTRACT_TERM,b.CONTRACT_SUB_NAME,b.CONTRACT_ID, b.CONTRACT_START,b.CONTRACT_END,b.CONTRACT_TERM,b.CONTRACT_SUB_NAME,b.CONTRACT_ID,
c.UNIT_NAME, c.UNIT_NAME,
c.UNIT_NO,c.DEPT_ID,c.DEPT_NAME,c.DEPT_NO,c.POST,c.EMP_NO,c.PROJECT_STATUS,c.EMP_NATRUE c.UNIT_NO,c.DEPT_ID,c.DEPT_NAME,c.DEPT_NO,c.POST,c.EMP_NO,c.PROJECT_STATUS,c.EMP_NATRUE,c.TRY_PERIOD
from ( from (
select e.ID,e.EMP_CODE,e.EMP_NAME,e.EMP_IDCARD,e.EMP_NATIONAL,e.EMP_PHONE,e.ID_PROVINCE,e.ID_CITY, select e.ID,e.EMP_CODE,e.EMP_NAME,e.EMP_IDCARD,e.EMP_NATIONAL,e.EMP_PHONE,e.ID_PROVINCE,e.ID_CITY,
e.ID_TOWN,e.EMP_REGIS_TYPE,e.FILE_PROVINCE,e.FILE_CITY,e.FILE_TOWN,e.HIGN_EDUCATION,e.FILE_STATUS,e.CONTACT_ADDRESS e.ID_TOWN,e.EMP_REGIS_TYPE,e.FILE_PROVINCE,e.FILE_CITY,e.FILE_TOWN,e.HIGN_EDUCATION,e.FILE_STATUS,e.CONTACT_ADDRESS
...@@ -984,7 +985,7 @@ ...@@ -984,7 +985,7 @@
</if> </if>
) a ) a
left join ( left join (
select p.UNIT_NAME,p.UNIT_NO,p.DEPT_ID,p.DEPT_NAME,p.DEPT_NO,p.POST,p.EMP_ID,p.EMP_NO,P.PROJECT_STATUS,p.EMP_NATRUE select p.UNIT_NAME,p.UNIT_NO,p.DEPT_ID,p.DEPT_NAME,p.DEPT_NO,p.POST,p.EMP_ID,p.EMP_NO,P.PROJECT_STATUS,p.EMP_NATRUE,p.TRY_PERIOD
from t_employee_project p from t_employee_project p
where 1=1 and p.DELETE_FLAG = '0' where 1=1 and p.DELETE_FLAG = '0'
<if test="checkVo != null"> <if test="checkVo != null">
......
...@@ -1093,7 +1093,16 @@ ...@@ -1093,7 +1093,16 @@
</update> </update>
<update id="updatePostByEmpDeptNo" > <update id="updatePostByEmpDeptNo" >
update t_employee_project a update t_employee_project a
set a.POST = #{post} set
<if test="post != null and post !=''">
a.POST = #{post}
<if test="tryPeriod != null and tryPeriod !=''">
,
</if>
</if>
<if test="tryPeriod != null and tryPeriod !=''">
a.TRY_PERIOD = #{tryPeriod}
</if>
WHERE a.DEPT_NO=#{deptNo} and a.EMP_IDCARD=#{empIdcard} and a.DELETE_FLAG ='0' WHERE a.DEPT_NO=#{deptNo} and a.EMP_IDCARD=#{empIdcard} and a.DELETE_FLAG ='0'
</update> </update>
......
...@@ -16,8 +16,9 @@ ...@@ -16,8 +16,9 @@
--> -->
<configuration debug="false" scan="false"> <configuration debug="false" scan="false">
<springProperty scop="context" name="spring.application.name" source="spring.application.name" defaultValue=""/> <springProperty scop="context" name="springAppName" source="spring.application.name" defaultValue=""/>
<property name="log.path" value="logs/${spring.application.name}"/> <springProperty scop="context" name="springAppActive" source="spring.profiles.active" defaultValue=""/>
<property name="log.path" value="logs/${springAppName}"/>
<!-- 彩色日志格式 --> <!-- 彩色日志格式 -->
<property name="CONSOLE_LOG_PATTERN" <property name="CONSOLE_LOG_PATTERN"
value="${CONSOLE_LOG_PATTERN:-%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}"/> value="${CONSOLE_LOG_PATTERN:-%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}"/>
...@@ -68,10 +69,49 @@ ...@@ -68,10 +69,49 @@
<appender-ref ref="error"/> <appender-ref ref="error"/>
</logger> </logger>
<!-- Level: FATAL 0 ERROR 3 WARN 4 INFO 6 DEBUG 7 --> <!--邮件提醒-->
<root level="INFO"> <appender name="MAIL" class="ch.qos.logback.classic.net.SMTPAppender">
<appender-ref ref="console"/> <smtpHost>smtp.exmail.qq.com</smtpHost>
<appender-ref ref="debug"/> <smtpPort>465</smtpPort>
<appender-ref ref="error"/> <username>information@wanxin-holdings.com</username>
</root> <password>QmdCaQSPmCAQEddd</password>
<SSL>true</SSL>
<asynchronousSending>true</asynchronousSending>
<to>wangpeng@wanxin-holdings.com,fangxinjiang@wanxin-holdings.com,hongguangwu@wanxin-holdings.com</to>
<from>information@wanxin-holdings.com</from>
<subject>hro-mvp ${springAppActive}环境 ${springAppName}服务: %-20msg 错误</subject>
<charsetEncoding>UTF-8</charsetEncoding>
<cyclicBufferTracker class="ch.qos.logback.core.spi.CyclicBufferTracker">
<!-- &lt;!&ndash; 每个电子邮件只发送一个日志条目 &ndash;&gt;-->
<bufferSize>1</bufferSize>
</cyclicBufferTracker>
<layout class="ch.qos.logback.classic.html.HTMLLayout"/>
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>ERROR</level>
</filter>
</appender>
<springProfile name="prd">
<root level="error">
<appender-ref ref="console"/>
<appender-ref ref="debug"/>
<appender-ref ref="error"/>
<appender-ref ref="MAIL"/>
</root>
</springProfile>
<springProfile name="dev">
<root level="error">
<appender-ref ref="console"/>
<appender-ref ref="debug"/>
<appender-ref ref="error"/>
</root>
</springProfile>
<springProfile name="test">
<!-- Level: FATAL 0 ERROR 3 WARN 4 INFO 6 DEBUG 7 -->
<root level="error">
<appender-ref ref="console"/>
<appender-ref ref="debug"/>
<appender-ref ref="error"/>
</root>
</springProfile>
</configuration> </configuration>
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<configuration debug="false" scan="false"> <configuration debug="false" scan="false">
<springProperty scop="context" name="spring.application.name" source="spring.application.name" defaultValue=""/> <springProperty scop="context" name="springAppName" source="spring.application.name" defaultValue=""/>
<property name="log.path" value="logs/${spring.application.name}"/> <springProperty scop="context" name="springAppActive" source="spring.profiles.active" defaultValue=""/>
<property name="log.path" value="logs/${springAppName}"/>
<!-- 彩色日志格式 --> <!-- 彩色日志格式 -->
<property name="CONSOLE_LOG_PATTERN" <property name="CONSOLE_LOG_PATTERN"
value="${CONSOLE_LOG_PATTERN:-%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}"/> value="${CONSOLE_LOG_PATTERN:-%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}"/>
......
...@@ -541,6 +541,7 @@ public interface CommonConstants { ...@@ -541,6 +541,7 @@ public interface CommonConstants {
public static final String PARAM_INFO_ERROR = "传参有误!"; public static final String PARAM_INFO_ERROR = "传参有误!";
public static final String XLS = ".xls";
public static final String XLSX = ".xlsx"; public static final String XLSX = ".xlsx";
public static final String ERROR_IMPORT = "执行异常"; public static final String ERROR_IMPORT = "执行异常";
// 权限使用的 // 权限使用的
......
...@@ -626,4 +626,8 @@ public interface ErrorCodes { ...@@ -626,4 +626,8 @@ public interface ErrorCodes {
* 户口性质不可为空 * 户口性质不可为空
*/ */
String EMP_DISPATCH_EMP_REGISTYPE_NOT_EMPTY = "dispatch.emp.registype.not.empty"; String EMP_DISPATCH_EMP_REGISTYPE_NOT_EMPTY = "dispatch.emp.registype.not.empty";
/**
* 试用期不可为空
*/
String EMP_DISPATCH_EMP_TRYPERIOD_NOT_EMPTY = "dispatch.emp.tryperiod.not.empty";
} }
...@@ -301,6 +301,23 @@ public class DateUtil { ...@@ -301,6 +301,23 @@ public class DateUtil {
} }
} }
public static Date stringToDateByFormat(String dateText, String format) {
if (dateText == null) {
return null;
}
try {
// 兼容多格式,格式化为没有分隔符的格式:
if (format == null) {
format = ISO_DATE_FORMAT;
}
DateFormat df = new SimpleDateFormat(format);
df.setLenient(false);
return df.parse(dateText);
} catch (ParseException e) {
return null;
}
}
/** /**
* @Description: 格式化字符串日期 * @Description: 格式化字符串日期
* @Author: hgw * @Author: hgw
...@@ -1624,6 +1641,18 @@ public class DateUtil { ...@@ -1624,6 +1641,18 @@ public class DateUtil {
return sf.format(new Date()); return sf.format(new Date());
} }
/**
* @Description: 返回当前年月日时分秒字符串(一般用在导出文件名)
* @Description: 不含-
* @Author: hgw
* @Date: 2024-11-20 16:21:45
* @return: java.lang.String
**/
public static String getThisTimeNoLine(){
SimpleDateFormat sf = new SimpleDateFormat(DateUtil.DATE_PATTERN);
return sf.format(new Date());
}
/** /**
* @param * @param
......
...@@ -214,7 +214,7 @@ public class NoUtil { ...@@ -214,7 +214,7 @@ public class NoUtil {
} }
} }
if (pos == -1) { if (pos == -1) {
System.out.println("查找字母出错"); log.info("查找字母出错");
return "error"; return "error";
} }
if ('Z' == alphatableb[pos]) { if ('Z' == alphatableb[pos]) {
...@@ -225,7 +225,7 @@ public class NoUtil { ...@@ -225,7 +225,7 @@ public class NoUtil {
+ 'A' + restNumberFunc(numStr.substring(1)); + 'A' + restNumberFunc(numStr.substring(1));
} else { } else {
//ZZZZZ //ZZZZZ
System.out.println("商户序号已达到最大值,请联系管理员"); log.info("商户序号已达到最大值,请联系管理员");
return "error"; return "error";
} }
} else { } else {
......
...@@ -242,6 +242,8 @@ dispatch.emp.education.not.empty=\u5DF2\u6709\u6863\u6848\u5B66\u5386\u4E3A\u7A7 ...@@ -242,6 +242,8 @@ dispatch.emp.education.not.empty=\u5DF2\u6709\u6863\u6848\u5B66\u5386\u4E3A\u7A7
dispatch.emp.registype.not.empty=\u5DF2\u6709\u6863\u6848\u6237\u53E3\u6027\u8D28\u4E3A\u7A7A\u6216\u65E0\u6863\u6848\uFF0C\u6D3E\u5355\u6A21\u677F\u6237\u53E3\u6027\u8D28\u4E0D\u53EF\u4E3A\u7A7A\uFF0C\u8BF7\u8865\u5145\u6237\u53E3\u6027\u8D28 dispatch.emp.registype.not.empty=\u5DF2\u6709\u6863\u6848\u6237\u53E3\u6027\u8D28\u4E3A\u7A7A\u6216\u65E0\u6863\u6848\uFF0C\u6D3E\u5355\u6A21\u677F\u6237\u53E3\u6027\u8D28\u4E0D\u53EF\u4E3A\u7A7A\uFF0C\u8BF7\u8865\u5145\u6237\u53E3\u6027\u8D28
dispatch.emp.tryperiod.not.empty=\u5DF2\u6709\u6863\u6848\u8BD5\u7528\u671F\u4E3A\u7A7A\u6216\u65E0\u6863\u6848\uFF0C\u6D3E\u5355\u6A21\u677F\u8BD5\u7528\u671F\u4E0D\u53EF\u4E3A\u7A7A\uFF0C\u8BF7\u8865\u5145\u8BD5\u7528\u671F
......
...@@ -20,6 +20,10 @@ public class EkpOrderProperties { ...@@ -20,6 +20,10 @@ public class EkpOrderProperties {
* 接口url * 接口url
*/ */
String url; String url;
/**
* 接口url
*/
String url2;
/** /**
* 订单modelId * 订单modelId
......
package com.yifu.cloud.plus.v1.yifu.ekp.util; package com.yifu.cloud.plus.v1.yifu.ekp.util;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.yifu.cloud.plus.v1.yifu.common.core.constant.CommonConstants;
import com.yifu.cloud.plus.v1.yifu.ekp.config.EkpOrderProperties; import com.yifu.cloud.plus.v1.yifu.ekp.config.EkpOrderProperties;
import com.yifu.cloud.plus.v1.yifu.ekp.constant.EkpConstants; import com.yifu.cloud.plus.v1.yifu.ekp.constant.EkpConstants;
import com.yifu.cloud.plus.v1.yifu.ekp.vo.EkpOrderParam; import com.yifu.cloud.plus.v1.yifu.ekp.vo.EkpOrderParam;
...@@ -13,6 +16,8 @@ import org.springframework.beans.factory.annotation.Autowired; ...@@ -13,6 +16,8 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.context.properties.EnableConfigurationProperties; import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.core.io.FileSystemResource; import org.springframework.core.io.FileSystemResource;
import org.springframework.http.*; import org.springframework.http.*;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Component;
import org.springframework.util.LinkedMultiValueMap; import org.springframework.util.LinkedMultiValueMap;
import org.springframework.util.MultiValueMap; import org.springframework.util.MultiValueMap;
import org.springframework.web.client.RestTemplate; import org.springframework.web.client.RestTemplate;
...@@ -21,6 +26,7 @@ import org.springframework.web.multipart.MultipartFile; ...@@ -21,6 +26,7 @@ import org.springframework.web.multipart.MultipartFile;
import java.io.File; import java.io.File;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Map;
/** /**
* @author licancan * @author licancan
...@@ -29,6 +35,7 @@ import java.util.List; ...@@ -29,6 +35,7 @@ import java.util.List;
*/ */
@Log4j2 @Log4j2
@EnableConfigurationProperties(EkpOrderProperties.class) @EnableConfigurationProperties(EkpOrderProperties.class)
@Component
public class EkpOrderUtil { public class EkpOrderUtil {
@Autowired @Autowired
private EkpOrderProperties ekpProperties; private EkpOrderProperties ekpProperties;
...@@ -139,6 +146,38 @@ public class EkpOrderUtil { ...@@ -139,6 +146,38 @@ public class EkpOrderUtil {
}); });
} }
} }
/**
* @Author fxj
* @Description 同步项目订单的附件信息(含删除的附件)
* @Date 15:10 2024/11/15
* @Param
* @return
**/
public String syncFileFromEkp(String orderNo, String attIds){
log.info("同步项目订单附件信息");
RestTemplate yourRestTemplate = new RestTemplate();
try{
HttpHeaders headers = new HttpHeaders();
//如果EKP对该接口启用了Basic认证,那么客户端需要加入
//addAuth(headers,"yourAccount"+":"+"yourPassword");是VO,则使用APPLICATION_JSON
headers.setContentType(MediaType.MULTIPART_FORM_DATA);
//必须设置上传类型,如果入参是字符串,使用MediaType.TEXT_PLAIN;如果
HttpEntity<Map<String,Object>> entity = new HttpEntity<Map<String,Object>>(null,headers);
//有返回值的情况 VO可以替换成具体的JavaBean
log.error("附件同步结果"+ekpProperties.getUrl());
ResponseEntity<String> obj = yourRestTemplate.exchange(ekpProperties.getUrl2()+"?addIds="+attIds+"&orderNo="+orderNo, HttpMethod.POST, null, String.class);
log.error("附件同步结果:"+ JSONObject.toJSONString(obj));
String body = obj.getBody();
if (!"推送成功".equals(body)){
log.error(EkpConstants.SEND_FAILED);
return EkpConstants.SEND_FAILED;
}else{
log.info(EkpConstants.SEND_SUCCESS + body);
return null;
}
}catch (Exception e){
log.error(e);
return "项目订单附件同步异常:"+e.getMessage();
}
}
} }
...@@ -20,4 +20,6 @@ public class EkpOrderParam implements Serializable { ...@@ -20,4 +20,6 @@ public class EkpOrderParam implements Serializable {
* 订单状态 待处理,处理中,已办结 * 订单状态 待处理,处理中,已办结
**/ **/
private String fd_3b0b02a34a0134; private String fd_3b0b02a34a0134;
} }
#ekporder.url=http://192.168.0.228:8080/api/sys-modeling/appModelRestService/addModel #ekporder.url=http://192.168.0.228:8080/api/sys-modeling/appModelRestService/addModel
ekporder.url=http://36.7.147.29:27007/api/sys-modeling/appModelRestService/addModel ekporder.url=http://36.7.147.29:27007/api/sys-modeling/appModelRestService/addModel
ekporder.url2=http://36.7.147.29:27007/api/hro/modelingWebservice/updateOrderFileInfo
ekporder.orderFdModelId=182f1b7ffe2e96f975564e44e559847d ekporder.orderFdModelId=182f1b7ffe2e96f975564e44e559847d
ekporder.orderFdFlowId=182f1c098ce991ca96bc927408792beb ekporder.orderFdFlowId=182f1c098ce991ca96bc927408792beb
ekporder.replyFdModelId=182f1bb35bb2156fb9a02904bc88dd8a ekporder.replyFdModelId=182f1bb35bb2156fb9a02904bc88dd8a
......
/*
* 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.ekp.entity;
import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.annotation.write.style.HeadFontStyle;
import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.annotation.JsonFormat;
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;
import java.time.LocalDateTime;
/**
* 银企付款下载关联表
*
* @author hgw
* @date 2024-11-15 15:02:38
*/
@Data
@TableName("ekp_bank_atta")
@Schema(description = "银企付款下载关联表")
public class EkpBankAtta {
/**
* 主键
*/
@TableId(type = IdType.ASSIGN_ID)
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("主键")
private String fdId;
/**
* 附件名称
*/
@ExcelAttribute(name = "附件名称", isNotEmpty = true, errorInfo = "附件名称不能为空", maxLength = 200)
@NotBlank(message = "附件名称不能为空")
@Length(max = 200, message = "附件名称不能超过200个字符")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("附件名称")
private String fdAttaName;
/**
* 资源路径
*/
@ExcelAttribute(name = "资源路径", isNotEmpty = true, errorInfo = "资源路径不能为空", maxLength = 200)
@NotBlank(message = "资源路径不能为空")
@Length(max = 200, message = "资源路径不能超过200个字符")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("资源路径")
private String fdAttaSrc;
/**
* 资源地址
*/
@ExcelAttribute(name = "资源地址", maxLength = 100)
@Length(max = 100, message = "资源地址不能超过100个字符")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("资源地址")
private String fdAttaUrl;
/**
* 资源大小
*/
@ExcelAttribute(name = "资源大小", isNotEmpty = true, errorInfo = "资源大小不能为空")
@NotBlank(message = "资源大小不能为空")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("资源大小")
private Long fdAttaSize;
/**
* 链接ID
*/
@ExcelAttribute(name = "链接ID", maxLength = 32)
@Length(max = 32, message = "链接ID不能超过32个字符")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("链接ID")
private String fdLinkId;
/**
* 类型:1:银企付款主表;2:银企付款明细表
*/
@ExcelAttribute(name = "类型")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("类型")
private Integer fdLinkType;
/**
* 创建时间
*/
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss")
@Schema(description = "创建时间")
@TableField(fill = FieldFill.INSERT)
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("创建时间")
private LocalDateTime fdCreateTime;
/**
* @Description: 生成mdCode码
* @Author: hgw
* @Date: 2024/11/20 16:07
* @return:
**/
@TableField(exist = false)
private String mdCode;
/**
* @Description: 批次号
* @Author: hgw
* @Date: 2024/11/20 16:07
* @return:
**/
@TableField(exist = false)
private String wxNo;
}
/*
* 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.ekp.entity;
import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.annotation.write.style.HeadFontStyle;
import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.annotation.JsonFormat;
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;
import java.time.LocalDateTime;
/**
* 银企付款查询卡号所属行号记录表
*
* @author hgw
* @date 2024-11-18 17:04:20
*/
@Data
@TableName("ekp_bank_code_set")
@Schema(description = "银企付款查询卡号所属行号记录表")
public class EkpBankCodeSet {
/**
* fdId
*/
@TableId(type = IdType.ASSIGN_ID)
@ExcelProperty("fdId")
@Schema(description = "fdId")
private String fdId;
/**
* 卡号
*/
@ExcelAttribute(name = "卡号", isNotEmpty = true, errorInfo = "卡号不能为空", maxLength = 50)
@NotBlank(message = "卡号不能为空")
@Length(max = 50, message = "卡号不能超过50个字符")
@ExcelProperty("卡号")
@Schema(description = "卡号")
private String fdPayeeAccount;
/**
* 收款账号开户行
*/
@ExcelAttribute(name = "收款账号开户行", maxLength = 100)
@Length(max = 100, message = "收款账号开户行不能超过100个字符")
@ExcelProperty("收款账号开户行")
@Schema(description = "收款账号开户行")
private String fdRecipientBank;
/**
* 收款银行人行行号
*/
@ExcelAttribute(name = "收款银行人行行号", maxLength = 100)
@Length(max = 100, message = "收款银行人行行号不能超过100个字符")
@ExcelProperty("收款银行人行行号")
@Schema(description = "收款银行人行行号")
private String fdRecipientBankCode;
/**
* 创建时间
*/
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss")
@Schema(description = "创建时间")
@TableField(fill = FieldFill.INSERT)
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("创建时间")
private LocalDateTime fdCreateTime;
}
/*
* 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.ekp.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;
import java.time.LocalDateTime;
/**
* 发放结果明细(银企付款任务)
*
* @author hgw
* @date 2024-11-15 17:12:14
*/
@Data
@TableName("ekp_bank_grant_detail")
@Schema(description = "发放结果明细(银企付款任务)")
public class EkpBankGrantDetail {
/**
* 主键
*/
@TableId(type = IdType.ASSIGN_ID)
@ExcelProperty("主键")
@Schema(description = "主键")
private String fdId;
/**
* 关联银企付款表主键
*/
@ExcelAttribute(name = "关联银企付款表主键", isNotEmpty = true, errorInfo = "关联银企付款表主键不能为空", maxLength = 36)
@NotBlank(message = "关联银企付款表主键不能为空")
@Length(max = 36, message = "关联银企付款表主键不能超过36个字符")
@ExcelProperty("关联银企付款表主键")
@Schema(description = "关联银企付款表主键")
private String fdParentId;
/**
* 流水号
*/
@ExcelAttribute(name = "流水号", maxLength = 50)
@Length(max = 50, message = "流水号不能超过50个字符")
@ExcelProperty("流水号")
@Schema(description = "流水号")
private String fdSerialNumber;
/**
* 收款人名称
*/
@ExcelAttribute(name = "收款人名称", maxLength = 30)
@Length(max = 30, message = "收款人名称不能超过30个字符")
@ExcelProperty("收款人名称")
@Schema(description = "收款人名称")
private String fdPayeeName;
/**
* 收款账号
*/
@ExcelAttribute(name = "收款账号", maxLength = 50)
@Length(max = 50, message = "收款账号不能超过50个字符")
@ExcelProperty("收款账号")
@Schema(description = "收款账号")
private String fdPayeeAccount;
/**
* 金额
*/
@ExcelAttribute(name = "金额")
@ExcelProperty("金额")
@Schema(description = "金额")
private Double fdMoney;
/**
* 收款银行
*/
@ExcelAttribute(name = "收款银行", maxLength = 100)
@Length(max = 100, message = "收款银行不能超过100个字符")
@ExcelProperty("收款银行")
@Schema(description = "收款银行")
private String fdRecipientBank;
/**
* 汇款用途:工资等
*/
@ExcelAttribute(name = "汇款用途:工资等", maxLength = 10)
@Length(max = 10, message = "汇款用途:工资等不能超过10个字符")
@ExcelProperty("汇款用途:工资等")
@Schema(description = "汇款用途:工资等")
private String fdRemittancePurpose;
/**
* 备注
*/
@ExcelAttribute(name = "备注", maxLength = 500)
@Length(max = 500, message = "备注不能超过500个字符")
@ExcelProperty("备注")
@Schema(description = "备注")
private String fdRemark;
/**
* 发生时间
*/
@ExcelAttribute(name = "发生时间", isDate = true)
@ExcelProperty("发生时间")
@Schema(description = "发生时间")
private LocalDateTime fdCreateTime;
/**
* 失败反馈
*/
@ExcelAttribute(name = "失败反馈", maxLength = 500)
@Length(max = 500, message = "失败反馈不能超过500个字符")
@ExcelProperty("失败反馈")
@Schema(description = "失败反馈")
private String fdFailureFeedback;
/**
* 发放状态:发放成功、发放失败
*/
@ExcelAttribute(name = "发放状态:发放成功、发放失败", maxLength = 30)
@Length(max = 30, message = "发放状态:发放成功、发放失败不能超过30个字符")
@ExcelProperty("发放状态:发放成功、发放失败")
@Schema(description = "发放状态:发放成功、发放失败")
private String fdGrantStatus;
/**
* 处理状态:待发放、发放中、转手工
*/
@ExcelAttribute(name = "处理状态:待发放、发放中、转手工", maxLength = 30)
@Length(max = 30, message = "处理状态:待发放、发放中、转手工不能超过30个字符")
@ExcelProperty("处理状态:待发放、发放中、转手工")
@Schema(description = "处理状态:待发放、发放中、转手工")
private String fdHandleStatus;
/**
* 失败处理编号
*/
@ExcelAttribute(name = "失败处理编号", maxLength = 20)
@Length(max = 20, message = "失败处理编号不能超过20个字符")
@ExcelProperty("失败处理编号")
@Schema(description = "失败处理编号")
private String fdHandleFailNo;
/**
* 失败处理ID
*/
@ExcelAttribute(name = "失败处理ID", maxLength = 36)
@Length(max = 36, message = "失败处理ID不能超过36个字符")
@ExcelProperty("失败处理ID")
@Schema(description = "失败处理ID")
private String fdHandleFailId;
/**
* 附件ID
*/
@ExcelAttribute(name = "附件ID", maxLength = 36)
@Length(max = 36, message = "附件ID不能超过36个字符")
@ExcelProperty("附件ID")
@Schema(description = "附件ID")
private String fdAttaId;
/**
* 附件名称
*/
@ExcelAttribute(name = "附件名称", maxLength = 200)
@Length(max = 200, message = "附件名称不能超过200个字符")
@ExcelProperty("附件名称")
@Schema(description = "附件名称")
private String fdAttaName;
/**
* 附件资源路径
*/
@ExcelAttribute(name = "附件资源路径", maxLength = 200)
@Length(max = 200, message = "附件资源路径不能超过200个字符")
@ExcelProperty("附件资源路径")
@Schema(description = "附件资源路径")
private String fdAttaSrc;
/**
* 附件下载次数
*/
@ExcelAttribute(name = "附件下载次数")
@ExcelProperty("附件下载次数")
@Schema(description = "附件下载次数")
private Integer fdDownloadNum;
/**
* 失败次数
*/
@ExcelAttribute(name = "失败次数")
@ExcelProperty("失败次数")
@Schema(description = "失败次数")
private Integer fdFailNum;
/**
* 发放次数
*/
@ExcelAttribute(name = "发放次数")
@ExcelProperty("发放次数")
@Schema(description = "发放次数")
private Integer fdGrantNum;
@ExcelAttribute(name = "收款账户短信通知手机号码")
@ExcelProperty("收款账户短信通知手机号码")
@Schema(description = "收款账户短信通知手机号码")
private String fdEmpPhone;
@ExcelAttribute(name = "批次号", maxLength = 36)
@Length(max = 36, message = "批次号不能超过36个字符")
@ExcelProperty("批次号")
@Schema(description = "批次号")
private String fdWxNo;
@ExcelAttribute(name = "MD码", maxLength = 100)
@Length(max = 100, message = "MD码不能超过100个字符")
@ExcelProperty("MD码")
@Schema(description = "MD码")
private String fdMdCode;
@ExcelAttribute(name = "工资明细ID", maxLength = 36)
@Length(max = 36, message = "工资明细ID不能超过36个字符")
@ExcelProperty("工资明细ID")
@Schema(description = "工资明细ID,用来同步中信银行状态")
private String fdSalaryId;
}
/*
* 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.ekp.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 io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import org.hibernate.validator.constraints.Length;
import javax.validation.constraints.NotBlank;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.Date;
import java.util.List;
/**
* 发放日志(银企付款任务)
*
* @author hgw
* @date 2024-11-15 17:12:14
*/
@Data
@TableName("ekp_bank_grant_log")
@Schema(description = "发放日志(银企付款任务)")
public class EkpBankGrantLog {
/**
* 主键
*/
@TableId(type = IdType.ASSIGN_ID)
@ExcelProperty("主键")
@Schema(description = "主键")
private String fdId;
/**
* 关联银企付款表主键
*/
@ExcelAttribute(name = "关联银企付款表主键", isNotEmpty = true, errorInfo = "关联银企付款表主键不能为空", maxLength = 36)
@NotBlank(message = "关联银企付款表主键不能为空")
@Length(max = 36, message = "关联银企付款表主键不能超过36个字符")
@ExcelProperty("关联银企付款表主键")
@Schema(description = "关联银企付款表主键")
private String fdParentId;
/**
* 代发批次号
*/
@ExcelAttribute(name = "代发批次号", maxLength = 20)
@Length(max = 20, message = "代发批次号不能超过20个字符")
@ExcelProperty("代发批次号")
@Schema(description = "代发批次号")
private String fdBatchNumber;
/**
* 批量包名称
*/
@ExcelAttribute(name = "批量包名称", maxLength = 50)
@Length(max = 50, message = "批量包名称不能超过50个字符")
@ExcelProperty("批量包名称")
@Schema(description = "批量包名称")
private String fdBatchPackage;
/**
* 付款账号
*/
@ExcelAttribute(name = "付款账号", maxLength = 50)
@Length(max = 50, message = "付款账号不能超过50个字符")
@ExcelProperty("付款账号")
@Schema(description = "付款账号")
private String fdPaymentAccount;
/**
* 付款人名称
*/
@ExcelAttribute(name = "付款人名称", maxLength = 50)
@Length(max = 50, message = "付款人名称不能超过50个字符")
@ExcelProperty("付款人名称")
@Schema(description = "付款人名称")
private String fdDrawee;
/**
* 币种
*/
@ExcelAttribute(name = "币种", maxLength = 10)
@Length(max = 10, message = "币种不能超过10个字符")
@ExcelProperty("币种")
@Schema(description = "币种")
private String fdCurrency;
/**
* 业务类型:代发工资等
*/
@ExcelAttribute(name = "业务类型:代发工资等", maxLength = 20)
@Length(max = 20, message = "业务类型:代发工资等不能超过20个字符")
@ExcelProperty("业务类型:代发工资等")
@Schema(description = "业务类型:代发工资等")
private String fdBusinessType;
/**
* 提交时间
*/
@ExcelAttribute(name = "提交时间", isDate = true)
@ExcelProperty("提交时间")
@Schema(description = "提交时间")
private LocalDateTime fdSubmitTime;
/**
* 交易时间
*/
@ExcelAttribute(name = "交易时间", isDate = true)
@ExcelProperty("交易时间")
@Schema(description = "交易时间")
private Date fdTransactionTime;
/**
* 成功总金额
*/
@ExcelAttribute(name = "成功总金额")
@ExcelProperty("成功总金额")
@Schema(description = "成功总金额")
private BigDecimal fdSuccessFee;
/**
* 失败总金额
*/
@ExcelAttribute(name = "失败总金额")
@ExcelProperty("失败总金额")
@Schema(description = "失败总金额")
private BigDecimal fdFailFee;
/**
* 总金额
*/
@ExcelAttribute(name = "总金额")
@ExcelProperty("总金额")
@Schema(description = "总金额")
private BigDecimal fdSumFee;
/**
* 总笔数
*/
@ExcelAttribute(name = "总笔数")
@ExcelProperty("总笔数")
@Schema(description = "总笔数")
private Integer fdTransactionTotal;
/**
* 成功总笔数
*/
@ExcelAttribute(name = "成功总笔数")
@ExcelProperty("成功总笔数")
@Schema(description = "成功总笔数")
private Integer fdTransactionSuccessTotal;
/**
* 失败总笔数
*/
@ExcelAttribute(name = "失败总笔数")
@ExcelProperty("失败总笔数")
@Schema(description = "失败总笔数")
private Integer fdTransactionFailTotal;
}
/*
* 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.ekp.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;
import java.math.BigDecimal;
/**
* 发放日志明细(银企付款任务)
*
* @author hgw
* @date 2024-11-15 17:12:14
*/
@Data
@TableName("ekp_bank_grant_log_detail")
@Schema(description = "发放日志明细(银企付款任务)")
public class EkpBankGrantLogDetail {
/**
* fdId
*/
@TableId(type = IdType.ASSIGN_ID)
@ExcelProperty("fdId")
@Schema(description = "fdId")
private String fdId;
/**
* 发放日志关联主键
*/
@ExcelAttribute(name = "发放日志关联主键", isNotEmpty = true, errorInfo = "发放日志关联主键不能为空", maxLength = 36)
@NotBlank(message = "发放日志关联主键不能为空")
@Length(max = 36, message = "发放日志关联主键不能超过36个字符")
@ExcelProperty("发放日志关联主键")
@Schema(description = "发放日志关联主键")
private String fdParentId;
/**
* 收款人名称
*/
@ExcelAttribute(name = "收款人名称", maxLength = 50)
@Length(max = 50, message = "收款人名称不能超过50个字符")
@ExcelProperty("收款人名称")
@Schema(description = "收款人名称")
private String fdPayee;
/**
* 收款账号
*/
@ExcelAttribute(name = "收款账号", maxLength = 50)
@Length(max = 50, message = "收款账号不能超过50个字符")
@ExcelProperty("收款账号")
@Schema(description = "收款账号")
private String fdPayeeAccount;
/**
* 金额
*/
@ExcelAttribute(name = "金额")
@ExcelProperty("金额")
@Schema(description = "金额")
private BigDecimal fdMoney;
/**
* 收款银行
*/
@ExcelAttribute(name = "收款银行", maxLength = 100)
@Length(max = 100, message = "收款银行不能超过100个字符")
@ExcelProperty("收款银行")
@Schema(description = "收款银行")
private String fdRecipientBank;
/**
* 汇款用途:工资等
*/
@ExcelAttribute(name = "汇款用途:工资等", maxLength = 10)
@Length(max = 10, message = "汇款用途:工资等不能超过10个字符")
@ExcelProperty("汇款用途:工资等")
@Schema(description = "汇款用途:工资等")
private String fdRemittancePurpose;
/**
* 备注
*/
@ExcelAttribute(name = "备注", maxLength = 500)
@Length(max = 500, message = "备注不能超过500个字符")
@ExcelProperty("备注")
@Schema(description = "备注")
private String fdRemark;
/**
* 指令状态
*/
@ExcelAttribute(name = "指令状态", maxLength = 20)
@Length(max = 20, message = "指令状态不能超过20个字符")
@ExcelProperty("指令状态")
@Schema(description = "指令状态")
private String fdCommandStatus;
}
/*
* 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.ekp.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-11-27 16:50:15
*/
@Data
@TableName("ekp_bank_icbc_log")
@Schema(description = "工行返回的数据记录表")
public class EkpBankIcbcLog {
/**
* 主键
*/
@TableId(type = IdType.ASSIGN_ID)
@ExcelProperty("主键")
@Schema(description = "主键")
private String fdId;
/**
* 批次号
*/
@ExcelAttribute(name = "批次号", maxLength = 50)
@Length(max = 50, message = "批次号不能超过50个字符")
@ExcelProperty("批次号")
@Schema(description = "批次号")
private String fdWxNo;
/**
* 关联ID
*/
@ExcelAttribute(name = "关联ID", maxLength = 36)
@Length(max = 36, message = "关联ID不能超过36个字符")
@ExcelProperty("关联ID")
@Schema(description = "关联ID")
private String fdParentId;
/**
* 类型
*/
@ExcelAttribute(name = "类型", maxLength = 1)
@Length(max = 36, message = "类型不能超过1个字符")
@ExcelProperty("类型")
@Schema(description = "类型:1:提交;2:获取结果")
private Integer fdType;
/**
* 日志
*/
@ExcelAttribute(name = "日志")
@ExcelProperty("日志")
@Schema(description = "日志")
private String fdLog;
/**
* 创建时间
*/
@ExcelAttribute(name = "创建时间", isDate = true)
@ExcelProperty("创建时间")
@Schema(description = "创建时间")
private LocalDateTime fdCreateTime;
}
/*
* 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.ekp.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 io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import org.hibernate.validator.constraints.Length;
import javax.validation.constraints.NotBlank;
import java.math.BigDecimal;
import java.time.LocalDateTime;
/**
* 银企付款任务主表信息
*
* @author hgw
* @date 2024-11-15 17:12:14
*/
@Data
@TableName("ekp_bank_pay_task")
@Schema(description = "银企付款任务主表信息")
public class EkpBankPayTask {
/**
* 主键ID
*/
@TableId(type = IdType.ASSIGN_ID)
@ExcelProperty("主键ID")
@Schema(description = "主键ID")
private String fdId;
/**
* 客户名称
*/
@ExcelAttribute(name = "客户名称", maxLength = 100)
@Length(max = 100, message = "客户名称不能超过100个字符")
@ExcelProperty("客户名称")
@Schema(description = "客户名称")
private String fdCustomerName;
/**
* 项目名称
*/
@ExcelAttribute(name = "项目名称", maxLength = 100)
@Length(max = 100, message = "项目名称不能超过100个字符")
@ExcelProperty("项目名称")
@Schema(description = "项目名称")
private String fdProjectName;
/**
* 项目编码
*/
@ExcelAttribute(name = "项目编码", maxLength = 20)
@Length(max = 20, message = "项目编码不能超过20个字符")
@ExcelProperty("项目编码")
@Schema(description = "项目编码")
private String fdProjectCode;
/**
* 省
*/
@ExcelAttribute(name = "省", maxLength = 100)
@Length(max = 100, message = "省不能超过100个字符")
@ExcelProperty("省")
@Schema(description = "省")
private String fdProvince;
/**
* 市
*/
@ExcelAttribute(name = "市", maxLength = 100)
@Length(max = 100, message = "市不能超过100个字符")
@ExcelProperty("市")
@Schema(description = "市")
private String fdCity;
/**
* 县/区
*/
@ExcelAttribute(name = "县/区", maxLength = 100)
@Length(max = 100, message = "县/区不能超过100个字符")
@ExcelProperty("县/区")
@Schema(description = "县/区")
private String fdTown;
/**
* 金额
*/
@ExcelAttribute(name = "金额")
@ExcelProperty("金额")
@Schema(description = "金额")
private BigDecimal fdMoney;
/**
* 支付类别:工资、社保
*/
@ExcelAttribute(name = "支付类别:工资、社保", maxLength = 30)
@Length(max = 30, message = "支付类别:工资、社保不能超过30个字符")
@ExcelProperty("支付类别:工资、社保")
@Schema(description = "支付类别:工资、社保")
private String fdPayType;
/**
* 付款银行名称
*/
@ExcelAttribute(name = "付款银行名称", maxLength = 100)
@Length(max = 100, message = "付款银行名称不能超过100个字符")
@ExcelProperty("付款银行名称")
@Schema(description = "付款银行名称")
private String fdBankName;
/**
* 付款银行开户行
*/
@ExcelAttribute(name = "付款银行开户行", maxLength = 100)
@Length(max = 100, message = "付款银行开户行不能超过100个字符")
@ExcelProperty("付款银行开户行")
@Schema(description = "付款银行开户行")
private String fdBankNo;
/**
* 付款银行账户
*/
@ExcelAttribute(name = "付款银行账户", maxLength = 30)
@Length(max = 30, message = "付款银行账户不能超过30个字符")
@ExcelProperty("付款银行账户")
@Schema(description = "付款银行账户")
private String fdBankAccount;
/**
* 前端客服
*/
@ExcelAttribute(name = "前端客服", maxLength = 30)
@Length(max = 30, message = "前端客服不能超过30个字符")
@ExcelProperty("前端客服")
@Schema(description = "前端客服")
private String fdCustomerServer;
/**
* 创建者
*/
@ExcelAttribute(name = "创建者", maxLength = 30)
@Length(max = 30, message = "创建者不能超过30个字符")
@ExcelProperty("创建者")
@Schema(description = "创建者")
private String fdCreater;
/**
* 发放状态:待发放、发放中、已发放
*/
@ExcelAttribute(name = "发放状态:待发放、发放中、已发放", maxLength = 20)
@Length(max = 20, message = "发放状态:待发放、发放中、已发放不能超过20个字符")
@ExcelProperty("发放状态:待发放、发放中、已发放")
@Schema(description = "发放状态:待发放、发放中、已发放")
private String fdGrantStatus;
/**
* 提交出纳
*/
@ExcelAttribute(name = "提交出纳", maxLength = 20)
@Length(max = 20, message = "提交出纳不能超过20个字符")
@ExcelProperty("提交出纳")
@Schema(description = "提交出纳")
private String fdSubmitCashier;
/**
* 创建时间
*/
@ExcelAttribute(name = "创建时间", isDate = true)
@ExcelProperty("创建时间")
@Schema(description = "创建时间")
private LocalDateTime fdCreateTime;
/**
* 结算单号
*/
@ExcelAttribute(name = "结算单号", isNotEmpty = true, errorInfo = "结算单号不能为空", maxLength = 20)
@NotBlank(message = "结算单号不能为空")
@Length(max = 20, message = "结算单号不能超过20个字符")
@ExcelProperty("结算单号")
@Schema(description = "结算单号")
private String fdSettlementNo;
/**
* 结算单ID 页面跳转使用
*/
@ExcelAttribute(name = "结算单ID 页面跳转使用", isNotEmpty = true, errorInfo = "结算单ID 页面跳转使用不能为空", maxLength = 36)
@NotBlank(message = "结算单ID 页面跳转使用不能为空")
@Length(max = 36, message = "结算单ID 页面跳转使用不能超过36个字符")
@ExcelProperty("结算单ID 页面跳转使用")
@Schema(description = "结算单ID 页面跳转使用")
private String fdSettlementId;
/**
* 发放失败处理状态:待发放、发放中、已处理、转手工
*/
@ExcelAttribute(name = "发放失败处理状态:待发放、发放中、已处理、转手工", maxLength = 10)
@Length(max = 10, message = "发放失败处理状态:待发放、发放中、已处理、转手工不能超过10个字符")
@ExcelProperty("发放失败处理状态:待发放、发放中、已处理、转手工")
@Schema(description = "发放失败处理状态:待发放、发放中、已处理、转手工")
private String fdFailHandleStatus;
/**
* 附件ID
*/
@ExcelAttribute(name = "附件ID", maxLength = 36)
@Length(max = 36, message = "附件ID不能超过36个字符")
@ExcelProperty("附件ID")
@Schema(description = "附件ID")
private String fdAttaId;
/**
* 附件名称
*/
@ExcelAttribute(name = "附件名称", maxLength = 200)
@Length(max = 200, message = "附件名称不能超过200个字符")
@ExcelProperty("附件名称")
@Schema(description = "附件名称")
private String fdAttaName;
/**
* 附件资源路径
*/
@ExcelAttribute(name = "附件资源路径", maxLength = 200)
@Length(max = 200, message = "附件资源路径不能超过200个字符")
@ExcelProperty("附件资源路径")
@Schema(description = "附件资源路径")
private String fdAttaSrc;
/**
* 附件下载次数
*/
@ExcelAttribute(name = "附件下载次数")
@ExcelProperty("附件下载次数")
@Schema(description = "附件下载次数")
private Integer fdDownloadNum;
/**
* 失败次数
*/
@ExcelAttribute(name = "失败次数")
@ExcelProperty("失败次数")
@Schema(description = "失败次数")
private Integer fdFailNum;
/**
* 发放次数
*/
@ExcelAttribute(name = "发放次数")
@ExcelProperty("发放次数")
@Schema(description = "发放次数")
private Integer fdGrantNum;
@ExcelAttribute(name = "批次号", maxLength = 36)
@Length(max = 36, message = "批次号不能超过36个字符")
@ExcelProperty("批次号")
@Schema(description = "批次号")
private String fdWxNo;
@ExcelAttribute(name = "MD码", maxLength = 100)
@Length(max = 100, message = "MD码不能超过100个字符")
@ExcelProperty("MD码")
@Schema(description = "MD码")
private String fdMdCode;
@ExcelAttribute(name = "失败原因", maxLength = 500)
@Length(max = 500, message = "失败原因不能超过500个字符")
@ExcelProperty("失败原因")
@Schema(description = "失败原因")
private String fdErrorMsg;
// 明细条数
@TableField(exist = false)
private String num;
}
package com.yifu.cloud.plus.v1.ekp.vo;
import lombok.Data;
import java.io.Serializable;
/**
* @Author hgw
* @Date 2024-11-18 10:23:18
* @Description EKP银企付款下载文件Vo
* @Version 1.0
*/
@Data
public class EkpBankAttaReturnVo implements Serializable {
private String fdAttaName;
private String fdAttaUrl;
}
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银企付款下载文件Vo
* @Version 1.0
*/
@Data
public class EkpBankExcelVo implements Serializable {
// 日期 明细标志 顺序号 报销号 单据张数 付款账号开户行 付款账号/卡号 付款账号名称/卡名称 收款账号开户行
// 收款地区 收款银行人行行号 汇款方式 收款账号 收款账号名称 金额 汇款用途 备注信息 收款账户短信通知手机号码
@ExcelProperty("日期")
private String nowDate;
@ExcelProperty("明细标志")
private String detailTag;
@ExcelProperty("顺序号")
private String fdSerialNumber;
@ExcelProperty("报销号")
private String baoXiaoNumber;
@ExcelProperty("单据张数")
private String danJuNumber;
@ExcelProperty("付款账号开户行")
private String fdBankNo;
@ExcelProperty("付款账号/卡号")
private String fdBankAccount;
@ExcelProperty("付款账号名称/卡名称")
private String fdBankName;
// 收款银行
@ExcelProperty("收款账号开户行")
private String fdRecipientBank;
@ExcelProperty("收款地区")
private String fdRecipientAdress;
@ExcelProperty("收款银行人行行号")
private String fdRecipientBankCode;
@ExcelProperty("汇款方式")
private String payType;
@ExcelProperty("收款账号")
private String fdPayeeAccount;
@ExcelProperty("收款账号名称")
private String fdPayeeName;
@ExcelProperty("金额")
private String fdMoney;
@ExcelProperty("汇款用途")
private String fdRemittancePurpose;
@ExcelProperty("备注信息")
private String fdCoverRemark;
@ExcelProperty("收款账户短信通知手机号码")
private String fdEmpPhone;
}
package com.yifu.cloud.plus.v1.ekp.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.io.Serializable;
/**
* @Author hgw
* @Date 2024-11-25 10:32:26
* @Description EKP银企付款获取待查询结果的VO
* @Version 1.0
*/
@Data
public class EkpBankResultVo implements Serializable {
private String fdId;
private String fdParentId;
private String fdWxNo;
private String fdSalaryId;
@Schema(description = "付款银行名称")
private String fdBankName;
@Schema(description = "付款银行开户行")
private String fdBankNo;
@Schema(description = "付款银行账户")
private String fdBankAccount;
@Schema(description = "收款人名称")
private String fdPayeeName;
@Schema(description = "收款银行")
private String fdRecipientBank;
private Integer fdGrantNum;
private Integer fdFailNum;
private Integer num;
}
...@@ -99,6 +99,7 @@ ...@@ -99,6 +99,7 @@
<artifactId>yifu-common-ekp</artifactId> <artifactId>yifu-common-ekp</artifactId>
<version>1.0.0</version> <version>1.0.0</version>
</dependency> </dependency>
</dependencies> </dependencies>
<build> <build>
...@@ -107,6 +108,17 @@ ...@@ -107,6 +108,17 @@
<groupId>org.springframework.boot</groupId> <groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId> <artifactId>spring-boot-maven-plugin</artifactId>
</plugin> </plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<configuration>
<encoding>UTF-8</encoding>
<nonFilteredFileExtensions>
<nonFilteredFileExtension>xls</nonFilteredFileExtension>
<nonFilteredFileExtension>xlsx</nonFilteredFileExtension>
</nonFilteredFileExtensions>
</configuration>
</plugin>
<plugin> <plugin>
<groupId>com.spotify</groupId> <groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId> <artifactId>docker-maven-plugin</artifactId>
......
package com.yifu.cloud.plus.v1.ekp.controller; package com.yifu.cloud.plus.v1.ekp.controller;
import com.icbc.api.response.JftApiPayrollQueryDetailResponseV1;
import com.yifu.cloud.plus.v1.ekp.service.IcbcTransactionFlowIssueService; import com.yifu.cloud.plus.v1.ekp.service.IcbcTransactionFlowIssueService;
import com.yifu.cloud.plus.v1.ekp.vo.EkpBankAttaReturnVo;
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.R; 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.common.security.annotation.Inner;
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;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.*;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/** /**
* 聚富通代发工资相关 * 聚富通代发工资相关
...@@ -19,7 +24,7 @@ import javax.servlet.http.HttpServletRequest; ...@@ -19,7 +24,7 @@ import javax.servlet.http.HttpServletRequest;
*/ */
@RestController @RestController
@RequiredArgsConstructor @RequiredArgsConstructor
@RequestMapping("/icbcIssue" ) @RequestMapping("/icbcIssue")
@Tag(name = "聚富通代发工资相关") @Tag(name = "聚富通代发工资相关")
public class IcbcTransactionFlowIssueController { public class IcbcTransactionFlowIssueController {
...@@ -34,8 +39,17 @@ public class IcbcTransactionFlowIssueController { ...@@ -34,8 +39,17 @@ public class IcbcTransactionFlowIssueController {
*/ */
@Operation(summary = "聚富通代发工资确认提交接口", description = "聚富通代发工资确认提交接口") @Operation(summary = "聚富通代发工资确认提交接口", description = "聚富通代发工资确认提交接口")
@PostMapping("/submit") @PostMapping("/submit")
public R submitIcbcTransactionFlow() { public R<String> submitIcbcTransactionFlow(@RequestParam(required = false) String totalAmt
return icbcTransactionFlowIssueService.submitIcbcTransactionFlow(); , @RequestParam(required = false) String totalCount, @RequestParam(required = false) String wxNo
, @RequestParam(required = false) String url, @RequestParam(required = false) String mdCode) {
if (Common.isEmpty(totalAmt) || !CommonConstants.ONE_STRING.equals(totalAmt)) {
totalAmt = "1";
totalCount = "1";
wxNo = "WX202411201649110001732092551023";
url = "020101190_WX202411201649110001732092551023_0_20241120.xls";
mdCode = "49003789330801136756328772184671605624443424719041259624457722383503273821290";
}
return icbcTransactionFlowIssueService.submitIcbcTransactionFlow(totalAmt, totalCount, wxNo, url, mdCode);
} }
/** /**
...@@ -47,8 +61,9 @@ public class IcbcTransactionFlowIssueController { ...@@ -47,8 +61,9 @@ public class IcbcTransactionFlowIssueController {
*/ */
@Operation(summary = "代发工资明细查询", description = "代发工资明细查询") @Operation(summary = "代发工资明细查询", description = "代发工资明细查询")
@PostMapping("/page") @PostMapping("/page")
public R selectIcbcTransactionFlowInfo() { public JftApiPayrollQueryDetailResponseV1 selectIcbcTransactionFlowInfo(@RequestParam String wxNo
return icbcTransactionFlowIssueService.selectIcbcTransactionFlowInfo(); , @RequestParam String startId, @RequestParam String endId) {
return icbcTransactionFlowIssueService.selectIcbcTransactionFlowInfo(wxNo, startId, endId);
} }
/** /**
...@@ -71,9 +86,54 @@ public class IcbcTransactionFlowIssueController { ...@@ -71,9 +86,54 @@ public class IcbcTransactionFlowIssueController {
* @param * @param
* @return * @return
*/ */
@Operation(summary = "行名行号查询接口", description = "行名行号查询接口") @Operation(summary = "行名行号查询接口---测试接口,实际接口用代发模块的查询接口", description = "行名行号查询接口")
@PostMapping("/querybankinfo") @PostMapping("/querybankinfo")
public R querybankinfo() { public R querybankinfo() {
return icbcTransactionFlowIssueService.querybankinfo(); return icbcTransactionFlowIssueService.querybankinfo();
} }
/**
* @param fdId 主键ID
* @param type 类型 1:主表附件;2:明细表附件
* @Description: 下载代发任务附件
* @Author: hgw
* @Date: 2024/11/15 14:51
* @return: com.yifu.cloud.plus.v1.yifu.common.core.util.R<com.yifu.cloud.plus.v1.ekp.entity.EkpBankAtta>
**/
@Operation(summary = "下载代发任务附件--EKP调用接口", description = "下载代发任务附件--EKP调用接口")
@SysLog("下载代发任务附件--EKP调用接口")
@GetMapping("/getIssueFileByFdId")
public R<EkpBankAttaReturnVo> getIssueFileByFdId(@RequestParam String fdId, @RequestParam String type) {
return icbcTransactionFlowIssueService.getIssueFileByFdId(fdId, type);
}
/**
* @param fdId 主键ID
* @param type 类型 1:主表附件;2:明细表附件
* @Description: 发放
* @Author: hgw
* @Date: 2024-11-22 11:32:21
* @return: com.yifu.cloud.plus.v1.yifu.common.core.util.R<com.yifu.cloud.plus.v1.ekp.entity.EkpBankAtta>
**/
@Operation(summary = "发放银企付款--EKP调用接口", description = "发放银企付款--EKP调用接口")
@SysLog("发放银企付款--EKP调用接口")
@GetMapping("/submitBankTask")
public R<String> submitBankTask(@RequestParam String fdId, @RequestParam String type, @RequestParam String submitUser) {
return icbcTransactionFlowIssueService.submitBankTask(fdId, type, submitUser);
}
@Operation(description = "下载文件测试")
@PostMapping("/exportAll")
@SysLog("下载文件测试")
public void exportAll(HttpServletResponse response) {
icbcTransactionFlowIssueService.exportAll(response);
}
@Operation(summary = "每小时获取银企付款结果", description = "每小时获取银企付款结果")
@Inner
@PostMapping("/inner/doGetEkpBankStatus")
public R<String> doGetEkpBankStatus() {
return icbcTransactionFlowIssueService.doGetEkpBankStatus();
}
} }
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.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.R; import com.yifu.cloud.plus.v1.yifu.common.core.util.R;
import com.yifu.cloud.plus.v1.yifu.common.security.annotation.Inner; import com.yifu.cloud.plus.v1.yifu.common.security.annotation.Inner;
import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Operation;
...@@ -10,6 +13,7 @@ import lombok.RequiredArgsConstructor; ...@@ -10,6 +13,7 @@ import lombok.RequiredArgsConstructor;
import lombok.extern.log4j.Log4j2; import lombok.extern.log4j.Log4j2;
import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
/** /**
...@@ -99,7 +103,10 @@ public class IcbcTransactionFlowQueryController { ...@@ -99,7 +103,10 @@ public class IcbcTransactionFlowQueryController {
*/ */
@Operation(summary = "行名行号查询接口", description = "行名行号查询接口") @Operation(summary = "行名行号查询接口", description = "行名行号查询接口")
@PostMapping("/querybankinfo") @PostMapping("/querybankinfo")
public R querybankinfo() { public R<EkpBankCodeSet> querybankinfo(@RequestParam(required = false) String cardNo) {
return icbcTransactionFlowQueryService.querybankinfo(); if (Common.isEmpty(cardNo)) {
cardNo = "6217752510002149161";
}
return icbcTransactionFlowQueryService.querybankinfo(cardNo);
} }
} }
package com.yifu.cloud.plus.v1.ekp.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.yifu.cloud.plus.v1.ekp.entity.EkpBankAtta;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
/**
* 社保明细表
*
* @author huyc
* @date 2024-02-29 11:21:56
*/
@Mapper
public interface EkpBankAttaMapper extends BaseMapper<EkpBankAtta> {
/**
* @param fdId
* @param type
* @Description: 获取最新的附件
* @Author: hgw
* @Date: 2024/11/15 15:20
* @return: com.yifu.cloud.plus.v1.ekp.vo.EkpDeptInfoVo
**/
EkpBankAtta getEkpBankAttaLimit(@Param("fdId") String fdId, @Param("type") String 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.ekp.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.yifu.cloud.plus.v1.ekp.entity.EkpBankCodeSet;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
/**
* 银企付款查询卡号所属行号记录表
*
* @author hgw
* @date 2024-11-18 17:07:24
*/
@Mapper
public interface EkpBankCodeSetMapper extends BaseMapper<EkpBankCodeSet> {
EkpBankCodeSet getCodeSetByCardNo(@Param("cardNo") String cardNo);
}
/*
* 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.ekp.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.yifu.cloud.plus.v1.ekp.entity.EkpBankGrantDetail;
import com.yifu.cloud.plus.v1.ekp.vo.EkpBankExcelVo;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* 发放结果明细(银企付款任务)
*
* @author hgw
* @date 2024-11-15 17:12:14
*/
@Mapper
public interface EkpBankGrantDetailMapper extends BaseMapper<EkpBankGrantDetail> {
// 查询待发放条数
int getCountByIdAndMain(@Param("fdParentId") String fdParentId);
// 查询主表下的全部数据
List<EkpBankExcelVo> getEkpBankExcelVoByIdAndMain(@Param("fdParentId") String fdParentId);
// 查询详情里的1条数据
List<EkpBankExcelVo> getEkpBankExcelVoByIdAndDetail(@Param("fdId") String fdId);
// 编号查重
String getWxNoByWxNo(@Param("wxNo") String wxNo);
// 主表发放时,更新明细表的发放时间与状态
void updateStatusByGrant(@Param("fdParentId") String fdParentId);
// 主表拒绝授权时,批量更新明细表为发放失败,原因为拒绝授权
void updateStatusByGrantFail(@Param("fdParentId") String fdParentId);
// 发放失败,批量更新中信银行交易流水表fd_3b148bc0c28e48为失败,根据 工资明细fdId:fd_3b1fe00b0f5dde
void updateZhongXinStatus(@Param("salaryId") String salaryId, @Param("detailId") String detailId);
// 发放失败,批量更新中信银行交易流水Model表fd_3b148bc0c28e48为失败,根据 工资明细fdId:fd_3b1fe00b0f5dde
void updateZhongXinMainStatus(@Param("salaryId") String salaryId, @Param("detailId") String detailId);
// 发放失败,批量更新中信银行交易流水表fd_3b148bc0c28e48为失败,根据 工资明细fdId:fd_3b1fe00b0f5dde
void updateZhongXinStatusAndBankInfo(@Param("salaryIdList") List<String> salaryIdList);
// 发放失败,批量更新中信银行交易流水Model表fd_3b148bc0c28e48为失败,根据 工资明细fdId:fd_3b1fe00b0f5dde
void updateZhongXinMainStatusAndBankInfo(@Param("salaryIdList") List<String> salaryIdList);
// 获取明细表ID来更新状态
List<EkpBankGrantDetail> getListByParentId(@Param("fdParentId") String fdParentId);
}
/*
* 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.ekp.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.yifu.cloud.plus.v1.ekp.entity.EkpBankGrantLogDetail;
import org.apache.ibatis.annotations.Mapper;
/**
* 发放日志明细(银企付款任务)
*
* @author hgw
* @date 2024-11-15 17:12:14
*/
@Mapper
public interface EkpBankGrantLogDetailMapper extends BaseMapper<EkpBankGrantLogDetail> {
}
/*
* 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.ekp.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.yifu.cloud.plus.v1.ekp.entity.EkpBankGrantLog;
import org.apache.ibatis.annotations.Mapper;
/**
* 发放日志(银企付款任务)
*
* @author hgw
* @date 2024-11-15 17:12:14
*/
@Mapper
public interface EkpBankGrantLogMapper extends BaseMapper<EkpBankGrantLog> {
}
/*
* 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.ekp.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.yifu.cloud.plus.v1.ekp.entity.EkpBankIcbcLog;
import org.apache.ibatis.annotations.Mapper;
/**
* 工行返回的数据记录表
*
* @author hgw
* @date 2024-11-27 16:50:15
*/
@Mapper
public interface EkpBankIcbcLogMapper extends BaseMapper<EkpBankIcbcLog> {
}
/*
* 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.ekp.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.yifu.cloud.plus.v1.ekp.entity.EkpBankPayTask;
import com.yifu.cloud.plus.v1.ekp.vo.EkpBankResultVo;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
/**
* 银企付款任务主表信息
*
* @author hgw
* @date 2024-11-15 17:12:14
*/
@Mapper
public interface EkpBankPayTaskMapper extends BaseMapper<EkpBankPayTask> {
// 获取发放中的主表,查询结果
List<EkpBankResultVo> getEkpBankMainByNeedResultMain();
// 获取发放中的明细表,查询结果
List<EkpBankResultVo> getEkpBankMainByNeedResultDetail();
}
/*
* 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.ekp.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.yifu.cloud.plus.v1.ekp.entity.EkpBankAtta;
/**
* 银企付款下载关联表
*
* @author hgw
* @date 2024-11-15 17:12:14
*/
public interface EkpBankAttaService extends IService<EkpBankAtta> {
}
/*
* 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.ekp.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.yifu.cloud.plus.v1.ekp.entity.EkpBankCodeSet;
/**
* 银企付款查询卡号所属行号记录表
*
* @author hgw
* @date 2024-11-18 17:07:24
*/
public interface EkpBankCodeSetService extends IService<EkpBankCodeSet> {
EkpBankCodeSet getCodeSetByCardNo(String cardNo);
}
/*
* 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.ekp.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.yifu.cloud.plus.v1.ekp.entity.EkpBankGrantDetail;
import com.yifu.cloud.plus.v1.ekp.vo.EkpBankExcelVo;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* 发放结果明细(银企付款任务)
*
* @author hgw
* @date 2024-11-15 17:12:14
*/
public interface EkpBankGrantDetailService extends IService<EkpBankGrantDetail> {
// 查询待发条数
int getCountByIdAndMain(String fdParentId);
// 查询下载的待发 明细数据
List<EkpBankExcelVo> getEkpBankExcelVoByIdAndMain(String fdParentId);
// 查询下载的待发 明细数据
List<EkpBankExcelVo> getEkpBankExcelVoByIdAndDetail(String fdId);
// 查询编码是否重复
String getWxNoByWxNo(String wxNo);
// 主表发放时,更新明细表的发放时间与状态
void updateStatusByGrant(String fdParentId);
// 发放失败,批量更新中信银行交易流水表fd_3b148bc0c28e48为失败,根据 工资明细fdId:fd_3b1fe00b0f5dde
void updateZhongXinStatus(String salaryId, String detailId);
void updateZhongXinMainStatus(String salaryId, String detailId);
// 明细再次-发放失败,批量更新中信银行交易流水表fd_3b148bc0c28e48为失败,根据 工资明细fdId:fd_3b1fe00b0f5dde
void updateZhongXinStatusAndBankInfo(List<String> salaryIdList);
void updateZhongXinMainStatusAndBankInfo(List<String> salaryIdList);
// 主表拒绝授权时,批量更新明细表为发放失败,原因为拒绝授权
void updateStatusByGrantFail(String fdParentId);
// 获取明细表ID来更新状态
List<EkpBankGrantDetail> getListByParentId(String fdParentId);
}
/*
* 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.ekp.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.yifu.cloud.plus.v1.ekp.entity.EkpBankGrantLogDetail;
/**
* 发放日志明细(银企付款任务)
*
* @author hgw
* @date 2024-11-15 17:12:14
*/
public interface EkpBankGrantLogDetailService extends IService<EkpBankGrantLogDetail> {
}
/*
* 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.ekp.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.yifu.cloud.plus.v1.ekp.entity.EkpBankGrantLog;
/**
* 发放日志(银企付款任务)
*
* @author hgw
* @date 2024-11-15 17:12:14
*/
public interface EkpBankGrantLogService extends IService<EkpBankGrantLog> {
}
/*
* 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.ekp.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.yifu.cloud.plus.v1.ekp.entity.EkpBankIcbcLog;
/**
* 工行返回的数据记录表
*
* @author hgw
* @date 2024-11-27 16:50:15
*/
public interface EkpBankIcbcLogService extends IService<EkpBankIcbcLog> {
}
/*
* 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.ekp.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.yifu.cloud.plus.v1.ekp.entity.EkpBankPayTask;
import com.yifu.cloud.plus.v1.ekp.vo.EkpBankResultVo;
import java.util.List;
/**
* 银企付款任务主表信息
*
* @author hgw
* @date 2024-11-15 17:12:14
*/
public interface EkpBankPayTaskService extends IService<EkpBankPayTask> {
/**
* @Description: 获取发放中的主表,查询结果
* @Author: hgw
* @Date: 2024-11-25 10:25:58
* @return: com.yifu.cloud.plus.v1.ekp.entity.EkpBankPayTask
**/
List<EkpBankResultVo> getEkpBankMainByNeedResultMain();
/**
* @Description: 获取发放中的明细表,查询结果
* @Author: hgw
* @Date: 2024/11/25 10:38
* @return: java.util.List<com.yifu.cloud.plus.v1.ekp.vo.EkpBankResultVo>
**/
List<EkpBankResultVo> getEkpBankMainByNeedResultDetail();
}
package com.yifu.cloud.plus.v1.ekp.service; 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.response.JftApiPayrollQueryDetailResponseV1;
import com.yifu.cloud.plus.v1.ekp.entity.EkpBankAtta;
import com.yifu.cloud.plus.v1.ekp.entity.EkpSocialInfo; import com.yifu.cloud.plus.v1.ekp.entity.EkpSocialInfo;
import com.yifu.cloud.plus.v1.ekp.vo.EkpBankAttaReturnVo;
import com.yifu.cloud.plus.v1.yifu.common.core.util.R; import com.yifu.cloud.plus.v1.yifu.common.core.util.R;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/** /**
* 聚富通代发工资相关 * 聚富通代发工资相关
...@@ -20,7 +24,8 @@ public interface IcbcTransactionFlowIssueService extends IService<EkpSocialInfo> ...@@ -20,7 +24,8 @@ public interface IcbcTransactionFlowIssueService extends IService<EkpSocialInfo>
* @Date: 2024-11-12 * @Date: 2024-11-12
* @return: R * @return: R
**/ **/
R submitIcbcTransactionFlow(); R<String> submitIcbcTransactionFlow(String totalAmt, String totalCount, String wxNo
, String url, String mdCode);
/** /**
* @Description: 代发任务批次明细查询 * @Description: 代发任务批次明细查询
...@@ -28,7 +33,7 @@ public interface IcbcTransactionFlowIssueService extends IService<EkpSocialInfo> ...@@ -28,7 +33,7 @@ public interface IcbcTransactionFlowIssueService extends IService<EkpSocialInfo>
* @Date: 2024-11-12 * @Date: 2024-11-12
* @return: R * @return: R
**/ **/
R selectIcbcTransactionFlowInfo(); JftApiPayrollQueryDetailResponseV1 selectIcbcTransactionFlowInfo(String wxNo, String startId, String endId);
R asyncNotice(HttpServletRequest request) throws Exception; R asyncNotice(HttpServletRequest request) throws Exception;
...@@ -40,4 +45,35 @@ public interface IcbcTransactionFlowIssueService extends IService<EkpSocialInfo> ...@@ -40,4 +45,35 @@ public interface IcbcTransactionFlowIssueService extends IService<EkpSocialInfo>
**/ **/
R querybankinfo(); R querybankinfo();
/**
* @param fdId 主键ID
* @param type 类型 1:主表附件;2:明细表附件
* @Description: 下载银企付款
* @Author: hgw
* @Date: 2024/11/18 10:18
* @return: com.yifu.cloud.plus.v1.yifu.common.core.util.R<com.yifu.cloud.plus.v1.ekp.entity.EkpBankAtta>
**/
R<EkpBankAttaReturnVo> getIssueFileByFdId(String fdId, String type);
/**
* @param fdId 主键ID
* @param type 类型 1:主表附件;2:明细表附件
* @Description: 发放银企付款
* @Author: hgw
* @Date: 2024/11/22 11:32
* @return: com.yifu.cloud.plus.v1.yifu.common.core.util.R<java.lang.String>
**/
R<String> submitBankTask(String fdId, String type, String submitUser);
// 验证下载文件的正确性
void exportAll(HttpServletResponse response);
/**
* @Description: 每小时获取银企付款结果
* @Author: hgw
* @Date: 2024/11/22 16:56
* @return: com.yifu.cloud.plus.v1.yifu.common.core.util.R<java.lang.String>
**/
R<String> doGetEkpBankStatus();
} }
...@@ -2,6 +2,8 @@ package com.yifu.cloud.plus.v1.ekp.service; ...@@ -2,6 +2,8 @@ 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.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;
...@@ -27,6 +29,6 @@ public interface IcbcTransactionFlowQueryService extends IService<EkpSocialInfo> ...@@ -27,6 +29,6 @@ public interface IcbcTransactionFlowQueryService extends IService<EkpSocialInfo>
* @Date: 2024-11-12 * @Date: 2024-11-12
* @return: R * @return: R
**/ **/
R querybankinfo(); R<EkpBankCodeSet> querybankinfo(String cardNo);
} }
/*
* 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.ekp.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.yifu.cloud.plus.v1.ekp.entity.EkpBankAtta;
import com.yifu.cloud.plus.v1.ekp.mapper.EkpBankAttaMapper;
import com.yifu.cloud.plus.v1.ekp.service.EkpBankAttaService;
import lombok.extern.log4j.Log4j2;
import org.springframework.stereotype.Service;
/**
* 银企付款下载关联表
*
* @author hgw
* @date 2024-11-15 17:12:14
*/
@Log4j2
@Service
public class EkpBankAttaServiceImpl extends ServiceImpl<EkpBankAttaMapper, EkpBankAtta> implements EkpBankAttaService {
}
/*
* 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.ekp.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.yifu.cloud.plus.v1.ekp.entity.EkpBankCodeSet;
import com.yifu.cloud.plus.v1.ekp.mapper.EkpBankCodeSetMapper;
import com.yifu.cloud.plus.v1.ekp.service.EkpBankCodeSetService;
import lombok.extern.log4j.Log4j2;
import org.springframework.stereotype.Service;
/**
* 银企付款查询卡号所属行号记录表
*
* @author hgw
* @date 2024-11-18 17:07:24
*/
@Log4j2
@Service
public class EkpBankCodeSetServiceImpl extends ServiceImpl<EkpBankCodeSetMapper, EkpBankCodeSet> implements EkpBankCodeSetService {
@Override
public EkpBankCodeSet getCodeSetByCardNo(String cardNo) {
return baseMapper.getCodeSetByCardNo(cardNo);
}
}
/*
* 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.ekp.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
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.service.EkpBankGrantDetailService;
import com.yifu.cloud.plus.v1.ekp.vo.EkpBankExcelVo;
import lombok.extern.log4j.Log4j2;
import org.springframework.stereotype.Service;
import java.util.List;
/**
* 发放结果明细(银企付款任务)
*
* @author hgw
* @date 2024-11-15 17:12:14
*/
@Log4j2
@Service
public class EkpBankGrantDetailServiceImpl extends ServiceImpl<EkpBankGrantDetailMapper, EkpBankGrantDetail> implements EkpBankGrantDetailService {
@Override
public int getCountByIdAndMain(String fdParentId) {
return baseMapper.getCountByIdAndMain(fdParentId);
}
@Override
public List<EkpBankExcelVo> getEkpBankExcelVoByIdAndMain(String fdParentId) {
return baseMapper.getEkpBankExcelVoByIdAndMain(fdParentId);
}
@Override
public List<EkpBankExcelVo> getEkpBankExcelVoByIdAndDetail(String fdId) {
return baseMapper.getEkpBankExcelVoByIdAndDetail(fdId);
}
@Override
public String getWxNoByWxNo(String wxNo) {
return baseMapper.getWxNoByWxNo(wxNo);
}
@Override
public void updateStatusByGrant(String fdParentId) {
baseMapper.updateStatusByGrant(fdParentId);
}
// 发放失败,批量更新中信银行交易流水表fd_3b148bc0c28e48为失败,根据 工资明细fdId:fd_3b1fe00b0f5dde
@Override
public void updateZhongXinStatus(String salaryId, String detailId) {
baseMapper.updateZhongXinStatus(salaryId, detailId);
}
// 发放失败,批量更新中信银行交易流水表fd_3b148bc0c28e48为失败,根据 工资明细fdId:fd_3b1fe00b0f5dde
@Override
public void updateZhongXinMainStatus(String salaryId, String detailId) {
baseMapper.updateZhongXinMainStatus(salaryId, detailId);
}
// 明细再次-发放失败,批量更新中信银行交易流水表fd_3b148bc0c28e48为失败,根据 工资明细fdId:fd_3b1fe00b0f5dde
@Override
public void updateZhongXinStatusAndBankInfo(List<String> salaryIdList) {
baseMapper.updateZhongXinStatusAndBankInfo(salaryIdList);
}
// 明细再次-发放失败,批量更新中信银行交易流水表fd_3b148bc0c28e48为失败,根据 工资明细fdId:fd_3b1fe00b0f5dde
@Override
public void updateZhongXinMainStatusAndBankInfo(List<String> salaryIdList) {
baseMapper.updateZhongXinMainStatusAndBankInfo(salaryIdList);
}
@Override
public void updateStatusByGrantFail(String fdParentId) {
baseMapper.updateStatusByGrantFail(fdParentId);
}
@Override
public List<EkpBankGrantDetail> getListByParentId(String fdParentId) {
return baseMapper.getListByParentId(fdParentId);
}
}
/*
* 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.ekp.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.yifu.cloud.plus.v1.ekp.entity.EkpBankGrantLogDetail;
import com.yifu.cloud.plus.v1.ekp.mapper.EkpBankGrantLogDetailMapper;
import com.yifu.cloud.plus.v1.ekp.service.EkpBankGrantLogDetailService;
import lombok.extern.log4j.Log4j2;
import org.springframework.stereotype.Service;
/**
* 发放日志明细(银企付款任务)
*
* @author hgw
* @date 2024-11-15 17:12:14
*/
@Log4j2
@Service
public class EkpBankGrantLogDetailServiceImpl extends ServiceImpl<EkpBankGrantLogDetailMapper, EkpBankGrantLogDetail> implements EkpBankGrantLogDetailService {
}
/*
* 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.ekp.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.yifu.cloud.plus.v1.ekp.entity.EkpBankGrantLog;
import com.yifu.cloud.plus.v1.ekp.mapper.EkpBankGrantLogMapper;
import com.yifu.cloud.plus.v1.ekp.service.EkpBankGrantLogService;
import lombok.extern.log4j.Log4j2;
import org.springframework.stereotype.Service;
/**
* 发放日志(银企付款任务)
*
* @author hgw
* @date 2024-11-15 17:12:14
*/
@Log4j2
@Service
public class EkpBankGrantLogServiceImpl extends ServiceImpl<EkpBankGrantLogMapper, EkpBankGrantLog> implements EkpBankGrantLogService {
}
/*
* 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.ekp.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.yifu.cloud.plus.v1.ekp.entity.EkpBankIcbcLog;
import com.yifu.cloud.plus.v1.ekp.mapper.EkpBankIcbcLogMapper;
import com.yifu.cloud.plus.v1.ekp.service.EkpBankIcbcLogService;
import lombok.extern.log4j.Log4j2;
import org.springframework.stereotype.Service;
/**
* 工行返回的数据记录表
*
* @author hgw
* @date 2024-11-27 16:50:15
*/
@Log4j2
@Service
public class EkpBankIcbcLogServiceImpl extends ServiceImpl<EkpBankIcbcLogMapper, EkpBankIcbcLog> implements EkpBankIcbcLogService {
}
/*
* 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.ekp.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.yifu.cloud.plus.v1.ekp.entity.EkpBankPayTask;
import com.yifu.cloud.plus.v1.ekp.mapper.EkpBankPayTaskMapper;
import com.yifu.cloud.plus.v1.ekp.service.EkpBankPayTaskService;
import com.yifu.cloud.plus.v1.ekp.vo.EkpBankResultVo;
import lombok.extern.log4j.Log4j2;
import org.springframework.stereotype.Service;
import java.util.List;
/**
* 银企付款任务主表信息
*
* @author hgw
* @date 2024-11-15 17:12:14
*/
@Log4j2
@Service
public class EkpBankPayTaskServiceImpl extends ServiceImpl<EkpBankPayTaskMapper, EkpBankPayTask> implements EkpBankPayTaskService {
/**
* @Description: 获取发放中的主表,查询结果
* @Author: hgw
* @Date: 2024/11/25 10:26
* @return: java.util.List<com.yifu.cloud.plus.v1.ekp.entity.EkpBankPayTask>
**/
@Override
public List<EkpBankResultVo> getEkpBankMainByNeedResultMain() {
return baseMapper.getEkpBankMainByNeedResultMain();
}
/**
* @Description: 获取发放中的明细表,查询结果
* @Author: hgw
* @Date: 2024/11/25 10:39
* @return: java.util.List<com.yifu.cloud.plus.v1.ekp.vo.EkpBankResultVo>
**/
@Override
public List<EkpBankResultVo> getEkpBankMainByNeedResultDetail() {
return baseMapper.getEkpBankMainByNeedResultDetail();
}
}
...@@ -16,10 +16,13 @@ import com.icbc.api.response.MybankEnterpriseAccountQuerybankinfoResponseV1; ...@@ -16,10 +16,13 @@ import com.icbc.api.response.MybankEnterpriseAccountQuerybankinfoResponseV1;
import com.icbc.api.response.MybankEnterpriseTradeQhisdResponseV1; 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.EkpSocialInfo; import com.yifu.cloud.plus.v1.ekp.entity.EkpSocialInfo;
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.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;
...@@ -34,6 +37,7 @@ import org.springframework.util.MultiValueMap; ...@@ -34,6 +37,7 @@ import org.springframework.util.MultiValueMap;
import org.springframework.web.client.RestTemplate; import org.springframework.web.client.RestTemplate;
import java.text.ParseException; import java.text.ParseException;
import java.time.LocalDateTime;
import java.time.LocalTime; import java.time.LocalTime;
import java.time.format.DateTimeFormatter; import java.time.format.DateTimeFormatter;
import java.util.ArrayList; import java.util.ArrayList;
...@@ -58,6 +62,8 @@ public class IcbcTransactionFlowQueryServiceImpl extends ServiceImpl<EkpSocialIn ...@@ -58,6 +62,8 @@ public class IcbcTransactionFlowQueryServiceImpl extends ServiceImpl<EkpSocialIn
@Autowired @Autowired
private EkpEntryProperties ekpEntryProperties; private EkpEntryProperties ekpEntryProperties;
@Autowired
private EkpBankCodeSetService ekpBankCodeSetService;
@Override @Override
public R getIcbcTransactionFlow() { public R getIcbcTransactionFlow() {
...@@ -104,8 +110,8 @@ public class IcbcTransactionFlowQueryServiceImpl extends ServiceImpl<EkpSocialIn ...@@ -104,8 +110,8 @@ public class IcbcTransactionFlowQueryServiceImpl extends ServiceImpl<EkpSocialIn
try { try {
//到账通知交易流水查询 //到账通知交易流水查询
response = client.execute(request); response = client.execute(request);
log.error("到账通知交易流水状态" + response.getStatus()); log.info("到账通知交易流水状态" + response.getStatus());
log.error("到账通知交易流水结果" + response.getErrordesc()); log.info("到账通知交易流水结果" + response.getErrordesc());
if ("00".equals(response.getStatus())) { if ("00".equals(response.getStatus())) {
return R.ok(response.getDatalist()); return R.ok(response.getDatalist());
} else { } else {
...@@ -333,17 +339,19 @@ public class IcbcTransactionFlowQueryServiceImpl extends ServiceImpl<EkpSocialIn ...@@ -333,17 +339,19 @@ public class IcbcTransactionFlowQueryServiceImpl extends ServiceImpl<EkpSocialIn
* @return: R * @return: R
**/ **/
@Override @Override
public R querybankinfo() { public R<EkpBankCodeSet> querybankinfo(String cardNo) {
String privateKey = "4d931f6ad4331158fcc4dea23f0d71393328146e40b5f63f197b9f6ad3732f44"; String privateKey = "4d931f6ad4331158fcc4dea23f0d71393328146e40b5f63f197b9f6ad3732f44";
String APIGW_PUBLIC_KEY = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCMpjaWjngB4E3ATh+G1DVAmQnIpiPEFAEDqRfNGAVvvH35yDetqewKi0l7OEceTMN1C6NPym3zStvSoQayjYV+eIcZERkx31KhtFu9clZKgRTyPjdKMIth/wBtPKjL/5+PYalLdomM4ONthrPgnkN4x4R0+D4+EBpXo8gNiAFsNwIDAQAB"; String APIGW_PUBLIC_KEY = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCMpjaWjngB4E3ATh+G1DVAmQnIpiPEFAEDqRfNGAVvvH35yDetqewKi0l7OEceTMN1C6NPym3zStvSoQayjYV+eIcZERkx31KhtFu9clZKgRTyPjdKMIth/wBtPKjL/5+PYalLdomM4ONthrPgnkN4x4R0+D4+EBpXo8gNiAFsNwIDAQAB";
// DefaultIcbcClient client = new DefaultIcbcClient("11000000000000019038", IcbcConstants.SIGN_TYPE_CA_SM_ICBC,privateKey, APIGW_PUBLIC_KEY); // DefaultIcbcClient client = new DefaultIcbcClient("11000000000000019038", IcbcConstants.SIGN_TYPE_CA_SM_ICBC,privateKey, APIGW_PUBLIC_KEY)
DefaultIcbcClient client = new DefaultIcbcClient("11000000000000019038", IcbcConstants.SIGN_TYPE_CA_SM_ICBC, privateKey, DefaultIcbcClient client = new DefaultIcbcClient("11000000000000019038", IcbcConstants.SIGN_TYPE_CA_SM_ICBC, privateKey,
IcbcConstants.CHARSET_UTF8, IcbcConstants.FORMAT_JSON, null, IcbcConstants.CHARSET_UTF8, IcbcConstants.FORMAT_JSON, null,
null, null, icbcConfigProperties.getCaSm(), null); null, null, icbcConfigProperties.getCaSm(), null);
client.setIcbc_ca(icbcConfigProperties.getCaSmIcbc()); client.setIcbc_ca(icbcConfigProperties.getCaSmIcbc());
// 返回
MybankEnterpriseAccountQuerybankinfoResponseV1 response = null;
try { try {
MybankEnterpriseAccountQuerybankinfoRequestV1.MybankEnterpriseAccountQuerybankinfoRequestBizV1 bizContent = MybankEnterpriseAccountQuerybankinfoRequestV1.MybankEnterpriseAccountQuerybankinfoRequestBizV1 bizContent =
new MybankEnterpriseAccountQuerybankinfoRequestV1.MybankEnterpriseAccountQuerybankinfoRequestBizV1(); new MybankEnterpriseAccountQuerybankinfoRequestV1.MybankEnterpriseAccountQuerybankinfoRequestBizV1();
...@@ -356,21 +364,25 @@ public class IcbcTransactionFlowQueryServiceImpl extends ServiceImpl<EkpSocialIn ...@@ -356,21 +364,25 @@ public class IcbcTransactionFlowQueryServiceImpl extends ServiceImpl<EkpSocialIn
bizContent.setTranTime("103231001"); bizContent.setTranTime("103231001");
bizContent.setLanguage("zh_CN"); bizContent.setLanguage("zh_CN");
bizContent.setfSeqNo("AHWX"+ System.currentTimeMillis()); bizContent.setfSeqNo("AHWX"+ System.currentTimeMillis());
bizContent.setCardNo("6217752510002149161"); // 6217752510002149161
bizContent.setCardNo(cardNo);
request.setServiceUrl("https://gw.open.icbc.com.cn/api/mybank/enterprise/account/querybankinfo/V1"); request.setServiceUrl("https://gw.open.icbc.com.cn/api/mybank/enterprise/account/querybankinfo/V1");
request.setBizContent(bizContent); request.setBizContent(bizContent);
MybankEnterpriseAccountQuerybankinfoResponseV1 response = client.execute(request); response = client.execute(request);
if (response.isSuccess()) { if (response.isSuccess()) {
// 业务成功处理 // 业务成功处理-存储起来
System.out.println("success"); EkpBankCodeSet codeSet = new EkpBankCodeSet();
} else { codeSet.setFdCreateTime(LocalDateTime.now());
// 失败 codeSet.setFdRecipientBankCode(response.getBankCode());
System.out.println("error"); codeSet.setFdPayeeAccount(cardNo);
codeSet.setFdRecipientBank(response.getBankName());
ekpBankCodeSetService.save(codeSet);
return R.ok(codeSet);
} }
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); log.error("银企付款任务,查询行号错误:", e);
} }
return R.ok(); return R.failed("未找到");
} }
@Override @Override
...@@ -487,7 +499,7 @@ public class IcbcTransactionFlowQueryServiceImpl extends ServiceImpl<EkpSocialIn ...@@ -487,7 +499,7 @@ public class IcbcTransactionFlowQueryServiceImpl extends ServiceImpl<EkpSocialIn
} }
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());
pushParam.setFd_recipAccountNo(entry.getRecipAccountNo()); pushParam.setFd_recipAccountNo(entry.getRecipAccountNo());
pushParam.setFd_recipBkName(entry.getRecipBkName()); pushParam.setFd_recipBkName(entry.getRecipBkName());
......
...@@ -71,10 +71,20 @@ springdoc: ...@@ -71,10 +71,20 @@ springdoc:
#按包路径匹配 #按包路径匹配
packagesToScan: com.yifu.cloud.plus.v1.ekp.controller packagesToScan: com.yifu.cloud.plus.v1.ekp.controller
#工行生产环境配置 #工行到账查询生产环境配置
icbc: icbc:
appId: 11000000000000019038 appId: 11000000000000019038
appPrivateKey: 4d931f6ad4331158fcc4dea23f0d71393328146e40b5f63f197b9f6ad3732f44 appPrivateKey: 4d931f6ad4331158fcc4dea23f0d71393328146e40b5f63f197b9f6ad3732f44
serverUrl: https://gw.open.icbc.com.cn/api/mybank/enterprise/trade/qhisd/V1 serverUrl: https://gw.open.icbc.com.cn/api/mybank/enterprise/trade/qhisd/V1
caSm: MIICSTCCAeygAwIBAgIGAJuAEtYAMAwGCCqBHM9VAYN1BQAwQTELMAkGA1UEBhMCY24xGzAZBgNVBAoMEnNtMmNvci5pY2JjLmNvbS5jbjEVMBMGA1UEAwwMc20ycm9vdGNhY29yMB4XDTIzMTIyMTA5NTAxNloXDTI4MTIyMTE1NTk1OVowVDELMAkGA1UEBhMCY24xGzAZBgNVBAoMEnNtMmNvci5pY2JjLmNvbS5jbjENMAsGA1UECwwEMTMwMjEZMBcGA1UEAwwQYWh3eC55LjEzMDIuMDIwMTBZMBMGByqGSM49AgEGCCqBHM9VAYItA0IABGEC1fF2rHTWfipQhOr+8SfvXDBiazIrImcsPH5aGaYMFK2RIXv0AF2xe2ZgAzcWRbgop0cAjaBHXpzSfIlnfl6jgbowgbcwHwYDVR0jBBgwFoAUDD6RRlIIkxjZ0/0x6S8mKdW3D2YwCQYDVR0TBAIwADBdBgNVHR8EVjBUMFKgUKBOpEwwSjEQMA4GA1UEAwwHY3JsNDE3MDEMMAoGA1UECwwDY3JsMRswGQYDVQQKDBJzbTJjb3IuaWNiYy5jb20uY24xCzAJBgNVBAYTAmNuMAsGA1UdDwQEAwIHgDAdBgNVHQ4EFgQUd0LHEI6l7Faq6/9GObNld3SH7xswDAYIKoEcz1UBg3UFAANJADBGAiEA68uRM5zYzMhaheAG+fw3AtkRFE5146+Qw6GVP93WojwCIQDzsIL3duLRtTot8ciVuKUQkI+GrXAg7nWnd2M2o9oRBw== caSm: MIICSTCCAeygAwIBAgIGAJuAEtYAMAwGCCqBHM9VAYN1BQAwQTELMAkGA1UEBhMCY24xGzAZBgNVBAoMEnNtMmNvci5pY2JjLmNvbS5jbjEVMBMGA1UEAwwMc20ycm9vdGNhY29yMB4XDTIzMTIyMTA5NTAxNloXDTI4MTIyMTE1NTk1OVowVDELMAkGA1UEBhMCY24xGzAZBgNVBAoMEnNtMmNvci5pY2JjLmNvbS5jbjENMAsGA1UECwwEMTMwMjEZMBcGA1UEAwwQYWh3eC55LjEzMDIuMDIwMTBZMBMGByqGSM49AgEGCCqBHM9VAYItA0IABGEC1fF2rHTWfipQhOr+8SfvXDBiazIrImcsPH5aGaYMFK2RIXv0AF2xe2ZgAzcWRbgop0cAjaBHXpzSfIlnfl6jgbowgbcwHwYDVR0jBBgwFoAUDD6RRlIIkxjZ0/0x6S8mKdW3D2YwCQYDVR0TBAIwADBdBgNVHR8EVjBUMFKgUKBOpEwwSjEQMA4GA1UEAwwHY3JsNDE3MDEMMAoGA1UECwwDY3JsMRswGQYDVQQKDBJzbTJjb3IuaWNiYy5jb20uY24xCzAJBgNVBAYTAmNuMAsGA1UdDwQEAwIHgDAdBgNVHQ4EFgQUd0LHEI6l7Faq6/9GObNld3SH7xswDAYIKoEcz1UBg3UFAANJADBGAiEA68uRM5zYzMhaheAG+fw3AtkRFE5146+Qw6GVP93WojwCIQDzsIL3duLRtTot8ciVuKUQkI+GrXAg7nWnd2M2o9oRBw==
caSmIcbc: MIIDdDCCAxegAwIBAgIFRjBiNDYwDAYIKoEcz1UBg3UFADBcMQswCQYDVQQGEwJDTjEwMC4GA1UECgwnQ2hpbmEgRmluYW5jaWFsIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MRswGQYDVQQDDBJDRkNBIEFDUyBTTTIgT0NBMzEwHhcNMjMwMjE1MDkyMTA5WhcNMjgwMjE1MDkyMTA5WjCBpTELMAkGA1UEBhMCQ04xGzAZBgNVBAoMEkNGQ0EgQUNTIFNNMiBPQ0EzMTETMBEGA1UECwwKQ0ZDQSBPQ0EzMTEZMBcGA1UECwwQT3JnYW5pemF0aW9uYWwtMTFJMEcGA1UEAwxAQ0ZDQUDkuK3lm73lt6XllYbpk7booYzogqHku73mnInpmZDlhazlj7hATjkxMTAwMDAwMTAwMDAzOTYyVEAxNjBZMBMGByqGSM49AgEGCCqBHM9VAYItA0IABC7pDFU19+SE4Bog4M7om/nsDbTtXHBlfp5G2e1Iya4LmFW5ZqOxmmQBysFwl9nDq3svOHMZ53Mpe14Z1m/OYFajggF4MIIBdDBsBggrBgEFBQcBAQRgMF4wKAYIKwYBBQUHMAGGHGh0dHA6Ly9vY3NwLmNmY2EuY29tLmNuL29jc3AwMgYIKwYBBQUHMAKGJmh0dHA6Ly9jcmwuY2ZjYS5jb20uY24vb2NhMzEvb2NhMzEuY2VyMB8GA1UdIwQYMBaAFAjY0SbESH2c7KyY6fF/YrmAzqlFMAwGA1UdEwEB/wQCMAAwSAYDVR0gBEEwPzA9BghggRyG7yoBBDAxMC8GCCsGAQUFBwIBFiNodHRwOi8vd3d3LmNmY2EuY29tLmNuL3VzL3VzLTE0Lmh0bTA9BgNVHR8ENjA0MDKgMKAuhixodHRwOi8vY3JsLmNmY2EuY29tLmNuL29jYTMxL1NNMi9jcmwyNzMwLmNybDAOBgNVHQ8BAf8EBAMCBsAwHQYDVR0OBBYEFOpEqrs73yvBXqvDQoT33v05FnDIMB0GA1UdJQQWMBQGCCsGAQUFBwMCBggrBgEFBQcDBDAMBggqgRzPVQGDdQUAA0kAMEYCIQCdKpfhUijpAKEQekHxlk4LvnqzzaYmODo3T3qmZUJsUwIhAOaMMH0IpwefVTSwJlhrVbmEB5DmoxLo1Xb/1tvfW1l2
#工行代发生产环境配置
icbcissue:
appId: 11000000000000028685
appPrivateKey: MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCEZYrhm3dBp3PqlMc9fBBEE8Tp8M34Yy6Ucs3FV/VahsdHaLe0kEPugf1twbt/hD4hdIwzUj/ZtG2BhusRiMptdlWtNKcIgFxaaFaKANKrIodeQjv0jjZvK9ugoQxmiM4gF5SGX2a847zohv/6TvAYiB9AI3tdKQTbj6I3pwmuO3cfzgU5IwepeguE4fxqnh7C19MEq4vXv0yBq/f43zQ2HBMS+KRgokNLUBqoEOyfaKkPL9ot+zISPwENQOLqQMZ1hczp5tEB2FeZecdzrzjeXkzPSy1ZJmNyNuOl+WG85aoeDJTQ7hx/g6KFA6zU2VBGUR7q4pXdGRslpa6KYETBAgMBAAECggEALkfElXqf5G5hocWiJAcDNJjog5JunX4mITREY9CMbrmgXYDofpDTfkMoUL6hCUEz6sPv4lzE/xgIE3gTIcz8Xek4p9Q480rTfbLtVU5WVgY65aMnjCROOOxO2MaTLCB0VVmIzLP6mNrPBUVzo48GdLzYl7YPgJA/J3T9EpEsXB/iAdjiv/VH9vOIW6WUlQUSceyNznf1rfwMJvHt7zb56IJGZMq9G6C5SUeqWbqbvNi+nL8yeu8fM/O/ERZJQBDwMXbRAPvhhcbDwVzpg4BRc7AVv0SLzy6ZA2+zLJmDe9F9uXmG6QQ4ra8mDqLeugDP9blKUOEm8JLIh7nzvhpNhQKBgQDK4ZEz1zui6GQsxsnbm24EvparfniPqDBS/V29MDZysXDmG123R22RA//BWC3m5cY+3vg0ayCGaXRrc9/V+u+jmwVfsR6XCM6WM2IZVVFBUzqKMlTKsZ4n3V/6pqBHG8++GUab5W6p/7NYI22xx0ZFObEt4EkaaaP7RzY6AVrtCwKBgQCnD6P24uR6VHN84lhyZl+iJW6azTd26AhaJ768wSl5rqN6N4AV9cXeAUKylPgMPvy+2mjNX7He0Oitb7/lrKK93/olmDQoHpqj1yZum8VVPiyEKk6qCoYYoHEloLPJDPRs6yiBjrO8oghHRuyJErKRN6IZC3Rq/mrXuDwrZYS84wKBgFn9wDisigly56xs6PD+esij+ZVMXhHq2rSVKlVW42/wgVGwZdt8VX9ztKiAgqve1BbjNFmcAytb74YSOgFic5Wwl6uglx8LiwdY93ShQY+maVsPhEj8jFjGe2JlMscX8QgzkfxowrOpdlXsMSYgbG0ccBkXWZXbsh8tsUH9g+WNAoGAbQ5avOo0uF603Uts7ZFC0Lia0Vcx499oxGG5s8Js7tBAS6I7bRp5xokQHz/8BRKBL52oWJklpgy+N6oBnU7rFgRGaZBITABedqIWppHtac4ihUyQ+ZPRIfZqpmOXuaFJVmjUkm6zimpD+TOlaX3ZL88fdDX0E3xuBtBwBuxIkH0CgYEAlXyBbG2/fVV/PDUVCAA+aeWstojR1ncDhJmFnENSk5I/y3mh+d+u4ZG3hmVQZfR1EYM+n9wPQ2LxqNpGPA8o4JK/MSfVKun4lBwjkergHzxWJ5AMuYL1DPrOtMPEqrTqOHfVzSZGsz9cMK4tDWETKKFBOM/5oSdGGW3oYvzcS0M=
apigwPublicKey: MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCMpjaWjngB4E3ATh+G1DVAmQnIpiPEFAEDqRfNGAVvvH35yDetqewKi0l7OEceTMN1C6NPym3zStvSoQayjYV+eIcZERkx31KhtFu9clZKgRTyPjdKMIth/wBtPKjL/5+PYalLdomM4ONthrPgnkN4x4R0+D4+EBpXo8gNiAFsNwIDAQAB
companyNo: '020101190'
aesKey: 8jTKCqZ9035g+HRzpZQqZA==
caSm: MIICSTCCAeygAwIBAgIGAJuAEtYAMAwGCCqBHM9VAYN1BQAwQTELMAkGA1UEBhMCY24xGzAZBgNVBAoMEnNtMmNvci5pY2JjLmNvbS5jbjEVMBMGA1UEAwwMc20ycm9vdGNhY29yMB4XDTIzMTIyMTA5NTAxNloXDTI4MTIyMTE1NTk1OVowVDELMAkGA1UEBhMCY24xGzAZBgNVBAoMEnNtMmNvci5pY2JjLmNvbS5jbjENMAsGA1UECwwEMTMwMjEZMBcGA1UEAwwQYWh3eC55LjEzMDIuMDIwMTBZMBMGByqGSM49AgEGCCqBHM9VAYItA0IABGEC1fF2rHTWfipQhOr+8SfvXDBiazIrImcsPH5aGaYMFK2RIXv0AF2xe2ZgAzcWRbgop0cAjaBHXpzSfIlnfl6jgbowgbcwHwYDVR0jBBgwFoAUDD6RRlIIkxjZ0/0x6S8mKdW3D2YwCQYDVR0TBAIwADBdBgNVHR8EVjBUMFKgUKBOpEwwSjEQMA4GA1UEAwwHY3JsNDE3MDEMMAoGA1UECwwDY3JsMRswGQYDVQQKDBJzbTJjb3IuaWNiYy5jb20uY24xCzAJBgNVBAYTAmNuMAsGA1UdDwQEAwIHgDAdBgNVHQ4EFgQUd0LHEI6l7Faq6/9GObNld3SH7xswDAYIKoEcz1UBg3UFAANJADBGAiEA68uRM5zYzMhaheAG+fw3AtkRFE5146+Qw6GVP93WojwCIQDzsIL3duLRtTot8ciVuKUQkI+GrXAg7nWnd2M2o9oRBw==
caSmIcbc: MIIDdDCCAxegAwIBAgIFRjBiNDYwDAYIKoEcz1UBg3UFADBcMQswCQYDVQQGEwJDTjEwMC4GA1UECgwnQ2hpbmEgRmluYW5jaWFsIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MRswGQYDVQQDDBJDRkNBIEFDUyBTTTIgT0NBMzEwHhcNMjMwMjE1MDkyMTA5WhcNMjgwMjE1MDkyMTA5WjCBpTELMAkGA1UEBhMCQ04xGzAZBgNVBAoMEkNGQ0EgQUNTIFNNMiBPQ0EzMTETMBEGA1UECwwKQ0ZDQSBPQ0EzMTEZMBcGA1UECwwQT3JnYW5pemF0aW9uYWwtMTFJMEcGA1UEAwxAQ0ZDQUDkuK3lm73lt6XllYbpk7booYzogqHku73mnInpmZDlhazlj7hATjkxMTAwMDAwMTAwMDAzOTYyVEAxNjBZMBMGByqGSM49AgEGCCqBHM9VAYItA0IABC7pDFU19+SE4Bog4M7om/nsDbTtXHBlfp5G2e1Iya4LmFW5ZqOxmmQBysFwl9nDq3svOHMZ53Mpe14Z1m/OYFajggF4MIIBdDBsBggrBgEFBQcBAQRgMF4wKAYIKwYBBQUHMAGGHGh0dHA6Ly9vY3NwLmNmY2EuY29tLmNuL29jc3AwMgYIKwYBBQUHMAKGJmh0dHA6Ly9jcmwuY2ZjYS5jb20uY24vb2NhMzEvb2NhMzEuY2VyMB8GA1UdIwQYMBaAFAjY0SbESH2c7KyY6fF/YrmAzqlFMAwGA1UdEwEB/wQCMAAwSAYDVR0gBEEwPzA9BghggRyG7yoBBDAxMC8GCCsGAQUFBwIBFiNodHRwOi8vd3d3LmNmY2EuY29tLmNuL3VzL3VzLTE0Lmh0bTA9BgNVHR8ENjA0MDKgMKAuhixodHRwOi8vY3JsLmNmY2EuY29tLmNuL29jYTMxL1NNMi9jcmwyNzMwLmNybDAOBgNVHQ8BAf8EBAMCBsAwHQYDVR0OBBYEFOpEqrs73yvBXqvDQoT33v05FnDIMB0GA1UdJQQWMBQGCCsGAQUFBwMCBggrBgEFBQcDBDAMBggqgRzPVQGDdQUAA0kAMEYCIQCdKpfhUijpAKEQekHxlk4LvnqzzaYmODo3T3qmZUJsUwIhAOaMMH0IpwefVTSwJlhrVbmEB5DmoxLo1Xb/1tvfW1l2 caSmIcbc: MIIDdDCCAxegAwIBAgIFRjBiNDYwDAYIKoEcz1UBg3UFADBcMQswCQYDVQQGEwJDTjEwMC4GA1UECgwnQ2hpbmEgRmluYW5jaWFsIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MRswGQYDVQQDDBJDRkNBIEFDUyBTTTIgT0NBMzEwHhcNMjMwMjE1MDkyMTA5WhcNMjgwMjE1MDkyMTA5WjCBpTELMAkGA1UEBhMCQ04xGzAZBgNVBAoMEkNGQ0EgQUNTIFNNMiBPQ0EzMTETMBEGA1UECwwKQ0ZDQSBPQ0EzMTEZMBcGA1UECwwQT3JnYW5pemF0aW9uYWwtMTFJMEcGA1UEAwxAQ0ZDQUDkuK3lm73lt6XllYbpk7booYzogqHku73mnInpmZDlhazlj7hATjkxMTAwMDAwMTAwMDAzOTYyVEAxNjBZMBMGByqGSM49AgEGCCqBHM9VAYItA0IABC7pDFU19+SE4Bog4M7om/nsDbTtXHBlfp5G2e1Iya4LmFW5ZqOxmmQBysFwl9nDq3svOHMZ53Mpe14Z1m/OYFajggF4MIIBdDBsBggrBgEFBQcBAQRgMF4wKAYIKwYBBQUHMAGGHGh0dHA6Ly9vY3NwLmNmY2EuY29tLmNuL29jc3AwMgYIKwYBBQUHMAKGJmh0dHA6Ly9jcmwuY2ZjYS5jb20uY24vb2NhMzEvb2NhMzEuY2VyMB8GA1UdIwQYMBaAFAjY0SbESH2c7KyY6fF/YrmAzqlFMAwGA1UdEwEB/wQCMAAwSAYDVR0gBEEwPzA9BghggRyG7yoBBDAxMC8GCCsGAQUFBwIBFiNodHRwOi8vd3d3LmNmY2EuY29tLmNuL3VzL3VzLTE0Lmh0bTA9BgNVHR8ENjA0MDKgMKAuhixodHRwOi8vY3JsLmNmY2EuY29tLmNuL29jYTMxL1NNMi9jcmwyNzMwLmNybDAOBgNVHQ8BAf8EBAMCBsAwHQYDVR0OBBYEFOpEqrs73yvBXqvDQoT33v05FnDIMB0GA1UdJQQWMBQGCCsGAQUFBwMCBggrBgEFBQcDBDAMBggqgRzPVQGDdQUAA0kAMEYCIQCdKpfhUijpAKEQekHxlk4LvnqzzaYmODo3T3qmZUJsUwIhAOaMMH0IpwefVTSwJlhrVbmEB5DmoxLo1Xb/1tvfW1l2
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<configuration debug="false" scan="false"> <configuration debug="false" scan="false">
<springProperty scop="context" name="spring.application.name" source="spring.application.name" defaultValue=""/> <springProperty scop="context" name="springAppName" source="spring.application.name" defaultValue=""/>
<property name="log.path" value="logs/${spring.application.name}"/> <springProperty scop="context" name="springAppActive" source="spring.profiles.active" defaultValue=""/>
<property name="log.path" value="logs/${springAppName}"/>
<!-- 彩色日志格式 --> <!-- 彩色日志格式 -->
<property name="CONSOLE_LOG_PATTERN" <property name="CONSOLE_LOG_PATTERN"
value="${CONSOLE_LOG_PATTERN:-%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}"/> value="${CONSOLE_LOG_PATTERN:-%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}"/>
...@@ -48,11 +49,50 @@ ...@@ -48,11 +49,50 @@
</filter> </filter>
</appender> </appender>
<!-- Level: FATAL 0 ERROR 3 WARN 4 INFO 6 DEBUG 7 --> <!--邮件提醒-->
<root level="INFO"> <appender name="MAIL" class="ch.qos.logback.classic.net.SMTPAppender">
<appender-ref ref="console"/> <smtpHost>smtp.exmail.qq.com</smtpHost>
<appender-ref ref="debug"/> <smtpPort>465</smtpPort>
<appender-ref ref="error"/> <username>information@wanxin-holdings.com</username>
</root> <password>QmdCaQSPmCAQEddd</password>
<SSL>true</SSL>
<asynchronousSending>true</asynchronousSending>
<to>wangpeng@wanxin-holdings.com,fangxinjiang@wanxin-holdings.com,hongguangwu@wanxin-holdings.com</to>
<from>information@wanxin-holdings.com</from>
<subject>hro-mvp ${springAppActive}环境 ${springAppName}服务: %-20msg 错误</subject>
<charsetEncoding>UTF-8</charsetEncoding>
<cyclicBufferTracker class="ch.qos.logback.core.spi.CyclicBufferTracker">
<!-- &lt;!&ndash; 每个电子邮件只发送一个日志条目 &ndash;&gt;-->
<bufferSize>1</bufferSize>
</cyclicBufferTracker>
<layout class="ch.qos.logback.classic.html.HTMLLayout"/>
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>ERROR</level>
</filter>
</appender>
<springProfile name="prd">
<root level="error">
<appender-ref ref="console"/>
<appender-ref ref="debug"/>
<appender-ref ref="error"/>
<appender-ref ref="MAIL"/>
</root>
</springProfile>
<springProfile name="dev">
<root level="error">
<appender-ref ref="console"/>
<appender-ref ref="debug"/>
<appender-ref ref="error"/>
</root>
</springProfile>
<springProfile name="test">
<!-- Level: FATAL 0 ERROR 3 WARN 4 INFO 6 DEBUG 7 -->
<root level="info">
<appender-ref ref="console"/>
<appender-ref ref="debug"/>
<appender-ref ref="error"/>
</root>
</springProfile>
</configuration> </configuration>
<?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.ekp.mapper.EkpBankAttaMapper">
<resultMap id="tAttaMap" type="com.yifu.cloud.plus.v1.ekp.entity.EkpBankAtta">
<id property="fdId" column="fd_id"/>
<result property="fdAttaName" column="fd_atta_name"/>
<result property="fdAttaSrc" column="fd_atta_src"/>
<result property="fdAttaUrl" column="fd_atta_url"/>
<result property="fdAttaSize" column="fd_atta_size"/>
<result property="fdLinkId" column="fd_link_id"/>
<result property="fdLinkType" column="fd_link_type"/>
<result property="fdCreateTime" column="fd_create_time"/>
</resultMap>
<sql id="selectParams">
a.fd_id,
a.fd_atta_name,
a.fd_atta_src,
a.fd_atta_url,
a.fd_atta_size,
a.fd_link_id,
a.fd_link_type,
a.fd_create_time
</sql>
<!--获取最新的附件-->
<select id="getEkpBankAttaLimit" resultMap="tAttaMap">
SELECT
<include refid="selectParams"/>
FROM t_salary_atta a
where a.fd_link_id = #{fdId} and a.fd_link_type = #{type}
order by a.fd_create_time desc limit 1
</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.ekp.mapper.EkpBankCodeSetMapper">
<resultMap id="ekpBankCodeSetMap" type="com.yifu.cloud.plus.v1.ekp.entity.EkpBankCodeSet">
<id property="fdId" column="fd_id"/>
<result property="fdPayeeAccount" column="fd_payee_account"/>
<result property="fdRecipientBank" column="fd_recipient_bank"/>
<result property="fdRecipientBankCode" column="fd_recipient_bank_code"/>
</resultMap>
<sql id="Base_Column_List">
a.fd_id,
a.fd_payee_account,
a.fd_recipient_bank,
a.fd_recipient_bank_code
</sql>
<select id="getCodeSetByCardNo" resultMap="ekpBankCodeSetMap" >
select
<include refid="Base_Column_List"/>
from ekp_bank_code_set a
where a.fd_payee_account = #{cardNo} limit 1
</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.ekp.mapper.EkpBankGrantDetailMapper">
<resultMap id="ekpBankGrantDetailMap" type="com.yifu.cloud.plus.v1.ekp.entity.EkpBankGrantDetail">
<id property="fdId" column="fd_id"/>
<result property="fdSerialNumber" column="fd_serial_number"/>
<result property="fdPayeeName" column="fd_payee_name"/>
<result property="fdPayeeAccount" column="fd_payee_account"/>
<result property="fdMoney" column="fd_money"/>
<result property="fdRecipientBank" column="fd_recipient_bank"/>
<result property="fdRemittancePurpose" column="fd_remittance_purpose"/>
<result property="fdRemark" column="fd_remark"/>
<result property="fdCreateTime" column="fd_create_time"/>
<result property="fdFailureFeedback" column="fd_failure_feedback"/>
<result property="fdGrantStatus" column="fd_grant_status"/>
<result property="fdHandleStatus" column="fd_handle_status"/>
<result property="fdHandleFailNo" column="fd_handle_fail_no"/>
<result property="fdHandleFailId" column="fd_handle_fail_id"/>
<result property="fdAttaId" column="fd_atta_id"/>
<result property="fdAttaName" column="fd_atta_name"/>
<result property="fdAttaSrc" column="fd_atta_src"/>
<result property="fdDownloadNum" column="fd_download_num"/>
<result property="fdFailNum" column="fd_fail_num"/>
<result property="fdGrantNum" column="fd_grant_num"/>
<result property="fdParentId" column="fd_parent_id"/>
<result property="fdEmpPhone" column="fd_emp_phone"/>
<result property="fdWxNo" column="fd_wx_no"/>
<result property="fdMdCode" column="fd_md_dcode"/>
<result property="fdSalaryId" column="fd_salary_id"/>
</resultMap>
<sql id="Base_Excel_Sql">
select
DATE_FORMAT(now(),'%Y%m%d') nowDate,
'2' detailTag,
a.fd_serial_number fdSerialNumber,
'' baoXiaoNumber,
'0' danJuNumber,
m.fd_bank_name fdBankName,
m.fd_bank_no fdBankNo,
m.fd_bank_account fdBankAccount,
ifnull(c.fd_recipient_bank,a.fd_recipient_bank) fdRecipientBank,
'' fdRecipientAdress,
c.fd_recipient_bank_code fdRecipientBankCode,
'1' payType,
a.fd_payee_account fdPayeeAccount,
a.fd_payee_name fdPayeeName,
concat('',round(a.fd_money * 100,0)) fdMoney,
a.fd_remittance_purpose fdRemittancePurpose,
ifnull(a.fd_remark,'工资') fdCoverRemark,
a.fd_emp_phone fdEmpPhone
from ekp_bank_grant_detail a
left join ekp_bank_pay_task m on a.fd_parent_id=m.fd_id
left join ekp_bank_code_set c on c.fd_payee_account=a.fd_payee_account
where
</sql>
<!-- 查询待发放条数 -->
<select id="getCountByIdAndMain" resultType="java.lang.Integer">
select count(1)
from ekp_bank_grant_detail a
where (a.fd_handle_status is null or a.fd_handle_status = '待发放')
and a.fd_parent_id = #{fdParentId}
</select>
<!-- 查询主表下的所有待发放数据 -->
<select id="getEkpBankExcelVoByIdAndMain" resultType="com.yifu.cloud.plus.v1.ekp.vo.EkpBankExcelVo">
<include refid="Base_Excel_Sql"/>
(a.fd_handle_status is null or a.fd_handle_status = '待发放') and a.fd_parent_id = #{fdParentId}
</select>
<!-- 查询主表下的所有待发放数据 -->
<select id="getEkpBankExcelVoByIdAndDetail" resultType="com.yifu.cloud.plus.v1.ekp.vo.EkpBankExcelVo">
<include refid="Base_Excel_Sql"/>
a.fd_handle_status = '待发放' and a.fd_id = #{fdId}
</select>
<!-- 查询编号是否重复 -->
<select id="getWxNoByWxNo" resultType="java.lang.String">
select a.fd_wx_no from (
select a.fd_wx_no from ekp_bank_grant_detail a where a.fd_wx_no = #{wxNo}
union all
select a.fd_wx_no from ekp_bank_pay_task a where a.fd_wx_no = #{wxNo}
) a limit 1
</select>
<!-- 主表发放时,更新明细表的发放时间与状态 -->
<update id="updateStatusByGrant">
update ekp_bank_grant_detail a set a.fd_create_time = NOW(),a.fd_grant_status='发放中' where a.fd_parent_id = #{fdParentId}
</update>
<!-- 主表处理失败时,批量更新明细表为发放失败,原因为处理失败 -->
<update id="updateStatusByGrantFail">
update ekp_bank_grant_detail a set a.fd_grant_status='发放失败',a.fd_failure_feedback = '处理失败' where a.fd_parent_id = #{fdParentId}
</update>
<select id="getListByParentId" resultMap="ekpBankGrantDetailMap">
select
a.fd_id,a.fd_salary_id,a.fd_serial_number,a.fd_payee_name,a.fd_recipient_bank,a.fd_fail_num
from ekp_bank_grant_detail a where a.fd_parent_id = #{fdParentId}
</select>
<!-- 发放失败,批量更新中信银行交易流水表fd_3b148bc0c28e48为失败,根据 工资明细fdId:fd_3b1fe00b0f5dde -->
<update id="updateZhongXinStatus">
update ekp_db4ed54e25543f4b7a9a a
set a.fd_3b148bc0c28e48='失败',a.fd_tbankempid = #{detailId}
where a.fd_3b1fe00b0f5dde = #{salaryId}
</update>
<!-- 发放失败,批量更新中信银行交易流水Model表fd_3b148bc0c28e48为失败,根据 工资明细fdId:fd_3b1fe00b0f5dde -->
<update id="updateZhongXinMainStatus">
UPDATE modeling_simple_main a
JOIN ekp_db4ed54e25543f4b7a9a b on a.fd_id=b.fd_id
SET a.extend_data_xml=JSON_SET(a.extend_data_xml,'$[1].fd_3b148bc0c28e48', '失败','$[1].fd_tbankempid', #{detailId})
where b.fd_3b56782982b8b2 = #{salaryId}
</update>
<!-- 明细再次-发放失败,批量更新中信银行交易流水表fd_3b148bc0c28e48为失败,根据 工资明细fdId:fd_3b1fe00b0f5dde -->
<update id="updateZhongXinStatusAndBankInfo">
update ekp_db4ed54e25543f4b7a9a a
left join ekp_bank_grant_detail d on a.fd_3b1fe00b0f5dde=d.fd_salary_id
set a.fd_3b148bc0c28e48='失败',a.fd_3c754f2a7125a0 = '1183b0b84ee4f581bba001c47a78b2d9',a.fd_3c754a976ddde2=now(),
a.fd_3afd45029541be=d.fd_payee_name,a.fd_3afd4500f91ae6=d.fd_payee_account,a.fd_3afd4502e34bc0=d.fd_recipient_bank
where
<if test="salaryIdList != null and salaryIdList.size() > 0">
a.fd_3b1fe00b0f5dde in
<foreach collection="salaryIdList" item="item" open="(" separator="," close=")">
#{item}
</foreach>
</if>
</update>
<!-- 明细再次-发放失败,批量更新中信银行交易流水Model表fd_3b148bc0c28e48为失败,根据 工资明细fdId:fd_3b1fe00b0f5dde -->
<update id="updateZhongXinMainStatusAndBankInfo">
UPDATE modeling_simple_main a
JOIN ekp_db4ed54e25543f4b7a9a b on a.fd_id=b.fd_id
left join ekp_bank_grant_detail d on b.fd_3b1fe00b0f5dde=d.fd_salary_id
SET a.extend_data_xml=JSON_SET(a.extend_data_xml,'$[1].fd_3b148bc0c28e48', '失败'
, '$[1].fd_3c754f2a7125a0', '1183b0b84ee4f581bba001c47a78b2d9'
,'$[1].fd_3c754a976ddde2', now()
,'$[1].fd_3afd45029541be', d.fd_payee_name
,'$[1].fd_3afd4500f91ae6', d.fd_payee_account
,'$[1].fd_3afd4502e34bc0', d.fd_recipient_bank
)
where
<if test="salaryIdList != null and salaryIdList.size() > 0">
b.fd_3b56782982b8b2 in
<foreach collection="salaryIdList" item="item" open="(" separator="," close=")">
#{item}
</foreach>
</if>
</update>
</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.ekp.mapper.EkpBankGrantLogDetailMapper">
<resultMap id="ekpBankGrantLogDetailMap" type="com.yifu.cloud.plus.v1.ekp.entity.EkpBankGrantLogDetail">
<id property="fdId" column="fd_id"/>
<result property="fdParentId" column="fd_parent_id"/>
<result property="fdPayee" column="fd_payee"/>
<result property="fdPayeeAccount" column="fd_payee_account"/>
<result property="fdMoney" column="fd_money"/>
<result property="fdRecipientBank" column="fd_recipient_bank"/>
<result property="fdRemittancePurpose" column="fd_remittance_purpose"/>
<result property="fdRemark" column="fd_remark"/>
<result property="fdCommandStatus" column="fd_command_status"/>
</resultMap>
<sql id="Base_Column_List">
a.fd_id,
a.fd_parent_id,
a.fd_payee,
a.fd_payee_account,
a.fd_money,
a.fd_recipient_bank,
a.fd_remittance_purpose,
a.fd_remark,
a.fd_command_status
</sql>
</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.ekp.mapper.EkpBankGrantLogMapper">
<resultMap id="ekpBankGrantLogMap" type="com.yifu.cloud.plus.v1.ekp.entity.EkpBankGrantLog">
<id property="fdId" column="fd_id"/>
<result property="fdBatchNumber" column="fd_batch_number"/>
<result property="fdBatchPackage" column="fd_batch_package"/>
<result property="fdPaymentAccount" column="fd_payment_account"/>
<result property="fdDrawee" column="fd_drawee"/>
<result property="fdCurrency" column="fd_currency"/>
<result property="fdBusinessType" column="fd_business_type"/>
<result property="fdSubmitTime" column="fd_submit_time"/>
<result property="fdTransactionTime" column="fd_transaction_time"/>
<result property="fdSuccessFee" column="fd_success_fee"/>
<result property="fdFailFee" column="fd_fail_fee"/>
<result property="fdSumFee" column="fd_sum_fee"/>
<result property="fdTransactionTotal" column="fd_transaction_total"/>
<result property="fdTransactionSuccessTotal" column="fd_transaction_success_total"/>
<result property="fdTransactionFailTotal" column="fd_transaction_fail_total"/>
</resultMap>
<sql id="Base_Column_List">
a.fd_id,
a.fd_batch_number,
a.fd_batch_package,
a.fd_payment_account,
a.fd_drawee,
a.fd_currency,
a.fd_business_type,
a.fd_submit_time,
a.fd_transaction_time,
a.fd_success_fee,
a.fd_fail_fee,
a.fd_sum_fee,
a.fd_transaction_total,
a.fd_transaction_success_total,
a.fd_transaction_fail_total
</sql>
</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.ekp.mapper.EkpBankIcbcLogMapper">
<resultMap id="ekpBankIcbcLogMap" type="com.yifu.cloud.plus.v1.ekp.entity.EkpBankIcbcLog">
<id property="fdId" column="fd_id"/>
<result property="fdWxNo" column="fd_wx_no"/>
<result property="fdLog" column="fd_log"/>
<result property="fdParentId" column="fd_parent_id"/>
<result property="fdType" column="fd_type"/>
<result property="fdCreateTime" column="fd_create_time"/>
</resultMap>
<sql id="Base_Column_List">
a.fd_id,
a.fd_wx_no,
a.fd_log,
a.fd_parent_id,
a.fd_type,
a.fd_create_time
</sql>
</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.ekp.mapper.EkpBankPayTaskMapper">
<resultMap id="ekpBankPayTaskMap" type="com.yifu.cloud.plus.v1.ekp.entity.EkpBankPayTask">
<id property="fdId" column="fd_id"/>
<result property="fdCustomerName" column="fd_customer_name"/>
<result property="fdProjectName" column="fd_project_name"/>
<result property="fdProjectCode" column="fd_project_code"/>
<result property="fdProvince" column="fd_province"/>
<result property="fdCity" column="fd_city"/>
<result property="fdTown" column="fd_town"/>
<result property="fdMoney" column="fd_money"/>
<result property="fdPayType" column="fd_pay_type"/>
<result property="fdBankName" column="fd_bank_name"/>
<result property="fdBankNo" column="fd_bank_no"/>
<result property="fdBankAccount" column="fd_bank_account"/>
<result property="fdCustomerServer" column="fd_customer_server"/>
<result property="fdCreater" column="fd_creater"/>
<result property="fdGrantStatus" column="fd_grant_status"/>
<result property="fdSubmitCashier" column="fd_submit_cashier"/>
<result property="fdCreateTime" column="fd_create_time"/>
<result property="fdSettlementNo" column="fd_settlement_no"/>
<result property="fdSettlementId" column="fd_settlement_id"/>
<result property="fdFailHandleStatus" column="fd_fail_handle_status"/>
<result property="fdAttaId" column="fd_atta_id"/>
<result property="fdAttaName" column="fd_atta_name"/>
<result property="fdAttaSrc" column="fd_atta_src"/>
<result property="fdDownloadNum" column="fd_download_num"/>
<result property="fdFailNum" column="fd_fail_num"/>
<result property="fdGrantNum" column="fd_grant_num"/>
<result property="fdWxNo" column="fd_wx_no"/>
<result property="fdMdCode" column="fd_md_dcode"/>
<result property="fdErrorMsg" column="fd_error_msg"/>
</resultMap>
<sql id="Base_Column_List">
a.fd_id,
a.fd_customer_name,
a.fd_project_name,
a.fd_project_code,
a.fd_province,
a.fd_city,
a.fd_town,
a.fd_money,
a.fd_pay_type,
a.fd_bank_name,
a.fd_bank_no,
a.fd_bank_account,
a.fd_customer_server,
a.fd_creater,
a.fd_grant_status,
a.fd_submit_cashier,
a.fd_create_time,
a.fd_settlement_no,
a.fd_settlement_id,
a.fd_fail_handle_status,
a.fd_atta_id,
a.fd_atta_name,
a.fd_atta_src,
a.fd_download_num,
a.fd_fail_num,
a.fd_grant_num,
a.fd_wx_no,
a.fd_md_dcode,
a.fd_error_msg
</sql>
<!-- 获取发放中的主表,查询结果 -->
<select id="getEkpBankMainByNeedResultMain" resultType="com.yifu.cloud.plus.v1.ekp.vo.EkpBankResultVo">
select a.fd_id fdId,a.fd_wx_no fdWxNo
,count(d.fd_id) num,a.fd_bank_name fdBankName,a.fd_bank_no fdBankNo,a.fd_bank_account fdBankAccount
,a.fd_grant_num fdGrantNum
from ekp_bank_pay_task a left join ekp_bank_grant_detail d on a.fd_id = d.fd_parent_id
where a.fd_grant_status = '发放中'
GROUP BY a.fd_id
</select>
<!-- 获取发放中的明细表,查询结果 -->
<select id="getEkpBankMainByNeedResultDetail" resultType="com.yifu.cloud.plus.v1.ekp.vo.EkpBankResultVo">
select d.fd_id fdId,d.fd_wx_no fdWxNo,d.fd_parent_id fdParentId,d.fd_fail_num fdFailNum,d.fd_salary_id fdSalaryId
,'1' num,a.fd_bank_name fdBankName,a.fd_bank_no fdBankNo,a.fd_bank_account fdBankAccount,d.fd_payee_name fdPayeeName
,d.fd_grant_num fdGrantNum,d.fd_recipient_bank fdRecipientBank
from ekp_bank_grant_detail d left join ekp_bank_pay_task a on a.fd_id = d.fd_parent_id
where a.fd_grant_status = '已发放' and d.fd_grant_status = '发放失败' and d.fd_handle_status = '发放中'
</select>
</mapper>
...@@ -61,7 +61,7 @@ public class LocalDateUtil { ...@@ -61,7 +61,7 @@ public class LocalDateUtil {
cal.setTime(date); cal.setTime(date);
return true; return true;
}catch (ParseException pe){ }catch (ParseException pe){
System.out.println("日期解析异常,返回false"); //System.out.println("日期解析异常,返回false")
return false; return false;
} }
} }
...@@ -82,7 +82,7 @@ public class LocalDateUtil { ...@@ -82,7 +82,7 @@ public class LocalDateUtil {
} }
return null; return null;
}catch (Exception e){ }catch (Exception e){
System.out.println("字符串格式的日期转LocalDate失败"); //System.out.println("字符串格式的日期转LocalDate失败")
return null; return null;
} }
} }
...@@ -108,17 +108,18 @@ public class LocalDateUtil { ...@@ -108,17 +108,18 @@ public class LocalDateUtil {
pastDate = sdf.parse(strDate); pastDate = sdf.parse(strDate);
//调用Date里面的after方法来做判断 //调用Date里面的after方法来做判断
flag = pastDate.after(nowDate); flag = pastDate.after(nowDate);
if (flag) { /*if (flag)
System.out.println("该日期晚于今日"); System.out.println("该日期晚于今日")
}else { }else
System.out.println("该日期早于今日"); System.out.println("该日期早于今日")
} }*/
} catch (ParseException e) { } catch (ParseException e) {
e.printStackTrace(); e.printStackTrace();
} }
}else {
System.out.println("日期参数不可为空");
} }
//else {
//System.out.println("日期参数不可为空")
//}
return flag; return flag;
} }
...@@ -145,17 +146,17 @@ public class LocalDateUtil { ...@@ -145,17 +146,17 @@ public class LocalDateUtil {
pastDate = sdf.parse(strDate); pastDate = sdf.parse(strDate);
//调用Date里面的after方法来做判断 //调用Date里面的after方法来做判断
flag = pastDate.after(nowDate); flag = pastDate.after(nowDate);
if (flag) { /*if (flag)
System.out.println("该日期晚于今日"); System.out.println("该日期晚于今日")
}else { }else
System.out.println("该日期早于今日"); System.out.println("该日期早于今日")
} }*/
} catch (ParseException e) { } catch (ParseException e) {
e.printStackTrace(); e.printStackTrace();
} }
}else { }/*else
System.out.println("日期参数不可为空"); System.out.println("日期参数不可为空")
} }*/
return flag; return flag;
} }
...@@ -181,17 +182,17 @@ public class LocalDateUtil { ...@@ -181,17 +182,17 @@ public class LocalDateUtil {
parseEndDate = sdf.parse(endDate); parseEndDate = sdf.parse(endDate);
//调用Date里面的before方法来做判断 //调用Date里面的before方法来做判断
flag = parseStartDate.before(parseEndDate); flag = parseStartDate.before(parseEndDate);
if (flag) { /*if (flag)
System.out.println("开始日期早于结束日期"); System.out.println("开始日期早于结束日期")
}else { }else {
System.out.println("开始日期晚于结束日期"); System.out.println("开始日期晚于结束日期")
} }*/
} catch (ParseException e) { } catch (ParseException e) {
e.printStackTrace(); e.printStackTrace();
} }
}else { }/*else
System.out.println("日期参数不可为空"); System.out.println("日期参数不可为空")
} }*/
return flag; return flag;
} }
...@@ -225,9 +226,9 @@ public class LocalDateUtil { ...@@ -225,9 +226,9 @@ public class LocalDateUtil {
} catch (ParseException e) { } catch (ParseException e) {
e.printStackTrace(); e.printStackTrace();
} }
}else { }/*else {
System.out.println("年月参数不可为空"); System.out.println("年月参数不可为空");
} }*/
return flag; return flag;
} }
...@@ -256,9 +257,9 @@ public class LocalDateUtil { ...@@ -256,9 +257,9 @@ public class LocalDateUtil {
} catch (ParseException e) { } catch (ParseException e) {
e.printStackTrace(); e.printStackTrace();
} }
}else { }/*else
System.out.println("日期参数不可为空"); System.out.println("日期参数不可为空")
} }*/
return dif + 1; return dif + 1;
} }
...@@ -304,9 +305,9 @@ public class LocalDateUtil { ...@@ -304,9 +305,9 @@ public class LocalDateUtil {
} catch (ParseException e) { } catch (ParseException e) {
e.printStackTrace(); e.printStackTrace();
} }
}else { }/*else
System.out.println("日期参数不可为空"); System.out.println("日期参数不可为空")
} }*/
return dif; return dif;
} }
...@@ -339,7 +340,7 @@ public class LocalDateUtil { ...@@ -339,7 +340,7 @@ public class LocalDateUtil {
&& (rightStartDate.equals(leftEndDate) || rightStartDate.isBefore(leftEndDate))); && (rightStartDate.equals(leftEndDate) || rightStartDate.isBefore(leftEndDate)));
} }
public static void main(String[] args) { /*public static void main(String[] args)
System.out.println(parseLocalDate("2022-8-3")); System.out.println(parseLocalDate("2022-8-3"))
} }*/
} }
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<configuration debug="false" scan="false"> <configuration debug="false" scan="false">
<springProperty scop="context" name="spring.application.name" source="spring.application.name" defaultValue=""/> <springProperty scop="context" name="springAppName" source="spring.application.name" defaultValue=""/>
<property name="log.path" value="logs/${spring.application.name}"/> <springProperty scop="context" name="springAppActive" source="spring.profiles.active" defaultValue=""/>
<property name="log.path" value="logs/${springAppName}"/>
<!-- 彩色日志格式 --> <!-- 彩色日志格式 -->
<property name="CONSOLE_LOG_PATTERN" <property name="CONSOLE_LOG_PATTERN"
value="${CONSOLE_LOG_PATTERN:-%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}"/> value="${CONSOLE_LOG_PATTERN:-%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}"/>
...@@ -49,11 +50,50 @@ ...@@ -49,11 +50,50 @@
</appender> </appender>
<!-- Level: FATAL 0 ERROR 3 WARN 4 INFO 6 DEBUG 7 --> <!--邮件提醒-->
<root level="error"> <appender name="MAIL" class="ch.qos.logback.classic.net.SMTPAppender">
<appender-ref ref="console"/> <smtpHost>smtp.exmail.qq.com</smtpHost>
<appender-ref ref="debug"/> <smtpPort>465</smtpPort>
<appender-ref ref="error"/> <username>information@wanxin-holdings.com</username>
</root> <password>QmdCaQSPmCAQEddd</password>
<SSL>true</SSL>
<asynchronousSending>true</asynchronousSending>
<to>wangpeng@wanxin-holdings.com,fangxinjiang@wanxin-holdings.com,hongguangwu@wanxin-holdings.com</to>
<from>information@wanxin-holdings.com</from>
<subject>hro-mvp ${springAppActive}环境 ${springAppName}服务: %-20msg 错误</subject>
<charsetEncoding>UTF-8</charsetEncoding>
<cyclicBufferTracker class="ch.qos.logback.core.spi.CyclicBufferTracker">
<!-- &lt;!&ndash; 每个电子邮件只发送一个日志条目 &ndash;&gt;-->
<bufferSize>1</bufferSize>
</cyclicBufferTracker>
<layout class="ch.qos.logback.classic.html.HTMLLayout"/>
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>ERROR</level>
</filter>
</appender>
<springProfile name="prd">
<root level="error">
<appender-ref ref="console"/>
<appender-ref ref="debug"/>
<appender-ref ref="error"/>
<appender-ref ref="MAIL"/>
</root>
</springProfile>
<springProfile name="dev">
<root level="error">
<appender-ref ref="console"/>
<appender-ref ref="debug"/>
<appender-ref ref="error"/>
</root>
</springProfile>
<springProfile name="test">
<!-- Level: FATAL 0 ERROR 3 WARN 4 INFO 6 DEBUG 7 -->
<root level="error">
<appender-ref ref="console"/>
<appender-ref ref="debug"/>
<appender-ref ref="error"/>
</root>
</springProfile>
</configuration> </configuration>
...@@ -49,5 +49,16 @@ public class EkpTask { ...@@ -49,5 +49,16 @@ public class EkpTask {
log.info("------------定时生成昨日未生成的入账明细数据-定时任务结束------------"); log.info("------------定时生成昨日未生成的入账明细数据-定时任务结束------------");
} }
/**
* @Author hgw
* @Description 每小时获取银企付款结果
* @Date 2024-11-22 16:52:28
**/
public void doGetEkpBankStatus() {
log.info("------------每小时获取银企付款结果-定时任务开始------------");
HttpDaprUtil.invokeMethodPost(daprEkpProperties.getAppUrl(),daprEkpProperties.getAppId(),"/icbcIssue/inner/doGetEkpBankStatus","", Object.class, SecurityConstants.FROM_IN);
log.info("------------每小时获取银企付款结果-定时任务结束------------");
}
} }
\ No newline at end of file
...@@ -25,7 +25,7 @@ public class MailServiceImpl implements MailService { ...@@ -25,7 +25,7 @@ public class MailServiceImpl implements MailService {
mailMessage.setText("你好 hello world"); mailMessage.setText("你好 hello world");
mailMessage.setSubject("测试Spring邮箱服务"); mailMessage.setSubject("测试Spring邮箱服务");
mailSender.send(mailMessage); mailSender.send(mailMessage);
System.out.println("====完成发送!===="); //System.out.println("====完成发送!====")
return null; return null;
} }
} }
...@@ -380,4 +380,10 @@ public class TOrder implements Serializable { ...@@ -380,4 +380,10 @@ public class TOrder implements Serializable {
@Schema(description = "其他项费用") @Schema(description = "其他项费用")
private String otherExpenses; private String otherExpenses;
/**
* 附件ID集合
*/
@Schema(description = "附件ID集合")
private String attIds;
} }
\ No newline at end of file
/*
* 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.order.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 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 java.util.Date;
/**
* 项目订单附件同步日志信息
*
* @author fxj
* @date 2024-11-15 17:21:46
*/
@Data
@TableName("t_order_file_sync_log")
@EqualsAndHashCode(callSuper = true)
@Schema(description = "项目订单附件同步日志信息")
public class TOrderFileSyncLog extends BaseEntity {
/**
* 主键
*/
@TableId(type = IdType.ASSIGN_ID)
@ExcelProperty("主键")
@Schema(description = "主键")
private String id;
/**
* 项目单号
*/
@ExcelAttribute(name = "项目单号", maxLength = 30)
@Length(max = 30, message = "项目单号不能超过30个字符")
@ExcelProperty("项目单号")
@Schema(description = "项目单号")
private String orderNo;
/**
* 附件IDS
*/
@ExcelAttribute(name = "附件IDS", maxLength = 500)
@Length(max = 500, message = "附件IDS不能超过500个字符")
@ExcelProperty("附件IDS")
@Schema(description = "附件IDS")
private String attIds;
/**
* 失败原因
*/
@ExcelAttribute(name = "失败原因")
@ExcelProperty("失败原因")
@Schema(description = "失败原因")
private String reason;
/**
* 重试结果:0 成功 1 失败
*/
@ExcelAttribute(name = "重试结果:0 成功 1 失败", maxLength = 1)
@Length(max = 1, message = "重试结果:0 成功 1 失败不能超过1个字符")
@ExcelProperty("重试结果:0 成功 1 失败")
@Schema(description = "重试结果:0 成功 1 失败")
private String flag;
}
...@@ -420,6 +420,10 @@ public class OrderAddVO implements Serializable { ...@@ -420,6 +420,10 @@ public class OrderAddVO implements Serializable {
private MultipartFile[] salaryHandoverFile; private MultipartFile[] salaryHandoverFile;
/**
* 附件ID集合
*/
@Schema(description = "附件ID集合")
private String attIds;
} }
...@@ -32,4 +32,10 @@ public class OrderAttVo implements Serializable { ...@@ -32,4 +32,10 @@ public class OrderAttVo implements Serializable {
@Schema(description = "附件") @Schema(description = "附件")
private MultipartFile[] file; private MultipartFile[] file;
/**
* 附件ID
*/
@Schema(description = "附件ID")
private String fileIds;
} }
/*
* 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.order.vo;
import com.yifu.cloud.plus.v1.yifu.order.entity.TOrderFileSyncLog;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
/**
* 项目订单附件同步日志信息
*
* @author fxj
* @date 2024-11-15 17:21:46
*/
@Data
public class TOrderFileSyncLogSearchVo extends TOrderFileSyncLog {
/**
* 多选导出或删除等操作
*/
@Schema(description = "选中ID,多个逗号分割")
private String ids;
/**
* @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.order.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;
/**
* 项目订单附件同步日志信息
*
* @author fxj
* @date 2024-11-15 17:21:46
*/
@Data
public class TOrderFileSyncLogVo extends RowIndex implements Serializable {
/**
* 主键
*/
@TableId(type = IdType.ASSIGN_ID)
@NotBlank(message = "主键 不能为空")
@Length(max = 32, message = "主键 不能超过32 个字符")
@ExcelAttribute(name = "主键", isNotEmpty = true, errorInfo = "主键 不能为空", maxLength = 32)
@Schema(description = "主键")
@ExcelProperty("主键")
private String id;
/**
* 项目单号
*/
@Length(max = 30, message = "项目单号 不能超过30 个字符")
@ExcelAttribute(name = "项目单号", maxLength = 30)
@Schema(description = "项目单号")
@ExcelProperty("项目单号")
private String orderNo;
/**
* 附件IDS
*/
@Length(max = 500, message = "附件IDS 不能超过500 个字符")
@ExcelAttribute(name = "附件IDS", maxLength = 500)
@Schema(description = "附件IDS")
@ExcelProperty("附件IDS")
private String attIds;
/**
* 失败原因
*/
@ExcelAttribute(name = "失败原因")
@Schema(description = "失败原因")
@ExcelProperty("失败原因")
private String reason;
/**
* 重试结果:0 成功 1 失败
*/
@Length(max = 1, message = "重试结果:0 成功 1 失败 不能超过1 个字符")
@ExcelAttribute(name = "重试结果:0 成功 1 失败", maxLength = 1)
@Schema(description = "重试结果:0 成功 1 失败")
@ExcelProperty("重试结果:0 成功 1 失败")
private String flag;
}
...@@ -28,10 +28,10 @@ public class EkpOrderFileTask { ...@@ -28,10 +28,10 @@ public class EkpOrderFileTask {
* @return * @return
**/ **/
@Async @Async
public void receiveOrderNew(InputStream inputStream, String file1, String orderNo, String fileName, String originalFileName){ public void receiveOrderNew(InputStream inputStream, String file1, String orderNo, String fileName, String originalFileName,String fileIds){
synchronized (this){ synchronized (this){
try { try {
orderService.receiveOrderNew(inputStream,file1,orderNo,fileName,originalFileName); orderService.receiveOrderNew(inputStream,file1,orderNo,fileName,originalFileName,fileIds);
} catch (IOException e) { } catch (IOException e) {
log.error("订单附件上传异常:",e); log.error("订单附件上传异常:",e);
} }
......
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