Commit 39d65859 authored by hongguangwu's avatar hongguangwu

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

parents bf51de7b 2af1d1aa
...@@ -18,6 +18,7 @@ ...@@ -18,6 +18,7 @@
package com.yifu.cloud.plus.v1.yifu.archives.entity; package com.yifu.cloud.plus.v1.yifu.archives.entity;
import com.alibaba.excel.annotation.ExcelProperty; import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.annotation.write.style.HeadFontStyle;
import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableName;
...@@ -29,6 +30,7 @@ import lombok.EqualsAndHashCode; ...@@ -29,6 +30,7 @@ import lombok.EqualsAndHashCode;
import org.hibernate.validator.constraints.Length; import org.hibernate.validator.constraints.Length;
import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotBlank;
import java.math.BigDecimal;
/** /**
* 社保购买规则明细表 * 社保购买规则明细表
...@@ -150,5 +152,48 @@ public class TAutoSocialRuleRel extends BaseEntity { ...@@ -150,5 +152,48 @@ public class TAutoSocialRuleRel extends BaseEntity {
@Schema(description = "项目ID") @Schema(description = "项目ID")
private String deptId; private String deptId;
/**
* 缴纳地-省(社保或公积金)
*/
@ExcelAttribute(name = "缴纳地-省(社保或公积金)")
@Schema(description = "缴纳地-省(社保或公积金)")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("缴纳地-省(社保或公积金)")
private Integer province;
/**
* 缴纳地-市(社保或公积金)
*/
@ExcelAttribute(name = "缴纳地-市(社保或公积金)")
@Schema(description = "缴纳地-市(社保或公积金)")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("缴纳地-市(社保或公积金)")
private Integer city;
/**
* 缴纳地-县(社保或公积金)
*/
@ExcelAttribute(name = "缴纳地-县(社保或公积金)")
@Schema(description = "缴纳地-县(社保或公积金)")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("缴纳地-县(社保或公积金)")
private Integer town;
/**
* 基数上限(社保或公积金)
*/
@ExcelAttribute(name = "基数上限(社保或公积金)")
@Schema(description = "基数上限(社保或公积金)")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("基数上限(社保或公积金)")
private BigDecimal upperLimit;
/**
* 基数下限(社保或公积金)
*/
@ExcelAttribute(name = "基数下限(社保或公积金)")
@Schema(description = "基数下限(社保或公积金)")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("基数下限(社保或公积金)")
private BigDecimal lowerLimit;
} }
...@@ -41,6 +41,14 @@ public class TDispatchInfoPreVo extends RowIndex implements Serializable { ...@@ -41,6 +41,14 @@ public class TDispatchInfoPreVo extends RowIndex implements Serializable {
@Schema(description = "员工身份证") @Schema(description = "员工身份证")
@ExcelProperty("员工身份证") @ExcelProperty("员工身份证")
private String empIdcard; private String empIdcard;
/**
* 手机号码
*/
@ExcelAttribute(name = "手机号码", maxLength = 20)
@Length(max = 20, message = "手机号码不能超过20个字符")
@ExcelProperty("手机号码")
@Schema(description = "手机号码")
private String phone;
/** /**
* 社保购买状态,0待确认,1待派单,2派单失败,3待审核,4审核不通过,5待办理,6办理中,7办理成功,8办理失败,9部分办理失败 * 社保购买状态,0待确认,1待派单,2派单失败,3待审核,4审核不通过,5待办理,6办理中,7办理成功,8办理失败,9部分办理失败
*/ */
......
...@@ -763,7 +763,7 @@ public class EmployeeRegistrationPreServiceImpl extends ServiceImpl<EmployeeRegi ...@@ -763,7 +763,7 @@ public class EmployeeRegistrationPreServiceImpl extends ServiceImpl<EmployeeRegi
} }
//1.9.16社保自动化校验逻辑 //1.9.16社保自动化校验逻辑
if (employeeRegistrationPre.getServerItem().contains("社保购买")) { if (employeeRegistrationPre.getServerItem().contains("社保")) {
//根据身份证号码和项目编号查询合同 //根据身份证号码和项目编号查询合同
TEmployeeAutoRegistCheckVo cardVo = new TEmployeeAutoRegistCheckVo(); TEmployeeAutoRegistCheckVo cardVo = new TEmployeeAutoRegistCheckVo();
cardVo.setEmpIdcard(employeeRegistrationPre.getEmpIdcard()); cardVo.setEmpIdcard(employeeRegistrationPre.getEmpIdcard());
......
...@@ -42,6 +42,11 @@ ...@@ -42,6 +42,11 @@
<result property="createTime" column="CREATE_TIME"/> <result property="createTime" column="CREATE_TIME"/>
<result property="updateBy" column="UPDATE_BY"/> <result property="updateBy" column="UPDATE_BY"/>
<result property="updateTime" column="UPDATE_TIME"/> <result property="updateTime" column="UPDATE_TIME"/>
<result property="upperLimit" column="UPPER_LIMIT"/>
<result property="lowerLimit" column="LOWER_LIMIT"/>
<result property="province" column="PROVINCE"/>
<result property="city" column="CITY"/>
<result property="town" column="TOWN"/>
</resultMap> </resultMap>
<sql id="Base_Column_List"> <sql id="Base_Column_List">
a.ID, a.ID,
...@@ -62,7 +67,12 @@ ...@@ -62,7 +67,12 @@
a.UPDATE_BY, a.UPDATE_BY,
a.UPDATE_NAME, a.UPDATE_NAME,
a.UPDATE_TIME, a.UPDATE_TIME,
a.CONFIG_HOUSE_NAME a.CONFIG_HOUSE_NAME,
a.PROVINCE,
a.CITY,
a.TOWN,
a.UPPER_LIMIT,
a.LOWER_LIMIT
</sql> </sql>
<sql id="tAutoSocialRuleRel_where"> <sql id="tAutoSocialRuleRel_where">
<if test="tAutoSocialRuleRel != null"> <if test="tAutoSocialRuleRel != null">
......
...@@ -643,7 +643,7 @@ public class EmployeeRegistrationServiceImpl extends ServiceImpl<EmployeeRegistr ...@@ -643,7 +643,7 @@ public class EmployeeRegistrationServiceImpl extends ServiceImpl<EmployeeRegistr
} }
} }
//1.9.16社保自动化校验逻辑 //1.9.16社保自动化校验逻辑
if (preVo.getServerItem().contains("社保购买")) { if (preVo.getServerItem().contains("社保")) {
//根据身份证号码和项目编号查询合同 //根据身份证号码和项目编号查询合同
R<Boolean> socialFlag = socialDaprUtils.selectExitEmpSocial(cardVo); R<Boolean> socialFlag = socialDaprUtils.selectExitEmpSocial(cardVo);
//是否已签署为是需要判断合同是否在用或者流程中 //是否已签署为是需要判断合同是否在用或者流程中
...@@ -706,7 +706,7 @@ public class EmployeeRegistrationServiceImpl extends ServiceImpl<EmployeeRegistr ...@@ -706,7 +706,7 @@ public class EmployeeRegistrationServiceImpl extends ServiceImpl<EmployeeRegistr
initContractPreInfo(registration, preVo.getEmployeeContractPreVos(), user, domainR.getData()); initContractPreInfo(registration, preVo.getEmployeeContractPreVos(), user, domainR.getData());
} }
//服务类型包含社保购买时 //服务类型包含社保购买时
if (preVo.getServerItem().contains("社保购买") && (null != preVo.getExitSocialInfoList() if (preVo.getServerItem().contains("社保") && (null != preVo.getExitSocialInfoList()
|| null != preVo.getDispatchInfoPreVo())) { || null != preVo.getDispatchInfoPreVo())) {
//生成社保待购买或者已购买数据 //生成社保待购买或者已购买数据
if (null != preVo.getDispatchInfoPreVo()) { if (null != preVo.getDispatchInfoPreVo()) {
...@@ -990,7 +990,7 @@ public class EmployeeRegistrationServiceImpl extends ServiceImpl<EmployeeRegistr ...@@ -990,7 +990,7 @@ public class EmployeeRegistrationServiceImpl extends ServiceImpl<EmployeeRegistr
} }
//1.9.16社保自动化校验逻辑 //1.9.16社保自动化校验逻辑
if (preVo.getServerItem().contains("社保购买") && null != preVo.getDispatchInfoPreVo()) { if (preVo.getServerItem().contains("社保") && null != preVo.getDispatchInfoPreVo()) {
//根据身份证号码和项目编号查询合同 //根据身份证号码和项目编号查询合同
flag = socialDaprUtils.selectExitEmpSocial(cardVo); flag = socialDaprUtils.selectExitEmpSocial(cardVo);
//是否已签署为否需要判断是否在用或者流程中的合同 //是否已签署为否需要判断是否在用或者流程中的合同
...@@ -1044,7 +1044,7 @@ public class EmployeeRegistrationServiceImpl extends ServiceImpl<EmployeeRegistr ...@@ -1044,7 +1044,7 @@ public class EmployeeRegistrationServiceImpl extends ServiceImpl<EmployeeRegistr
initContractPreInfo(registration, employeeContractPreVo, user, domainR.getData()); initContractPreInfo(registration, employeeContractPreVo, user, domainR.getData());
} }
//服务类型包含社保购买时 //服务类型包含社保购买时
if (preVo.getServerItem().contains("社保购买") && (null != preVo.getExitSocialInfoList() if (preVo.getServerItem().contains("社保") && (null != preVo.getExitSocialInfoList()
|| null != preVo.getDispatchInfoPreVo())) { || null != preVo.getDispatchInfoPreVo())) {
//生成社保待购买或者已购买数据 //生成社保待购买或者已购买数据
if (null != preVo.getDispatchInfoPreVo()) { if (null != preVo.getDispatchInfoPreVo()) {
...@@ -1206,7 +1206,7 @@ public class EmployeeRegistrationServiceImpl extends ServiceImpl<EmployeeRegistr ...@@ -1206,7 +1206,7 @@ public class EmployeeRegistrationServiceImpl extends ServiceImpl<EmployeeRegistr
initContractPreInfo(registrationNow, employeeContractPreVo, user, domainR.getData()); initContractPreInfo(registrationNow, employeeContractPreVo, user, domainR.getData());
} }
//服务类型包含社保购买时 //服务类型包含社保购买时
if (preVo.getServerItem().contains("社保购买") && (null != preVo.getExitSocialInfoList() if (preVo.getServerItem().contains("社保") && (null != preVo.getExitSocialInfoList()
|| null != preVo.getDispatchInfoPreVo())) { || null != preVo.getDispatchInfoPreVo())) {
//生成社保待购买或者已购买数据 //生成社保待购买或者已购买数据
initSocialPreInfo(registrationNow, preVo.getDispatchInfoPreVo(), user, domainR.getData()); initSocialPreInfo(registrationNow, preVo.getDispatchInfoPreVo(), user, domainR.getData());
...@@ -1713,6 +1713,7 @@ public class EmployeeRegistrationServiceImpl extends ServiceImpl<EmployeeRegistr ...@@ -1713,6 +1713,7 @@ public class EmployeeRegistrationServiceImpl extends ServiceImpl<EmployeeRegistr
preVo.setJoinLeaveDate(registration.getJoinLeaveDate()); preVo.setJoinLeaveDate(registration.getJoinLeaveDate());
preVo.setDeptNo(registration.getDeptNo()); preVo.setDeptNo(registration.getDeptNo());
preVo.setEmpName(registration.getEmployeeName()); preVo.setEmpName(registration.getEmployeeName());
preVo.setPhone(registration.getEmpPhone());
preVo.setPosition(registration.getPosition()); preVo.setPosition(registration.getPosition());
preVo.setEmpIdcard(registration.getEmpIdcard()); preVo.setEmpIdcard(registration.getEmpIdcard());
preVo.setCreateBy(user.getId()); preVo.setCreateBy(user.getId());
...@@ -1720,13 +1721,18 @@ public class EmployeeRegistrationServiceImpl extends ServiceImpl<EmployeeRegistr ...@@ -1720,13 +1721,18 @@ public class EmployeeRegistrationServiceImpl extends ServiceImpl<EmployeeRegistr
preVo.setUpdateBy(user.getId()); preVo.setUpdateBy(user.getId());
preVo.setTypeSub(CommonConstants.ZERO_STRING); preVo.setTypeSub(CommonConstants.ZERO_STRING);
preVo.setProcessStatus(CommonConstants.ZERO_STRING); preVo.setProcessStatus(CommonConstants.ZERO_STRING);
preVo.setDispatchItem("养老、医疗、生育、失业、工伤、大病");
if (CommonConstants.ZERO_STRING.equals(preVo.getIsCreateDate()) && Common.isEmpty(preVo.getSocialStartDate())) {
preVo.setSocialStartDate(registration.getJoinLeaveDate());
}
//如果自动触发派增为是,计算派单发起时间和派单确认时间 //如果自动触发派增为是,计算派单发起时间和派单确认时间
if (Common.isNotNull(preVo.getIsAutoDis()) && CommonConstants.ZERO_STRING.equals(preVo.getIsAutoDis()) if (Common.isNotNull(preVo.getIsAutoDis()) && CommonConstants.ZERO_STRING.equals(preVo.getIsAutoDis())
&& Common.isNotNull(preVo.getExpectedCollectionType())) { && Common.isNotNull(preVo.getExpectedCollectionType())) {
TEmployeeContractDateVo vo = new TEmployeeContractDateVo(); TEmployeeContractDateVo vo = new TEmployeeContractDateVo();
vo.setMonthAfter(Integer.parseInt(preVo.getExpectedCollectionType())); vo.setMonthAfter(Integer.parseInt(preVo.getExpectedCollectionType()));
vo.setYearAfter(0); vo.setYearAfter(0);
vo.setRegistDate(preVo.getJoinLeaveDate()); vo.setRegistDate(registration.getJoinLeaveDate());
Date date = this.addYearsMonths(vo); Date date = this.addYearsMonths(vo);
TEmployeeInsuranceWorkDayVo dayVo = new TEmployeeInsuranceWorkDayVo(); TEmployeeInsuranceWorkDayVo dayVo = new TEmployeeInsuranceWorkDayVo();
dayVo.setType(CommonConstants.TWO_STRING); dayVo.setType(CommonConstants.TWO_STRING);
......
...@@ -314,4 +314,17 @@ public class SocialTask { ...@@ -314,4 +314,17 @@ public class SocialTask {
"/tdispatchinfopre/inner/pushDisConfrimSocial","", Void.class, SecurityConstants.FROM_IN); "/tdispatchinfopre/inner/pushDisConfrimSocial","", Void.class, SecurityConstants.FROM_IN);
log.info("-------------每天三点二十批量派单社保-定时任务开始------------"); log.info("-------------每天三点二十批量派单社保-定时任务开始------------");
} }
/**
* 每天10点推送社保办理失败的信息给申请人,异常给地址办理人员
* @author fangxj
* @param
* @return void
*/
public void pushSocialhandleFailMessage() {
log.info("-------------每天10点推送社保办理失败的信息给申请人,异常给地址办理人员开始------------");
HttpDaprUtil.invokeMethodPost(daprProperties.getAppUrl(), daprProperties.getAppId(),
"/tsocialalertinfo/inner/createAndSendSocialAlert","", Void.class, SecurityConstants.FROM_IN);
log.info("-------------每天10点推送社保办理失败的信息给申请人,异常给地址办理人员结束------------");
}
} }
...@@ -49,6 +49,14 @@ public class TDispatchInfoPre extends BaseEntity { ...@@ -49,6 +49,14 @@ public class TDispatchInfoPre extends BaseEntity {
@ExcelProperty("身份证号") @ExcelProperty("身份证号")
@Schema(description = "身份证号") @Schema(description = "身份证号")
private String empIdcard; private String empIdcard;
/**
* 手机号码
*/
@ExcelAttribute(name = "手机号码", maxLength = 20)
@Length(max = 20, message = "手机号码不能超过20个字符")
@ExcelProperty("手机号码")
@Schema(description = "手机号码")
private String phone;
/** /**
* 社保购买状态,0待确认,1待派单,2派单失败,3待审核,4审核不通过,5待办理,6办理中,7办理成功,8办理失败,9部分办理失败 * 社保购买状态,0待确认,1待派单,2派单失败,3待审核,4审核不通过,5待办理,6办理中,7办理成功,8办理失败,9部分办理失败
*/ */
...@@ -385,7 +393,16 @@ public class TDispatchInfoPre extends BaseEntity { ...@@ -385,7 +393,16 @@ public class TDispatchInfoPre extends BaseEntity {
@Schema(description = "派单id") @Schema(description = "派单id")
private String dispatcherId; private String dispatcherId;
/**
* 社保公积金查询id
*/
@ExcelAttribute(name = "社保公积金查询id")
@ExcelProperty("社保公积金查询id")
@Schema(description = "社保公积金查询id")
private String socialFundId;
@Schema(description = "发起失败原因") @Schema(description = "发起失败原因")
@TableField(updateStrategy = FieldStrategy.IGNORED)
private String errorInfo; private String errorInfo;
@Schema(description = "发起失败时间") @Schema(description = "发起失败时间")
...@@ -393,6 +410,7 @@ public class TDispatchInfoPre extends BaseEntity { ...@@ -393,6 +410,7 @@ public class TDispatchInfoPre extends BaseEntity {
private Date errorTime; private Date errorTime;
@Schema(description = "派单审核/办理不通过原因") @Schema(description = "派单审核/办理不通过原因")
@TableField(updateStrategy = FieldStrategy.IGNORED)
private String errorBackInfo; private String errorBackInfo;
/** /**
......
/*
* 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.social.entity;
import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.annotation.write.style.ColumnWidth;
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.mybatis.base.BaseEntity;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
import com.yifu.cloud.plus.v1.yifu.common.core.constant.ExcelAttribute;
import org.hibernate.validator.constraints.Length;
import javax.validation.constraints.NotBlank;
import java.time.LocalDateTime;
/**
* @author fxj
* @Description 社保办理失败通知信息
* @date 2025-10-15 14:50:53
*/
@Data
@TableName("t_social_alert_info")
@EqualsAndHashCode(callSuper = true)
@Schema(description = "社保办理失败通知信息")
public class TSocialAlertInfo extends BaseEntity {
/**
* id
*/
@TableId(type = IdType.ASSIGN_ID)
@ExcelProperty("id")
@Schema(description = "id")
private String id;
/**
* 项目编码
*/
@ExcelAttribute(name = "项目编码", maxLength = 50)
@Length(max = 50, message = "项目编码不能超过50个字符")
@ExcelProperty("项目编码")
@Schema(description = "项目编码")
private String deptNo;
/**
* 项目名称
*/
@ExcelAttribute(name = "项目名称", maxLength = 100)
@Length(max = 100, message = "项目名称不能超过100个字符")
@ExcelProperty("项目名称")
@Schema(description = "项目名称")
private String deptName;
/**
* 类型:0社保1公积金
*/
@ExcelAttribute(name = "类型:0社保1公积金", maxLength = 255)
@Length(max = 255, message = "类型:0社保1公积金不能超过255个字符")
@ExcelProperty("类型:0社保1公积金")
@Schema(description = "类型:0社保1公积金")
private String type;
/**
* 员工姓名
*/
@ExcelAttribute(name = "员工姓名", maxLength = 20)
@Length(max = 20, message = "员工姓名不能超过20个字符")
@ExcelProperty("员工姓名")
@Schema(description = "员工姓名")
private String empName;
/**
* 员工身份证
*/
@ExcelAttribute(name = "员工身份证", maxLength = 30)
@Length(max = 30, message = "员工身份证不能超过30个字符")
@ExcelProperty("员工身份证")
@Schema(description = "员工身份证")
private String empIdcard;
/**
* 失败原因
*/
@ExcelAttribute(name = "失败原因", maxLength = 200)
@Length(max = 200, message = "失败原因不能超过200个字符")
@ExcelProperty("失败原因")
@Schema(description = "失败原因")
private String reason;
/**
* 接收人
*/
@ExcelAttribute(name = "接收人", maxLength = 36)
@Length(max = 36, message = "接收人不能超过36个字符")
@ExcelProperty("接收人")
@Schema(description = "接收人")
private String receiveUser;
/**
* 办理事时间
*/
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern="yyyy-MM-dd HH:mm:ss")
@Schema(description = "办理事时间")
private LocalDateTime handleTime;
/**
* 户名称
*/
@ExcelAttribute(name = "户名称", maxLength = 20)
@Length(max = 20, message = "户名称不能超过20个字符")
@ExcelProperty("户名称")
@Schema(description = "户名称")
private String houseHoldName;
/**
* 缴纳地-省
*/
@ExcelAttribute(name = "社保缴纳地-省", maxLength = 32,isArea = true,needExport = true)
@Schema(description = "社保缴纳地-省")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("社保缴纳地-省" )
private String socialProvince;
/**
* 缴纳地-市
*/
@ExcelAttribute(name = "社保缴纳地-市", maxLength = 32, isArea = true, parentField = "socialProvince",needExport = true)
@Schema(description = "社保缴纳地-市")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("社保缴纳地-市" )
private String socialCity;
/**
* 缴纳地-县
*/
@ExcelAttribute(name = "社保缴纳地-县", maxLength = 32, isArea = true, parentField = "socialCity",needExport = true)
@Schema(description = "社保缴纳地-县")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("社保缴纳地-县" )
private String socialTown;
/**
* 公积金缴纳地-省
*/
@ExcelAttribute(name = "公积金缴纳地-省", maxLength = 32, isArea = true, needExport = true)
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("公积金缴纳地-省" )
private String fundProvince;
/**
* 公积金缴纳地-市
*/
@ExcelAttribute(name = "公积金缴纳地-市", maxLength = 32, isArea = true, parentField = "fundProvince",needExport = true)
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("公积金缴纳地-市" )
private String fundCity;
/**
* 公积金缴纳地-县
*/
@ExcelAttribute(name = "公积金缴纳地-县", maxLength = 32, isArea = true, parentField = "fundCity",needExport = true)
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("公积金缴纳地-县" )
private String fundTown;
/**
* 派单ID
*/
@ExcelAttribute(name = "派单ID", maxLength = 32)
@ExcelProperty("派单ID" )
private String dispatchId;
/**
* 申请人
*/
@ExcelAttribute(name = "申请人", maxLength = 32)
@ExcelProperty("申请人" )
private String applyName;
}
...@@ -2,7 +2,6 @@ package com.yifu.cloud.plus.v1.yifu.social.vo; ...@@ -2,7 +2,6 @@ package com.yifu.cloud.plus.v1.yifu.social.vo;
import com.alibaba.excel.annotation.ExcelProperty; import com.alibaba.excel.annotation.ExcelProperty;
import com.yifu.cloud.plus.v1.yifu.common.core.constant.ExcelAttribute; 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 io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data; import lombok.Data;
...@@ -16,7 +15,7 @@ import java.time.LocalDateTime; ...@@ -16,7 +15,7 @@ import java.time.LocalDateTime;
* @date 2025-09-30 16:40:07 * @date 2025-09-30 16:40:07
*/ */
@Data @Data
public class TDispatchInfoPreExportVo extends RowIndex implements Serializable { public class TDispatchInfoPreExportVo implements Serializable {
/** /**
* 项目名称 * 项目名称
*/ */
......
/*
* 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.social.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import com.yifu.cloud.plus.v1.yifu.social.entity.TSocialAlertInfo;
import lombok.Data;
import java.time.LocalDateTime;
/**
* @author fxj
* @date 2025-10-15 14:50:53
*/
@Data
public class TSocialAlertInfoSearchVo extends TSocialAlertInfo {
/**
* 多选导出或删除等操作
*/
@Schema(description = "选中ID,多个逗号分割")
private String ids;
/**
* 创建时间区间 [开始时间,结束时间]
*/
@Schema(description = "创建时间区间")
private LocalDateTime[] createTimes;
/**
* @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.social.vo;
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.vo.RowIndex;
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 com.yifu.cloud.plus.v1.yifu.common.core.constant.ExcelAttribute;
import org.hibernate.validator.constraints.Length;
import javax.validation.constraints.NotBlank;
import java.io.Serializable;
/**
* @author fxj
* @date 2025-10-15 14:50:53
*/
@Data
public class TSocialAlertInfoVo extends RowIndex implements Serializable {
/**
* id
*/
@TableId(type = IdType.ASSIGN_ID)
@NotBlank(message = "id 不能为空")
@Length(max = 32, message = "id 不能超过32 个字符")
@ExcelAttribute(name = "id", isNotEmpty = true, errorInfo = "id 不能为空", maxLength = 32)
@Schema(description = "id")
@ExcelProperty("id")
private String id;
/**
* 项目编码
*/
@Length(max = 50, message = "项目编码 不能超过50 个字符")
@ExcelAttribute(name = "项目编码", maxLength = 50)
@Schema(description = "项目编码")
@ExcelProperty("项目编码")
private String deptNo;
/**
* 项目名称
*/
@Length(max = 100, message = "项目名称 不能超过100 个字符")
@ExcelAttribute(name = "项目名称", maxLength = 100)
@Schema(description = "项目名称")
@ExcelProperty("项目名称")
private String deptName;
/**
* 类型:0社保1公积金
*/
@Length(max = 255, message = "类型:0社保1公积金 不能超过255 个字符")
@ExcelAttribute(name = "类型:0社保1公积金", maxLength = 255)
@Schema(description = "类型:0社保1公积金")
@ExcelProperty("类型:0社保1公积金")
private String type;
/**
* 员工姓名
*/
@Length(max = 20, message = "员工姓名 不能超过20 个字符")
@ExcelAttribute(name = "员工姓名", maxLength = 20)
@Schema(description = "员工姓名")
@ExcelProperty("员工姓名")
private String empName;
/**
* 员工身份证
*/
@Length(max = 30, message = "员工身份证 不能超过30 个字符")
@ExcelAttribute(name = "员工身份证", maxLength = 30)
@Schema(description = "员工身份证")
@ExcelProperty("员工身份证")
private String empIdcard;
/**
* 失败原因
*/
@Length(max = 200, message = "失败原因 不能超过200 个字符")
@ExcelAttribute(name = "失败原因", maxLength = 200)
@Schema(description = "失败原因")
@ExcelProperty("失败原因")
private String reason;
/**
* 接收人
*/
@Length(max = 36, message = "接收人 不能超过36 个字符")
@ExcelAttribute(name = "接收人", maxLength = 36)
@Schema(description = "接收人")
@ExcelProperty("接收人")
private String receiveUser;
}
/*
* 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.social.controller;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yifu.cloud.plus.v1.yifu.common.core.constant.CommonConstants;
import com.yifu.cloud.plus.v1.yifu.common.core.util.ErrorMessage;
import com.yifu.cloud.plus.v1.yifu.common.core.util.R;
import com.yifu.cloud.plus.v1.yifu.common.core.vo.YifuUser;
import com.yifu.cloud.plus.v1.yifu.common.log.annotation.SysLog;
import com.yifu.cloud.plus.v1.yifu.common.security.annotation.Inner;
import com.yifu.cloud.plus.v1.yifu.common.security.util.SecurityUtils;
import com.yifu.cloud.plus.v1.yifu.social.entity.TSocialAlertInfo;
import com.yifu.cloud.plus.v1.yifu.social.service.TSocialAlertInfoService;
import com.yifu.cloud.plus.v1.yifu.social.vo.TSocialAlertInfoSearchVo;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.RequiredArgsConstructor;
import lombok.SneakyThrows;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletResponse;
import java.util.List;
/**
* @author fxj
* @date 2025-10-15 14:50:53
*/
@RestController
@RequiredArgsConstructor
@RequestMapping("/tsocialalertinfo")
@Tag(name = "社保办理失败通知信息")
public class TSocialAlertInfoController {
private final TSocialAlertInfoService tSocialAlertInfoService;
/**
* 简单分页查询
*
* @param page 分页对象
* @param tSocialAlertInfo
* @return
*/
@Operation(description = "简单分页查询")
@GetMapping("/page")
public R<IPage<TSocialAlertInfo>> getTSocialAlertInfoPage(Page<TSocialAlertInfo> page, TSocialAlertInfoSearchVo tSocialAlertInfo) {
return new R<>(tSocialAlertInfoService.getTSocialAlertInfoPage(page, tSocialAlertInfo));
}
/**
* 不分页查询
*
* @param tSocialAlertInfo
* @return
*/
@Operation(summary = "不分页查询", description = "不分页查询")
@PostMapping("/noPage")
public R<List<TSocialAlertInfo>> getTSocialAlertInfoNoPage(@RequestBody TSocialAlertInfoSearchVo tSocialAlertInfo) {
YifuUser user = SecurityUtils.getUser();
if (null == user || null == user.getId()){
return R.failed(CommonConstants.USER_FAIL);
}
tSocialAlertInfo.setReceiveUser(user.getId());
return R.ok(tSocialAlertInfoService.noPageDiy(tSocialAlertInfo));
}
/**
* 通过id查询
*
* @param id id
* @return R
*/
@Operation(summary = "通过id查询", description = "通过id查询:hasPermission('social_tsocialalertinfo_get')")
@GetMapping("/{id}")
@PreAuthorize("@pms.hasPermission('social_tsocialalertinfo_get')")
public R<TSocialAlertInfo> getById(@PathVariable("id") String id) {
return R.ok(tSocialAlertInfoService.getById(id));
}
/**
* 新增
*
* @param tSocialAlertInfo
* @return R
*/
@Operation(summary = "新增", description = "新增:hasPermission('social_tsocialalertinfo_add')")
@SysLog("新增")
@PostMapping
@PreAuthorize("@pms.hasPermission('social_tsocialalertinfo_add')")
public R<Boolean> save(@RequestBody TSocialAlertInfo tSocialAlertInfo) {
return R.ok(tSocialAlertInfoService.save(tSocialAlertInfo));
}
/**
* 修改
*
* @param tSocialAlertInfo
* @return R
*/
@Operation(summary = "修改", description = "修改:hasPermission('social_tsocialalertinfo_edit')")
@SysLog("修改")
@PutMapping
@PreAuthorize("@pms.hasPermission('social_tsocialalertinfo_edit')")
public R<Boolean> updateById(@RequestBody TSocialAlertInfo tSocialAlertInfo) {
return R.ok(tSocialAlertInfoService.updateById(tSocialAlertInfo));
}
/**
* 通过id删除
*
* @param id id
* @return R
*/
@Operation(summary = "通过id删除", description = "通过id删除:hasPermission('social_tsocialalertinfo_del')")
@SysLog("通过id删除")
@DeleteMapping("/{id}")
@PreAuthorize("@pms.hasPermission('social_tsocialalertinfo_del')")
public R<Boolean> removeById(@PathVariable String id) {
return R.ok(tSocialAlertInfoService.removeById(id));
}
/**
* 批量导入
*
* @author fxj
* @date 2025-10-15 14:50:53
**/
@SneakyThrows
@Operation(description = "批量新增 hasPermission('social_tsocialalertinfo-batch-import')")
@SysLog("批量新增")
@PostMapping("/importListAdd")
@PreAuthorize("@pms.hasPermission('social_tsocialalertinfo-batch-import')")
public R<List<ErrorMessage>> importListAdd(@RequestBody MultipartFile file) {
return tSocialAlertInfoService.importDiy(file.getInputStream());
}
/**
* 批量导出
*
* @author fxj
* @date 2025-10-15 14:50:53
**/
@Operation(description = "导出 hasPermission('social_tsocialalertinfo-export')")
@PostMapping("/export")
@PreAuthorize("@pms.hasPermission('social_tsocialalertinfo-export')")
public void export(HttpServletResponse response, @RequestBody TSocialAlertInfoSearchVo searchVo) {
tSocialAlertInfoService.listExport(response, searchVo);
}
/**
* @Author fxj
* @Description 每天刷新办理失败的数据 并发送给申请人,如果申请人异常发给地市办理人,如果地市办理人异常 不处理
* @Date 15:14 2025/10/15
* @Param
* @return
**/
@Operation(description = "每天刷新办理失败的数据")
@Inner
@PostMapping("/inner/createAndSendSocialAlert")
public void createAndSendSocialAlert() {
tSocialAlertInfoService.createAndSendSocialAlert();
}
@Operation(description = "每天刷新办理失败的数据")
@PostMapping("/createAndSendSocialAlert2")
public void createAndSendSocialAlert2() {
tSocialAlertInfoService.createAndSendSocialAlert();
}
}
/*
* 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.social.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yifu.cloud.plus.v1.yifu.social.entity.TSocialAlertInfo;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* @author fxj
* @date 2025-10-15 14:50:53
*/
@Mapper
public interface TSocialAlertInfoMapper extends BaseMapper<TSocialAlertInfo> {
/**
* 简单分页查询
*
* @param tSocialAlertInfo
* @return
*/
IPage<TSocialAlertInfo> getTSocialAlertInfoPage(Page<TSocialAlertInfo> page, @Param("tSocialAlertInfo") TSocialAlertInfo tSocialAlertInfo);
List<TSocialAlertInfo> getTSocialAlertInfoList();
List<TSocialAlertInfo> getTFundAlertInfoList();
void deleteCUrrentDayData();
}
...@@ -21,10 +21,12 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; ...@@ -21,10 +21,12 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yifu.cloud.plus.v1.yifu.social.entity.TSocialfundHouseRes; import com.yifu.cloud.plus.v1.yifu.social.entity.TSocialfundHouseRes;
import org.apache.ibatis.annotations.MapKey;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import java.util.List; import java.util.List;
import java.util.Map;
/** /**
* 社保公积金户权限配置表 * 社保公积金户权限配置表
...@@ -58,4 +60,11 @@ public interface TSocialfundHouseResMapper extends BaseMapper<TSocialfundHouseRe ...@@ -58,4 +60,11 @@ public interface TSocialfundHouseResMapper extends BaseMapper<TSocialfundHouseRe
List<String> getSocialListByUserId(@Param("userId") String userId); List<String> getSocialListByUserId(@Param("userId") String userId);
/**
* 获取户名称与用户ID的映射关系
* key: 户名称(HOUSEHOLD)
* value: 用户ID列表,多个ID使用逗号分隔
* @return 户名称与用户ID的映射关系Map
*/
List<Map<String, String>> getHouseHoldUserMap();
} }
/*
* 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.social.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.yifu.cloud.plus.v1.yifu.social.entity.TSocialAlertInfo;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yifu.cloud.plus.v1.yifu.common.core.util.ErrorMessage;
import com.yifu.cloud.plus.v1.yifu.common.core.util.R;
import com.yifu.cloud.plus.v1.yifu.social.vo.TSocialAlertInfoSearchVo;
import javax.servlet.http.HttpServletResponse;
import java.io.InputStream;
import java.util.List;
/**
*
*
* @author fxj
* @date 2025-10-15 14:50:53
*/
public interface TSocialAlertInfoService extends IService<TSocialAlertInfo> {
/**
* 简单分页查询
* @param tSocialAlertInfo
* @return
*/
IPage<TSocialAlertInfo> getTSocialAlertInfoPage(Page<TSocialAlertInfo> page, TSocialAlertInfoSearchVo tSocialAlertInfo);
R<List<ErrorMessage>> importDiy(InputStream inputStream);
void listExport(HttpServletResponse response, TSocialAlertInfoSearchVo searchVo);
List<TSocialAlertInfo> noPageDiy(TSocialAlertInfoSearchVo searchVo);
void createAndSendSocialAlert();
}
...@@ -203,6 +203,9 @@ public class TDispatchInfoPreServiceImpl extends ServiceImpl<TDispatchInfoPreMap ...@@ -203,6 +203,9 @@ public class TDispatchInfoPreServiceImpl extends ServiceImpl<TDispatchInfoPreMap
if (Common.isNotNull(preVo.getExpectedConfirmTime())) { if (Common.isNotNull(preVo.getExpectedConfirmTime())) {
pre.setExpectedConfirmTime(LocalDateTimeUtils.dateToLocalDateTime(preVo.getExpectedConfirmTime())); pre.setExpectedConfirmTime(LocalDateTimeUtils.dateToLocalDateTime(preVo.getExpectedConfirmTime()));
} }
if (Common.isEmpty(pre.getDispatchItem())) {
preVo.setDispatchItem("养老、医疗、生育、失业、工伤、大病");
}
//如果自动触发派增为是,计算派单发起时间和派单确认时间 //如果自动触发派增为是,计算派单发起时间和派单确认时间
if (Common.isNotNull(preVo.getIsAutoDis()) && CommonConstants.ZERO_STRING.equals(preVo.getIsAutoDis()) if (Common.isNotNull(preVo.getIsAutoDis()) && CommonConstants.ZERO_STRING.equals(preVo.getIsAutoDis())
&& Common.isNotNull(preVo.getExpectedCollectionType()) && Common.isEmpty(preVo.getExpectedCollectionTime())) { && Common.isNotNull(preVo.getExpectedCollectionType()) && Common.isEmpty(preVo.getExpectedCollectionTime())) {
...@@ -339,7 +342,7 @@ public class TDispatchInfoPreServiceImpl extends ServiceImpl<TDispatchInfoPreMap ...@@ -339,7 +342,7 @@ public class TDispatchInfoPreServiceImpl extends ServiceImpl<TDispatchInfoPreMap
if (Common.isNotNull(disList)) { if (Common.isNotNull(disList)) {
//调用批量派单接口100条处理一次,同原合同派单保持一致 //调用批量派单接口100条处理一次,同原合同派单保持一致
List<ErrorMessage> errorMessageList = new ArrayList<>(); List<ErrorMessage> errorMessageList = new ArrayList<>();
dispatchInfoService.importTDispatchInfo(excelVOList, errorMessageList,user, null, new HashMap<>()); dispatchInfoService.importTDispatchInfo(disList, errorMessageList,user, null, new HashMap<>());
if (!errorMessageList.stream().allMatch(message -> message.getMessage().equals(CommonConstants.SAVE_SUCCESS))) { if (!errorMessageList.stream().allMatch(message -> message.getMessage().equals(CommonConstants.SAVE_SUCCESS))) {
errorMessageListAll.addAll(errorMessageList); errorMessageListAll.addAll(errorMessageList);
//更新社保状态为2发起失败 //更新社保状态为2发起失败
......
...@@ -40,6 +40,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; ...@@ -40,6 +40,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.google.common.collect.Lists; import com.google.common.collect.Lists;
import com.google.gson.JsonObject; import com.google.gson.JsonObject;
import com.yifu.cloud.plus.v1.yifu.admin.api.entity.SysArea; import com.yifu.cloud.plus.v1.yifu.admin.api.entity.SysArea;
import com.yifu.cloud.plus.v1.yifu.admin.api.entity.SysUser;
import com.yifu.cloud.plus.v1.yifu.admin.api.vo.AllUserNaVo; import com.yifu.cloud.plus.v1.yifu.admin.api.vo.AllUserNaVo;
import com.yifu.cloud.plus.v1.yifu.admin.api.vo.AreaVo; import com.yifu.cloud.plus.v1.yifu.admin.api.vo.AreaVo;
import com.yifu.cloud.plus.v1.yifu.archives.entity.TEmployeeContractInfo; import com.yifu.cloud.plus.v1.yifu.archives.entity.TEmployeeContractInfo;
...@@ -174,6 +175,9 @@ public class TDispatchInfoServiceImpl extends ServiceImpl<TDispatchInfoMapper, T ...@@ -174,6 +175,9 @@ public class TDispatchInfoServiceImpl extends ServiceImpl<TDispatchInfoMapper, T
@Autowired @Autowired
private TSocialFriendBackLogService socialFriendBackLogService; private TSocialFriendBackLogService socialFriendBackLogService;
@Autowired
private WxConfig wxConfig;
/** /**
* 派单信息记录表简单分页查询 * 派单信息记录表简单分页查询
* *
...@@ -650,7 +654,7 @@ public class TDispatchInfoServiceImpl extends ServiceImpl<TDispatchInfoMapper, T ...@@ -650,7 +654,7 @@ public class TDispatchInfoServiceImpl extends ServiceImpl<TDispatchInfoMapper, T
// 开始插入各种数据了 // 开始插入各种数据了
insertAllInfo(excelVOList, errorMessageList, empVoMap, res, socialsMap, fundsMap, socialFundAddMap, dispatchMap, excelVOTemp, dispatchPart, injury); insertAllInfo(excelVOList, errorMessageList, empVoMap, res, socialsMap, fundsMap, socialFundAddMap, dispatchMap, excelVOTemp, dispatchPart, injury);
// 清理map list 等数据 // 清理map list 等数据
Common.clear(excelVOList); // Common.clear(excelVOList);
Common.clear(empAddsMap); Common.clear(empAddsMap);
Common.clear(contractsMap); Common.clear(contractsMap);
Common.clear(projectsMap); Common.clear(projectsMap);
...@@ -1139,7 +1143,8 @@ public class TDispatchInfoServiceImpl extends ServiceImpl<TDispatchInfoMapper, T ...@@ -1139,7 +1143,8 @@ public class TDispatchInfoServiceImpl extends ServiceImpl<TDispatchInfoMapper, T
TDispatchInfoPre dispatchInfoPre = dispatchInfoPreMapper.selectById(preId); TDispatchInfoPre dispatchInfoPre = dispatchInfoPreMapper.selectById(preId);
if (Common.isNotNull(dispatchInfoPre)) { if (Common.isNotNull(dispatchInfoPre)) {
dispatchInfoPre.setProcessStatus(CommonConstants.THREE_STRING); dispatchInfoPre.setProcessStatus(CommonConstants.THREE_STRING);
dispatchInfoPre.setDispatcherId(socialFund.getId()); dispatchInfoPre.setDispatcherId(socialFund.getDispatchId());
dispatchInfoPre.setSocialFundId(socialFund.getId());
dispatchInfoPre.setErrorInfo(null); dispatchInfoPre.setErrorInfo(null);
dispatchInfoPre.setErrorTime(null); dispatchInfoPre.setErrorTime(null);
dispatchInfoPreMapper.updateById(dispatchInfoPre); dispatchInfoPreMapper.updateById(dispatchInfoPre);
...@@ -3688,7 +3693,7 @@ public class TDispatchInfoServiceImpl extends ServiceImpl<TDispatchInfoMapper, T ...@@ -3688,7 +3693,7 @@ public class TDispatchInfoServiceImpl extends ServiceImpl<TDispatchInfoMapper, T
if (null != socialInfo) { if (null != socialInfo) {
//派单审核通过更新社保待购买表的状态 //派单审核通过更新社保待购买表的状态
TDispatchInfoPre dispatchInfoPre = dispatchInfoPreMapper.selectOne(Wrappers.<TDispatchInfoPre>query().lambda() TDispatchInfoPre dispatchInfoPre = dispatchInfoPreMapper.selectOne(Wrappers.<TDispatchInfoPre>query().lambda()
.eq(TDispatchInfoPre::getDispatcherId, sf.getId()) .eq(TDispatchInfoPre::getSocialFundId, sf.getId())
.eq(TDispatchInfoPre::getProcessStatus, CommonConstants.THREE_STRING) .eq(TDispatchInfoPre::getProcessStatus, CommonConstants.THREE_STRING)
.last(CommonConstants.LAST_ONE_SQL)); .last(CommonConstants.LAST_ONE_SQL));
// 派增审核 // 派增审核
...@@ -3704,6 +3709,7 @@ public class TDispatchInfoServiceImpl extends ServiceImpl<TDispatchInfoMapper, T ...@@ -3704,6 +3709,7 @@ public class TDispatchInfoServiceImpl extends ServiceImpl<TDispatchInfoMapper, T
//审核通过更新状态 //审核通过更新状态
if (Common.isNotNull(dispatchInfoPre)) { if (Common.isNotNull(dispatchInfoPre)) {
dispatchInfoPre.setProcessStatus(CommonConstants.FIVE_STRING); dispatchInfoPre.setProcessStatus(CommonConstants.FIVE_STRING);
dispatchInfoPre.setErrorBackInfo(null);
dispatchInfoPreMapper.updateById(dispatchInfoPre); dispatchInfoPreMapper.updateById(dispatchInfoPre);
} }
//派增审核不通过 需要处理预估数据 //派增审核不通过 需要处理预估数据
...@@ -3723,6 +3729,7 @@ public class TDispatchInfoServiceImpl extends ServiceImpl<TDispatchInfoMapper, T ...@@ -3723,6 +3729,7 @@ public class TDispatchInfoServiceImpl extends ServiceImpl<TDispatchInfoMapper, T
dispatchInfoPre.setProcessStatus(CommonConstants.FOUR_STRING); dispatchInfoPre.setProcessStatus(CommonConstants.FOUR_STRING);
dispatchInfoPre.setErrorBackInfo(auditRemark); dispatchInfoPre.setErrorBackInfo(auditRemark);
dispatchInfoPreMapper.updateById(dispatchInfoPre); dispatchInfoPreMapper.updateById(dispatchInfoPre);
sendDisFalureMessageToWx(dispatchInfoPre);
} }
} }
socialInfo.setAuditTime(now); socialInfo.setAuditTime(now);
...@@ -4422,23 +4429,50 @@ public class TDispatchInfoServiceImpl extends ServiceImpl<TDispatchInfoMapper, T ...@@ -4422,23 +4429,50 @@ public class TDispatchInfoServiceImpl extends ServiceImpl<TDispatchInfoMapper, T
} }
//针对社保自动化过来的数据,办理更新待购买数据状态 //针对社保自动化过来的数据,办理更新待购买数据状态
TDispatchInfoPre dispatchInfoPre = dispatchInfoPreMapper.selectOne(Wrappers.<TDispatchInfoPre>query().lambda() TDispatchInfoPre dispatchInfoPre = dispatchInfoPreMapper.selectOne(Wrappers.<TDispatchInfoPre>query().lambda()
.eq(TDispatchInfoPre::getDispatcherId, sf.getId()) .eq(TDispatchInfoPre::getSocialFundId, sf.getId())
.eq(TDispatchInfoPre::getProcessStatus, CommonConstants.FIVE_STRING) .eq(TDispatchInfoPre::getProcessStatus, CommonConstants.FIVE_STRING)
.last(CommonConstants.LAST_ONE_SQL)); .last(CommonConstants.LAST_ONE_SQL));
if (Common.isNotNull(dispatchInfoPre)) { if (Common.isNotNull(dispatchInfoPre)) {
//此处状态可能会更新为 办理成功 办理中 部分办理失败和办理失败 //此处状态可能会更新为 办理成功 办理中 部分办理失败和办理失败
if (sf.getSocialStatus().equals(CommonConstants.TWO_STRING)) { if (sf.getSocialStatus().equals(CommonConstants.TWO_STRING)) {
dispatchInfoPre.setProcessStatus(CommonConstants.SIX_STRING); dispatchInfoPre.setProcessStatus(CommonConstants.SIX_STRING);
dispatchInfoPre.setErrorBackInfo(null);
} }
if (sf.getSocialStatus().equals(CommonConstants.FOUR_STRING)) { if (sf.getSocialStatus().equals(CommonConstants.FOUR_STRING)) {
dispatchInfoPre.setProcessStatus(CommonConstants.NINE_STRING); dispatchInfoPre.setProcessStatus(CommonConstants.NINE_STRING);
dispatchInfoPre.setErrorBackInfo(handleRemark); dispatchInfoPre.setErrorBackInfo(handleRemark);
StringBuffer errorTemp = new StringBuffer();
//针对部分办理失败更新社保待购买的派单项
if (CommonConstants.TWO_STRING.equals(sf.getPensionHandle())) {
errorTemp.append(DispatchConstants.DISPATCH_PENSION);
}
if (CommonConstants.TWO_STRING.equals(sf.getMedicalHandle())) {
errorTemp.append(DispatchConstants.DISPATCH_MEDICAL);
}
if (CommonConstants.TWO_STRING.equals(sf.getBirthHandle())) {
errorTemp.append(DispatchConstants.DISPATCH_BIRTH);
}
if (CommonConstants.TWO_STRING.equals(sf.getWorkInjuryHandle())) {
errorTemp.append(DispatchConstants.DISPATCH_INJURY);
}
if (CommonConstants.TWO_STRING.equals(sf.getUnemployHandle())) {
errorTemp.append(DispatchConstants.DISPATCH_UNEMP);
}
if (CommonConstants.TWO_STRING.equals(sf.getBigailmentHandle())) {
errorTemp.append(DispatchConstants.DISPATCH_BIGMAILMENT);
}
if (Common.isNotNull(errorTemp.toString())) {
dispatchInfoPre.setDispatchItem(errorTemp.deleteCharAt(errorTemp.length() - 1).toString());
}
sendDisFalureMessageToWx(dispatchInfoPre);
} }
if (sf.getSocialStatus().equals(CommonConstants.FIVE_STRING)) { if (sf.getSocialStatus().equals(CommonConstants.FIVE_STRING)) {
dispatchInfoPre.setProcessStatus(CommonConstants.EIGHT_STRING); dispatchInfoPre.setProcessStatus(CommonConstants.EIGHT_STRING);
dispatchInfoPre.setErrorBackInfo(handleRemark); dispatchInfoPre.setErrorBackInfo(handleRemark);
sendDisFalureMessageToWx(dispatchInfoPre);
} }
if (sf.getSocialStatus().equals(CommonConstants.THREE_STRING)) { if (sf.getSocialStatus().equals(CommonConstants.THREE_STRING)) {
dispatchInfoPre.setErrorBackInfo(null);
dispatchInfoPre.setProcessStatus(CommonConstants.SEVEN_STRING); dispatchInfoPre.setProcessStatus(CommonConstants.SEVEN_STRING);
} }
dispatchInfoPreMapper.updateById(dispatchInfoPre); dispatchInfoPreMapper.updateById(dispatchInfoPre);
...@@ -8784,4 +8818,45 @@ public class TDispatchInfoServiceImpl extends ServiceImpl<TDispatchInfoMapper, T ...@@ -8784,4 +8818,45 @@ public class TDispatchInfoServiceImpl extends ServiceImpl<TDispatchInfoMapper, T
} }
return R.failed("未找到反馈文件"); return R.failed("未找到反馈文件");
} }
//发送企业微信待办
private void sendDisFalureMessageToWx(TDispatchInfoPre pre) {
//获取前端客服
SysUser user;
if (Common.isEmpty(pre.getCustomerUserLoginName())) {
return;
}
R<SysUser> res = upmsDaprUtils.getSimpleUserByLoginName(pre.getCustomerUserLoginName());
if (Common.isNotNull(res) && Common.isNotNull(res.getData())) {
user = res.getData();
} else {
return;
}
StringBuilder sendUser = null;
if (Common.isNotKong(user.getWxMessage())) {
sendUser = new StringBuilder(user.getWxMessage());
}
if (sendUser != null) {
RestTemplate restTemplate = new RestTemplate();
Map<String, Object> requestMap = new HashMap<>();
Map<String, Object> textcard = new HashMap<>();
String authUrl = String.format(SecurityConstants.WX_GET_MESSAGE_AUTH_URL, wxConfig.getCorpid(), wxConfig.getDomainName() + "/auth/oauth/wxLogin", "68" + pre.getId());
StringBuilder description = new StringBuilder();
String title = "作业自动化——社保办理失败提醒";
description.append(pre.getEmpName()).append("-").append(pre.getEmpIdcard()).append("-")
.append(pre.getPhone()).append(",社保派单审核/办理失败").append("<br>");
description.append("请及时处理,以免产生用工风险!").append("<br>");
textcard.put("title", title);
textcard.put("url", authUrl);
textcard.put("description", description.toString());
requestMap.put("touser", sendUser);
requestMap.put("agentid", wxConfig.getAgentid());
requestMap.put("msgtype", "textcard");
requestMap.put("textcard", textcard);
// 必须加上header说明
if (!wxConfig.sendTextCard(restTemplate, requestMap)) {
wxConfig.sendTextCard(restTemplate, requestMap);
}
}
}
} }
...@@ -53,6 +53,7 @@ ...@@ -53,6 +53,7 @@
<result property="contractStatus" column="CONTRACT_STATUS"/> <result property="contractStatus" column="CONTRACT_STATUS"/>
<result property="contractId" column="CONTRACT_ID"/> <result property="contractId" column="CONTRACT_ID"/>
<result property="dispatcherId" column="DISPATCHER_ID"/> <result property="dispatcherId" column="DISPATCHER_ID"/>
<result property="socialFundId" column="SOCIAL_FUND_ID"/>
<result property="createBy" column="CREATE_BY"/> <result property="createBy" column="CREATE_BY"/>
<result property="updateBy" column="UPDATE_BY"/> <result property="updateBy" column="UPDATE_BY"/>
<result property="createName" column="CREATE_NAME"/> <result property="createName" column="CREATE_NAME"/>
...@@ -63,6 +64,7 @@ ...@@ -63,6 +64,7 @@
<result property="errorBackInfo" column="error_back_info"/> <result property="errorBackInfo" column="error_back_info"/>
<result property="errorTime" column="error_time"/> <result property="errorTime" column="error_time"/>
<result property="position" column="position"/> <result property="position" column="position"/>
<result property="phone" column="phone"/>
</resultMap> </resultMap>
<resultMap id="tDispatchInfoPreExportMap" type="com.yifu.cloud.plus.v1.yifu.social.vo.TDispatchInfoPreExportVo"> <resultMap id="tDispatchInfoPreExportMap" type="com.yifu.cloud.plus.v1.yifu.social.vo.TDispatchInfoPreExportVo">
...@@ -131,7 +133,7 @@ ...@@ -131,7 +133,7 @@
a.CREATE_NAME, a.CREATE_NAME,
a.UPDATE_TIME, a.UPDATE_TIME,
a.CREATE_TIME, a.CREATE_TIME,
a.DELETE_FLAG,error_info,error_time,a.DISPATCHER_ID,a.error_back_info,a.position a.DELETE_FLAG,error_info,error_time,a.DISPATCHER_ID,a.error_back_info,a.position,SOCIAL_FUND_ID,a.phone
</sql> </sql>
<sql id="tDispatchInfoPre_where"> <sql id="tDispatchInfoPre_where">
<if test="tDispatchInfoPre != null"> <if test="tDispatchInfoPre != null">
...@@ -203,6 +205,9 @@ ...@@ -203,6 +205,9 @@
<if test="tDispatchInfoPre.contractStatus != null and tDispatchInfoPre.contractStatus.trim() != ''"> <if test="tDispatchInfoPre.contractStatus != null and tDispatchInfoPre.contractStatus.trim() != ''">
AND a.CONTRACT_STATUS = #{tDispatchInfoPre.contractStatus} AND a.CONTRACT_STATUS = #{tDispatchInfoPre.contractStatus}
</if> </if>
<if test="tDispatchInfoPre.failType != null and tDispatchInfoPre.failType.trim() != ''">
AND a.error_info is not null
</if>
<if test="tDispatchInfoPre.authSql != null and tDispatchInfoPre.authSql.trim() != ''"> <if test="tDispatchInfoPre.authSql != null and tDispatchInfoPre.authSql.trim() != ''">
${tDispatchInfoPre.authSql} ${tDispatchInfoPre.authSql}
</if> </if>
...@@ -290,7 +295,7 @@ ...@@ -290,7 +295,7 @@
(@i :=@i+1) as rowIndex, (@i :=@i+1) as rowIndex,
a.EMP_NAME empName, a.EMP_NAME empName,
a.EMP_IDCARD empIdcard, a.EMP_IDCARD empIdcard,
a.dept_no deptNo, a.dept_no settleDomainCode,
a.RECORD_BASE recordBase, a.RECORD_BASE recordBase,
a.SOCIAL_HOUSEHOLD_NAME socialHousehold, a.SOCIAL_HOUSEHOLD_NAME socialHousehold,
if(a.IS_CREATE_DATE = '0',a.SOCIAL_START_DATE,a.PENSION_START) as pensionStart, if(a.IS_CREATE_DATE = '0',a.SOCIAL_START_DATE,a.PENSION_START) as pensionStart,
...@@ -307,6 +312,7 @@ ...@@ -307,6 +312,7 @@
if(a.PAYMENT_TYPE = '1',BIRTH_CARDINAL,null) as birthCardinal, if(a.PAYMENT_TYPE = '1',BIRTH_CARDINAL,null) as birthCardinal,
if(a.PAYMENT_TYPE = '1',BIGAILMENT_CARDINAL,null) as bigailmentCardinal, if(a.PAYMENT_TYPE = '1',BIGAILMENT_CARDINAL,null) as bigailmentCardinal,
a.id preId, a.id preId,
a.TRUST_REMARK trustRemark,
a.CUSTOMER_USER_LOGIN_NAME as preLoginName, a.CUSTOMER_USER_LOGIN_NAME as preLoginName,
if(#{type} = '1',concat('手动派单-',a.customer_username),concat('自动化派单-',a.customer_username)) preName if(#{type} = '1',concat('手动派单-',a.customer_username),concat('自动化派单-',a.customer_username)) preName
FROM t_dispatch_info_pre a,(select @i:=0) as itable FROM t_dispatch_info_pre a,(select @i:=0) as itable
......
<?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.yifu.social.mapper.TSocialAlertInfoMapper">
<resultMap id="tSocialAlertInfoMap" type="com.yifu.cloud.plus.v1.yifu.social.entity.TSocialAlertInfo">
<id property="id" column="ID"/>
<result property="deptNo" column="DEPT_NO"/>
<result property="deptName" column="DEPT_NAME"/>
<result property="type" column="TYPE"/>
<result property="empName" column="EMP_NAME"/>
<result property="empIdcard" column="EMP_IDCARD"/>
<result property="reason" column="REASON"/>
<result property="receiveUser" column="RECEIVE_USER"/>
<result property="createBy" column="CREATE_BY"/>
<result property="updateBy" column="UPDATE_BY"/>
<result property="createName" column="CREATE_NAME"/>
<result property="updateTime" column="UPDATE_TIME"/>
<result property="createTime" column="CREATE_TIME"/>
<result property="handleTime" column="HANDLE_TIME"/>
<result property="houseHoldName" column="HOUSE_HOLD_NAME"/>
<result property="socialProvince" column="SOCIAL_PROVINCE"/>
<result property="socialCity" column="SOCIAL_CITY"/>
<result property="socialTown" column="SOCIAL_TOWN"/>
<result property="fundProvince" column="FUND_PROVINCE"/>
<result property="fundCity" column="FUND_CITY"/>
<result property="fundTown" column="FUND_TOWN"/>
<result property="dispatchId" column="DISPATCH_ID"/>
<result property="applyName" column="APPLY_NAME"/>
</resultMap>
<sql id="Base_Column_List">
a.ID,
a.DEPT_NO,
a.DEPT_NAME,
a.TYPE,
a.EMP_NAME,
a.EMP_IDCARD,
a.REASON,
a.RECEIVE_USER,
a.CREATE_BY,
a.UPDATE_BY,
a.CREATE_NAME,
a.UPDATE_TIME,
a.CREATE_TIME,
a.HOUSE_HOLD_NAME,
a.SOCIAL_PROVINCE,
a.SOCIAL_CITY,
a.SOCIAL_TOWN,
a.FUND_PROVINCE,
a.FUND_CITY,
a.FUND_TOWN,
a.HANDLE_TIME,
a.DISPATCH_ID,a.APPLY_NAME
</sql>
<sql id="tSocialAlertInfo_where">
<if test="tSocialAlertInfo != null">
<if test="tSocialAlertInfo.id != null and tSocialAlertInfo.id.trim() != ''">
AND a.ID = #{tSocialAlertInfo.id}
</if>
<if test="tSocialAlertInfo.deptNo != null and tSocialAlertInfo.deptNo.trim() != ''">
AND a.DEPT_NO = #{tSocialAlertInfo.deptNo}
</if>
<if test="tSocialAlertInfo.deptName != null and tSocialAlertInfo.deptName.trim() != ''">
AND a.DEPT_NAME = #{tSocialAlertInfo.deptName}
</if>
<if test="tSocialAlertInfo.type != null and tSocialAlertInfo.type.trim() != ''">
AND a.TYPE = #{tSocialAlertInfo.type}
</if>
<if test="tSocialAlertInfo.empName != null and tSocialAlertInfo.empName.trim() != ''">
AND a.EMP_NAME = #{tSocialAlertInfo.empName}
</if>
<if test="tSocialAlertInfo.empIdcard != null and tSocialAlertInfo.empIdcard.trim() != ''">
AND a.EMP_IDCARD = #{tSocialAlertInfo.empIdcard}
</if>
<if test="tSocialAlertInfo.reason != null and tSocialAlertInfo.reason.trim() != ''">
AND a.REASON = #{tSocialAlertInfo.reason}
</if>
<if test="tSocialAlertInfo.receiveUser != null and tSocialAlertInfo.receiveUser.trim() != ''">
AND a.RECEIVE_USER = #{tSocialAlertInfo.receiveUser}
</if>
<if test="tSocialAlertInfo.createBy != null and tSocialAlertInfo.createBy.trim() != ''">
AND a.CREATE_BY = #{tSocialAlertInfo.createBy}
</if>
<if test="tSocialAlertInfo.updateBy != null and tSocialAlertInfo.updateBy.trim() != ''">
AND a.UPDATE_BY = #{tSocialAlertInfo.updateBy}
</if>
<if test="tSocialAlertInfo.createName != null and tSocialAlertInfo.createName.trim() != ''">
AND a.CREATE_NAME = #{tSocialAlertInfo.createName}
</if>
<if test="tSocialAlertInfo.updateTime != null">
AND a.UPDATE_TIME = #{tSocialAlertInfo.updateTime}
</if>
<if test="tSocialAlertInfo.createTime != null">
AND a.CREATE_TIME = #{tSocialAlertInfo.createTime}
</if>
</if>
</sql>
<!--tSocialAlertInfo简单分页查询-->
<select id="getTSocialAlertInfoPage" resultMap="tSocialAlertInfoMap">
SELECT
<include refid="Base_Column_List"/>
FROM t_social_alert_info a
<where>
1=1
<include refid="tSocialAlertInfo_where"/>
</where>
</select>
<!--tSocialAlertInfo数据获取-->
<select id="getTSocialAlertInfoList" resultMap="tSocialAlertInfoMap">
SELECT
di.SETTLE_DOMAIN_CODE as DEPT_NO,
di.SETTLE_DOMAIN_NAME as DEPT_NAME,
di.TYPE AS TYPE,
di.EMP_NAME AS EMP_NAME,
di.EMP_IDCARD AS EMP_IDCARD,
di.CREATE_NAME AS APPLY_NAME,
di.CREATE_BY AS CREATE_BY,
di.CREATE_BY AS RECEIVE_USER,
di.SOCIAL_HOUSEHOLD_NAME as HOUSE_HOLD_NAME,
di.SOCIAL_PROVINCE as SOCIAL_PROVINCE,
di.SOCIAL_CITY as SOCIAL_CITY,
di.SOCIAL_TOWN as SOCIAL_TOWN,
NULL as FUND_PROVINCE,
NULL as FUND_CITY,
NULL as FUND_TOWN,
di.id as DISPATCH_ID,
CASE
WHEN di.TYPE =0 THEN si.HANDLE_TIME
WHEN di.TYPE =1 THEN si.REDUCE_HANDLE_TIME
ELSE NULL
END AS HANDLE_TIME,
CASE
WHEN di.SOCIAL_HANDLE_STATUS IN ('2', '3') THEN di.SOCIAL_HANDLE_REMARK
ELSE NULL
END AS REASON
FROM
t_dispatch_info as di
LEFT JOIN
(
SELECT
ID,
HANDLE_TIME,
REDUCE_HANDLE_TIME
FROM t_social_info
WHERE
CREATE_TIME > DATE_SUB(CURDATE(), INTERVAL 4 MONTH)
) AS si ON di.SOCIAL_ID = si.ID
WHERE
(
(si.HANDLE_TIME >= DATE_SUB(CURDATE(), INTERVAL 100 DAY)
AND si.HANDLE_TIME <![CDATA[ <= ]]> CONCAT(CURDATE(), ' 10:00:00'))
OR
(si.REDUCE_HANDLE_TIME >= DATE_SUB(CURDATE(), INTERVAL 100 DAY)
AND si.REDUCE_HANDLE_TIME <![CDATA[ <= ]]> CONCAT(CURDATE(), ' 10:00:00'))
)
AND di.SOCIAL_HANDLE_STATUS IN ('2', '3')
AND di.DELETE_FLAG = '0' AND di.TYPE=0
</select>
<!--tSocialAlertInfo数据获取-->
<select id="getTFundAlertInfoList" resultMap="tSocialAlertInfoMap">
SELECT
di.SETTLE_DOMAIN_CODE as DEPT_NO,
di.SETTLE_DOMAIN_NAME as DEPT_NAME,
di.TYPE AS TYPE,
di.EMP_NAME AS EMP_NAME,
di.EMP_IDCARD AS EMP_IDCARD,
di.CREATE_NAME AS APPLY_NAME,
di.CREATE_BY AS CREATE_BY,
di.CREATE_BY AS RECEIVE_USER,
di.PROVIDENT_HOUSEHOLD_NAME as HOUSE_HOLD_NAME,
NULL as SOCIAL_PROVINCE,
NULL as SOCIAL_CITY,
NULL as SOCIAL_TOWN,
di.FUND_PROVINCE as FUND_PROVINCE,
di.FUND_CITY as FUND_CITY,
di.FUND_TOWN as FUND_TOWN,
di.id as DISPATCH_ID,
CASE
WHEN di.TYPE =0 THEN pf.HANDLE_TIME
WHEN di.TYPE =1 THEN pf.REDUCE_HANDLE_TIME
ELSE NULL
END AS HANDLE_TIME,
CASE
WHEN di.FUND_HANDLE_STATUS = '2' THEN di.FUND_HANDLE_REMARK
ELSE NULL
END AS REASON
FROM
t_dispatch_info as di
LEFT JOIN
(
SELECT
HANDLE_TIME,
ID,
REDUCE_HANDLE_TIME
FROM t_provident_fund
WHERE
CREATE_TIME > DATE_SUB(CURDATE(), INTERVAL 4 MONTH )
) AS pf ON di.FUND_ID = pf.ID
WHERE
(
(pf.HANDLE_TIME >= DATE_SUB(CURDATE(), INTERVAL 100 DAY)
AND pf.HANDLE_TIME <![CDATA[ <= ]]> CONCAT(CURDATE(), ' 10:00:00'))
OR
(pf.REDUCE_HANDLE_TIME >= DATE_SUB(CURDATE(), INTERVAL 100 DAY)
AND pf.REDUCE_HANDLE_TIME <![CDATA[ <= ]]> CONCAT(CURDATE(), ' 10:00:00'))
)
AND di.FUND_HANDLE_STATUS = '2'
AND di.DELETE_FLAG = '0' AND di.TYPE=1
</select>
<delete id="deleteCUrrentDayData">
delete from t_social_alert_info where CREATE_TIME >= CONCAT(CURDATE(), ' 10:00:00')
</delete>
</mapper>
\ No newline at end of file
...@@ -1238,6 +1238,7 @@ ...@@ -1238,6 +1238,7 @@
<select id="selectSocialFundInfoCountByEmpIdcard" resultType="java.lang.Long"> <select id="selectSocialFundInfoCountByEmpIdcard" resultType="java.lang.Long">
SELECT count(1) SELECT count(1)
FROM t_social_fund_info a FROM t_social_fund_info a
inner join t_dispatch_info d on a.DISPATCH_ID = d.ID
where a.EMP_IDCARD = #{empIdcard} where a.EMP_IDCARD = #{empIdcard}
and a.social_status in ('0', '1', '2', '3', '4', '6', '7', '9', '11', '12') and a.social_status in ('0', '1', '2', '3', '4', '6', '7', '9', '11', '12')
</select> </select>
......
...@@ -129,5 +129,28 @@ ...@@ -129,5 +129,28 @@
<select id="getSocialListByUserId" resultType="java.lang.String"> <select id="getSocialListByUserId" resultType="java.lang.String">
SELECT a.SOCIAL_HOUSEHOLD FROM t_socialfund_house_res a WHERE user_id = #{userId} AND STATUS = '0' AND AUTH_TYPE = '1' AND HOUSE_NAME_TYPE = '0' SELECT a.SOCIAL_HOUSEHOLD FROM t_socialfund_house_res a WHERE user_id = #{userId} AND STATUS = '0' AND AUTH_TYPE = '1' AND HOUSE_NAME_TYPE = '0'
</select> </select>
<select id="getHouseHoldUserMap" resultType="java.util.Map">
<!--
查询各个户籍/公积金账户对应的用户ID列表
条件:
- STATUS = '0': 有效状态
- AUTH_TYPE = '1': 授权类型为1
- HOUSE_NAME_TYPE = '0': 社保户籍类型 或 HOUSE_NAME_TYPE = '1': 公积金户籍类型
-->
SELECT x.HOUSEHOLD as 'key',GROUP_CONCAT(DISTINCT x.USER_ID) as 'value'
FROM
(
SELECT a.SOCIAL_HOUSEHOLD as HOUSEHOLD,a.USER_ID
FROM t_socialfund_house_res a
WHERE STATUS = '0' AND AUTH_TYPE = '1' AND HOUSE_NAME_TYPE = '0'
UNION ALL
SELECT a.FUND_HOUSEHOLD as HOUSEHOLD,a.USER_ID
FROM t_socialfund_house_res a
WHERE STATUS = '0' AND AUTH_TYPE = '1' AND HOUSE_NAME_TYPE = '1'
) AS x
WHERE x.HOUSEHOLD IS NOT NULL
GROUP BY x.HOUSEHOLD
</select>
</mapper> </mapper>
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