Commit 9abc63ce authored by hongguangwu's avatar hongguangwu

Merge branch 'MVP1.5.4' into develop

parents c27fcb42 2c21d4d7
apiVersion: apps/v1 # 指定api版本,此值必须在kubectl api-versions中
kind: Deployment # 指定创建资源的角色/类型
metadata: # 资源的元数据/属性
name: yifu-msg # 资源的名字,在同一个namespace中必须唯一
namespace: qas-mvp # 部署在哪个namespace中
spec: # 资源规范字段
selector: # 选择器
matchLabels: # 匹配标签
app: yifu-msg
replicas: 1 # 声明副本数目
#revisionHistoryLimit: 3 # 保留历史版本
#strategy: # 策略
# rollingUpdate: # 滚动更新
# maxSurge: 30% # 最大额外可以存在的副本数,可以为百分比,也可以为整数
# maxUnavailable: 30% # 示在更新过程中能够进入不可用状态的 Pod 的最大值,可以为百分比,也可以为整数
# type: RollingUpdate # 滚动更新策略
template: # 模版
metadata: # 模版
labels: # 设定资源的标签
app: yifu-msg
annotations:
dapr.io/enabled: "true" #设定此参数为 true 注入Dapr sidecar到pod
dapr.io/app-id: "yifu-msg" #应用程序唯一 ID。 用于服务发现、状态封装 和 发布/订阅 消费者ID
dapr.io/app-port: "5026" #这个参数告诉Dapr你的应用程序正在监听哪个端口。
#dapr.io/log-level: "debug" #为 Dapr sidecar设置日志级别。 允许的值是debug,info,warn,error。 默认是 info
#dapr.io/log-as-json: "false" #将此参数设置为true以JSON格式输出日志。 默认值为 false.
#dapr.io/config: file #告诉 Dapr 要使用哪个配置 CRD
dapr.io/app-protocol: "http" #告诉 Dapr 你的应用程序正在使用哪种协议。 有效选项是 http and grpc。 Default is http
#dapr.io/app-max-concurrency: "20" #限制应用程序的并发量。 有效的数值是大于 0
#dapr.io/app-ssl: "false" #告诉Dapr通过不安全的SSL连接调用应用程序。 同时适用于HTTP和gRPC。 Traffic between your app and the Dapr sidecar is encrypted with a certificate issued by a non-trusted certificate authority, which is considered insecure. 默认值为 false.
dapr.io/metrics-port: "9090" #设置 sidecar 度量服务器的端口。 默认值为 9090
#dapr.io/sidecar-cpu-limit: 2 #Dapr sidecar可以使用的最大CPU数量。 默认情况下未设置
#dapr.io/sidecar-memory-limit: "800Mi" #Dapr sidecar可以使用的最大内存量。默认情况下未设置 请参阅 https://kubernetes.io/docs/tasks/administer-cluster/manage-resources/quota-memory-cpu-namespace/ 的有效值。
#dapr.io/sidecar-cpu-request: 1 #Dapr sidecar要求的 CPU 数量
#dapr.io/sidecar-memory-request #Dapr sidecar 请求的内存数量
dapr.io/http-max-request-size: "100" #增加http和grpc服务器请求正文参数的最大大小,单位为MB,以处理大文件的上传。 默认值为 4 MB
dapr.io/http-read-buffer-size: "16" #Dapr has a default limit of 4KB for the http header read buffer size. When sending http headers that are bigger than the default 4KB, you can increase this value. Otherwise, you may encounter a Too big request header
dapr.io/sidecar-listen-addresses: "0.0.0.0"
# 更多dapr配置请参考 https://www.bookstack.cn/read/dapr-1.5-zh/cc77b74e2cc2f4d4.md
spec: # 资源规范字段
nodeSelector: # node 选择器
node-type: worker # node标签
kubernetes.io/hostname: yfmaster1
containers: # 容器
- name: yifu-msg # 容器的名字
#image: 192.168.1.110:5500/qas-mvp/yifu-msg-biz:1.0.0 # 容器镜像地址
image: hub.worfu.com/qas-mvp/yifu-msg-biz:1.0.0 #临时地址
imagePullPolicy: Always # 每次Pod启动拉取镜像策略,三个选择 Always、Never、IfNotPresent
# Always,每次都检查;Never,每次都不检查(不管本地是否有);IfNotPresent,如果本地有就不检查,如果没有就拉取(手动测试时,
# 已经打好镜像存在docker容器中时,使用存在不检查级别,
# 默认为每次都检查,然后会进行拉取新镜像,因镜像仓库不存在,导致部署失败)
ports:
- containerPort: 5026 # 容器端口
env: # 启动环境配置信息 active and timeZone set
- name: SPRING_PROFILES_ACTIVE
value: test
- name: TZ
value: Asia/Shanghai
resources: #资源配置限制
limits: # 最大使用
memory: "4096Mi"
#cpu: 300m # CPU,1核心 = 1000m
requests: # 容器运行时,最低资源需求,也就是说最少需要多少资源容器才能正常运行
#cpu: 100m
memory: "500Mi"
#livenessProbe: # pod 内部健康检查的设置
# httpGet: # 通过httpget检查健康,返回200-399之间,则认为容器正常
# path: /healthCheck # URI地址
# port: 8080 # 端口
# scheme: HTTP # 协议
# # host: 127.0.0.1 # 主机地址
# initialDelaySeconds: 30 # 表明第一次检测在容器启动后多长时间后开始
# timeoutSeconds: 5 # 检测的超时时间
# periodSeconds: 30 # 检查间隔时间
# successThreshold: 1 # 成功门槛
# failureThreshold: 5 # 失败门槛,连接失败5次,pod杀掉,重启一个新的pod
# readinessProbe: # Pod 准备服务健康检查设置
# httpGet:
# path: /healthCheck
# port: 8080
# scheme: HTTP
# initialDelaySeconds: 30
# timeoutSeconds: 5
# periodSeconds: 10
# successThreshold: 1
# failureThreshold: 5
#也可以用这种方法
#exec: 执行命令的方法进行监测,如果其退出码不为0,则认为容器正常
# command:
# - cat
# - /tmp/health
#也可以用这种方法
#tcpSocket: # 通过tcpSocket检查健康
# port: number
#ports:
# - name: http # 名称
# containerPort: 8080 # 容器开发对外的端口
# protocol: TCP # 协议
imagePullSecrets: # 镜像仓库拉取密钥
- name: login
#affinity: # 亲和性调试
# nodeAffinity: # 节点亲和力
# requiredDuringSchedulingIgnoredDuringExecution: # pod 必须部署到满足条件的节点上
# nodeSelectorTerms: # 节点满足任何一个条件就可以
# - matchExpressions: # 有多个选项,则只有同时满足这些逻辑选项的节点才能运行 pod
# - key: beta.kubernetes.io/arch
# operator: In
# values:
# - amd64
\ No newline at end of file
apiVersion: v1 # 指定api版本,此值必须在kubectl api-versions中
kind: Service # 指定创建资源的角色/类型
metadata: # 资源的元数据/属性
labels: # 设定资源的标签
app: yifu-msg # 资源的名字,在同一个namespace中必须唯一
name: yifu-msg # 资源的名字,在同一个namespace中必须唯一
namespace: qas-mvp # 部署在哪个namespace中
spec: # 资源规范字段
ports:
- port: 5026 # service 端口
protocol: TCP # 协议
targetPort: 5026 # 容器暴露的端口
name: http-msg # 端口名称
- port: 3500 # service 端口
protocol: TCP # 协议
targetPort: 3500 # 容器暴露的端口
name: http-msg-dapr
selector: # 选择器
app: yifu-msg # 资源名称
type: ClusterIP # ClusterIP 类型
\ No newline at end of file
......@@ -104,6 +104,7 @@
<module>yifu-order</module>
<module>yifu-mail</module>
<module>yifu-business</module>
<module>yifu-msg</module>
</modules>
<dependencyManagement>
......
......@@ -20,6 +20,7 @@ public class ArchivesConstants {
*/
public static final String PROJECT_CONTENT = "复项";
/**
* 复档复项
*/
......@@ -136,4 +137,24 @@ public class ArchivesConstants {
*/
public static final String CONTRACT_AUDIT_REMARK_TOO_LONG = "审核说明不可超过200字!";
/**
* 处理状态
*/
public static final String HANDLE_FLAG_ONE= "未处理-已处理";
/**
* 处理状态
*/
public static final String HANDLE_FLAG_TWO= "已处理-未处理";
/**
* 处理状态
*/
public static final String HANDLE_FLAG_THREE= "未处理-未处理";
/**
* 处理状态
*/
public static final String HANDLE_FLAG_FOUR= "已处理-已处理";
public static final int MYEAR_MONTH=-717;
public static final int WYEAR_MONTH=-597;
}
......@@ -364,6 +364,13 @@ public class TEmployeeProject extends BaseEntity {
@TableField(exist = false)
private String changeStartMonth;
/**
* 标签
*/
@Schema(description ="标签")
@Size(max = 20, message = "标签不可超过20位")
private String empLabel;
/**
* 员工合同状态(字典)
* 0 无合同
......
package com.yifu.cloud.plus.v1.yifu.archives.entity;
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.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 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 java.io.Serializable;
/**
* @author wzb
* @description 人员退休提醒
* @date 2023-05-18 15:11:11
*/
@Data
@TableName("t_employee_retirement")
@EqualsAndHashCode(callSuper = true)
@Schema(description = "项目档案表")
public class TEmployeeRetirement extends BaseEntity implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 主键
*/
@TableId(type = IdType.ASSIGN_ID)
@Schema(description ="主键")
private String id;
/**
* 员工姓名
*/
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("员工姓名")
@ExcelAttribute(name = "员工姓名")
@Schema(description = "员工姓名")
private String empName;
/**
* 身份证号码
*/
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("身份证号码")
@ExcelAttribute(name = "身份证号")
@Schema(description = "身份证号")
private String empIdcard;
/**
* 手机号码
*/
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("手机号码")
@ExcelAttribute(name = "手机号码")
@Schema(description = "手机号码")
private String empPhone;
/**
* 性别
*/
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("性别")
@ExcelAttribute(name = "性别")
@Schema(description = "性别")
private String empSex;
/**
* 年龄
*/
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("年龄")
@ExcelAttribute(name = "年龄")
@Schema(description = "年龄")
private Integer empAge;
/**
* 员工类型(字典值,0外包1派遣2代理)
*/
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("员工类型")
@ExcelAttribute(name = "员工类型")
@Schema(description = "员工类型")
private String empNatrue;
/**
* 档案-省
*/
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("省")
@ExcelAttribute(name = "省")
@Schema(description = "档案-省")
private Integer fileProvince;
/**
* 档案-市
*/
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("市")
@ExcelAttribute(name = "市")
@Schema(description = "档案-市")
private Integer fileCity;
/**
* 档案-县
*/
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("县")
@ExcelAttribute(name = "县")
@Schema(description = "档案-县")
private Integer fileTown;
/**
* 社保-省
*/
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("社保-省")
@ExcelAttribute(name = "社保-省")
@Schema(description = "社保-省")
private Integer socialProvince;
/**
* 社保-市
*/
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("社保-市")
@ExcelAttribute(name = "社保-市")
@Schema(description = "社保-市")
private Integer socialCity;
/**
* 社保-县
*/
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("社保-县")
@ExcelAttribute(name = "社保-县")
@Schema(description = "社保-县")
private Integer socialTown;
/**
* 项目名称
*/
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("项目名称")
@ExcelAttribute(name = "项目名称")
@Schema(description = "项目名称")
private String deptName;
/**
* 客户名称
*/
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("客户名称")
@ExcelAttribute(name = "客户名称")
@Schema(description = "客户名称")
private String unitName;
/**
* 客户编码
*/
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("客户编码")
@ExcelAttribute(name = "客户编码")
@Schema(description = "客户编码")
private String unitNo;
/**
* 项目编码
*/
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("项目编码")
@ExcelAttribute(name = "项目编码")
@Schema(description = "项目编码")
private String deptNo;
/**
* 是否处理(0未处理,1处理)
*/
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("是否处理")
@ExcelAttribute(name = "是否处理")
@Schema(description = "是否处理")
private Integer handleFlag;
}
package com.yifu.cloud.plus.v1.yifu.archives.entity;
import java.io.Serializable;
import java.util.Date;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
*
* @TableName t_employee_retirement_flag_detail
*/
@Data
@TableName("t_employee_retirement_Flag_detail")
@Schema(description = "项目档案表")
public class TEmployeeRetirementFlagDetail implements Serializable {
/**
* 主键
*/
@TableId(type = IdType.ASSIGN_ID)
@Schema(description ="主键")
private String id;
private String datailId;
/**
* 创建人id
*/
private String createBy;
/**
* 创建人姓名
*/
private String createName;
/**
* 创建时间
*/
private Date createTime;
/**
* 更新人id
*/
private String updateBy;
/**
* 更新时间
*/
private Date updateTime;
/**
* 操作内容
*/
private String context;
private static final long serialVersionUID = 1L;
}
\ No newline at end of file
package com.yifu.cloud.plus.v1.yifu.archives.vo;
import lombok.Data;
/**
* @author wzb
* @description 批量修改处理状态类
* @date 2023-05-19 16:30:29
*/
@Data
public class ChangeHandleFlagAllVo {
/**
* id集合
*/
private String[] ids;
/**
* 处理状态
*/
private Integer handleFlag;
}
package com.yifu.cloud.plus.v1.yifu.archives.vo;
import lombok.Data;
/**
* @author wzb
* @description 修改处理状态类
* @date 2023-05-22 17:09:54
*/
@Data
public class ChangeHandleFlagVo {
/**
* id
*/
private String id;
/**
* 处理状态
*/
private Integer handleFlag;
}
......@@ -474,6 +474,21 @@ public class EmployeeProjectExportParamVO extends BaseEntity {
@ExcelProperty(value ="社保所在县")
private String socialTown;
/**
* 标签
*/
@ExcelAttribute(name = "标签",maxLength = 20)
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty(value ="标签")
private String empLabel;
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty(value ="合同甲方")
@ExcelAttribute(name = "合同甲方")
private String contractParty;
private String[] socialStatusArray;
private String[] fundStatusArray;
......
......@@ -479,7 +479,13 @@ public class EmployeeProjectExportVO {
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty(value ="社保所在市")
private String socialCity;
/**
* 标签
*/
@ExcelAttribute(name = "标签",maxLength = 20)
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty(value ="标签")
private String empLabel;
/**
* 社保-县
*/
......@@ -488,6 +494,13 @@ public class EmployeeProjectExportVO {
@ExcelProperty(value ="社保所在县")
private String socialTown;
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty(value ="合同甲方")
@ExcelAttribute(name = "合同甲方")
private String contractParty;
private String[] socialStatusArray;
private String[] fundStatusArray;
......
......@@ -23,10 +23,12 @@ import com.alibaba.excel.annotation.write.style.HeadFontStyle;
import com.yifu.cloud.plus.v1.yifu.common.core.constant.ExcelAttribute;
import com.yifu.cloud.plus.v1.yifu.common.core.constant.ExcelAttributeConstants;
import com.yifu.cloud.plus.v1.yifu.common.core.vo.RowIndex;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Past;
import javax.validation.constraints.Size;
import java.io.Serializable;
import java.util.Date;
......@@ -142,4 +144,12 @@ public class EmployeeProjectUpdateVO extends RowIndex implements Serializable {
@ExcelProperty(value ="试用期")
private String tryPeriod;
/**
* 标签
*/
@ExcelAttribute(name = "标签",maxLength = 20)
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty(value ="标签")
private String empLabel;
}
......@@ -23,10 +23,12 @@ import com.alibaba.excel.annotation.write.style.HeadFontStyle;
import com.yifu.cloud.plus.v1.yifu.common.core.constant.ExcelAttribute;
import com.yifu.cloud.plus.v1.yifu.common.core.constant.ExcelAttributeConstants;
import com.yifu.cloud.plus.v1.yifu.common.core.vo.RowIndex;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Past;
import javax.validation.constraints.Size;
import java.io.Serializable;
import java.util.Date;
......@@ -141,5 +143,12 @@ public class EmployeeProjectVO extends RowIndex implements Serializable {
@ExcelProperty(value ="试用期")
@ExcelAttribute(name = "试用期",maxLength = 4)
private String tryPeriod;
/**
* 标签
*/
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty(value ="标签")
@ExcelAttribute(name = "标签",maxLength = 20,errorInfo = "标签不超过20个字")
@Schema(description ="标签")
private String empLabel;
}
/*
* 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.archives.vo;
import com.baomidou.mybatisplus.annotation.TableField;
import com.yifu.cloud.plus.v1.yifu.archives.entity.TEmpChangeInfo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.io.Serializable;
/**
* 档案划转日志表
*
* @author huyc
* @date 2022-06-22
*/
@Data
public class TEmpChangeInfoNewVO implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 员工姓名
*/
@Schema(description ="员工姓名")
private String empName;
/**
* 原单位名称
*/
@Schema(description ="原单位名称")
private String oldUnitName;
/**
* 新单位名称
*/
@Schema(description ="新单位名称")
private String newUnitName;
/**
* 原项目
*/
@Schema(description ="原项目名称")
private String oldDeptName;
/**
* 新项目
*/
@Schema(description ="新项目名称")
private String newDeptName;
/**
* 项目档案id
*/
@Schema(description ="项目档案id")
private String proId;
/**
* 项目id
*/
@Schema(description ="项目id")
@TableField(exist = false)
private String oldDepartId;
/**
* 项目id
*/
@Schema(description ="项目id")
@TableField(exist = false)
private String oldDepartNo;
/**
* 客户id
*/
@Schema(description ="客户id")
@TableField(exist = false)
private String oldCustomerId;
/**
* 身份证号码
*/
@Schema(description ="身份证号码")
private String empIdcard;
/**
* 客户id
*/
@Schema(description ="客户id")
@TableField(exist = false)
private String newUnitId;
/**
* 客户编码
*/
@Schema(description ="客户编码")
@TableField(exist = false)
private String newUnitNo;
/**
* 项目id
*/
@Schema(description ="项目id")
@TableField(exist = false)
private String newDeptId;
/**
* 项目编码
*/
@Schema(description ="项目编码")
@TableField(exist = false)
private String newDeptNo;
/**
* 划转项:0 员工合同 1 社保 2 公积金
*/
@Schema(description = "划转项:0 员工合同 1 社保 2 公积金")
private String changeItems;
/**
* 原项目处理:0 不处理 1 同步减项
*/
@Schema(description = "原项目处理:0 不处理 1 同步减项")
private String changeType;
}
package com.yifu.cloud.plus.v1.yifu.archives.vo;
import com.alibaba.excel.annotation.ExcelIgnore;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
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.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.yifu.cloud.plus.v1.yifu.archives.entity.TEmployeeRetirement;
import com.yifu.cloud.plus.v1.yifu.archives.entity.TEmployeeRetirementFlagDetail;
import com.yifu.cloud.plus.v1.yifu.common.core.constant.ExcelAttribute;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.time.LocalDateTime;
import java.util.List;
import java.util.Set;
/**
* @author wzb
* @description TODO
* @date 2023-05-22 17:44:35
*/
@Data
@ExcelIgnoreUnannotated
public class TEmployeeRetirementExportVo{
@TableId(type = IdType.ASSIGN_ID)
@Schema(description ="主键")
private String id;
/**
* 员工姓名
*/
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("员工姓名")
@ExcelAttribute(name = "员工姓名")
@Schema(description = "员工姓名")
private String empName;
/**
* 身份证号码
*/
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("身份证号")
@ExcelAttribute(name = "身份证号")
@Schema(description = "身份证号")
private String empIdcard;
/**
* 手机号码
*/
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("手机号码")
@ExcelAttribute(name = "手机号码")
@Schema(description = "手机号码")
private String empPhone;
/**
* 性别
*/
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("性别")
@ExcelAttribute(name = "性别",readConverterExp = "1=男,2=女")
@Schema(description = "性别")
private String empSex;
/**
* 年龄
*/
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("年龄(岁)")
@ExcelAttribute(name = "年龄(岁)")
@Schema(description = "年龄(岁)")
private Integer empAge;
/**
* 员工类型(字典值,0外包1派遣2代理)
*/
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("员工类型")
@ExcelAttribute(name = "员工类型",readConverterExp = "0=外包,1=派遣,2=代理")
@Schema(description = "员工类型")
private String empNatrue;
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("档案所在地")
@ExcelAttribute(name = "档案所在地")
@Schema(description = "档案所在地")
private String fileAddress;
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("社保缴纳地")
@ExcelAttribute(name = "社保缴纳地")
@Schema(description = "社保缴纳地")
private String socialAddress;
/**
* 档案-省
*/
@Schema(description = "档案-省")
private Integer fileProvince;
/**
* 档案-市
*/
@JsonIgnore
@Schema(description = "档案-市")
private Integer fileCity;
/**
* 档案-县
*/
@Schema(description = "档案-县")
private Integer fileTown;
/**
* 社保-省
*/
@Schema(description = "社保-省")
private Integer socialProvince;
/**
* 社保-市
*/
@Schema(description = "社保-市")
private Integer socialCity;
/**
* 社保-县
*/
@Schema(description = "社保-县")
private Integer socialTown;
/**
* 客户名称
*/
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("客户名称")
@ExcelAttribute(name = "客户名称")
@Schema(description = "客户名称")
private String unitName;
/**
* 客户编码
*/
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("客户编码")
@ExcelAttribute(name = "客户编码")
@Schema(description = "客户编码")
private String unitNo;
/**
* 项目名称
*/
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("项目名称")
@ExcelAttribute(name = "项目名称")
@Schema(description = "项目名称")
private String deptName;
/**
* 项目编码
*/
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("项目编码")
@ExcelAttribute(name = "项目编码")
@Schema(description = "项目编码")
private String deptNo;
/**
* 是否处理(0未处理,1处理)
*/
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("是否处理")
@ExcelAttribute(name = "是否处理")
@Schema(description = "是否处理")
private String handleFlag;
}
package com.yifu.cloud.plus.v1.yifu.archives.vo;
import com.baomidou.mybatisplus.annotation.TableField;
import com.yifu.cloud.plus.v1.yifu.archives.entity.TEmployeeRetirement;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
/**
* @author wzb
* @description TODO
* @date 2023-05-22 19:37:37
*/
@Data
public class TEmployeeRetirementSearchVo extends TEmployeeRetirement {
/**
* 员工类型下拉多选
*/
@TableField(exist = false)
@Schema(description = "员工类型下拉多选")
private String[]empTypeList;
@TableField(exist = false)
@Schema(description = "id集合")
private String[]idList;
/**
* @Author fxj
* 查询数据起
**/
private int limitStart;
/**
* @Author fxj
* 查询数据止
**/
private int limitEnd;
}
package com.yifu.cloud.plus.v1.yifu.archives.vo;
import com.alibaba.excel.annotation.ExcelIgnore;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.TableField;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.io.Serializable;
......@@ -23,4 +27,13 @@ public class UpdateEmpVo implements Serializable {
// type 0 审核通过 2.审核不通过
String type;
/**
* @Description: 合同审核人要传过去
* @Author: hgw
* @Date: 2023/5/23 9:59
* @return:
**/
private String createName;
private String createBy;
}
......@@ -3,12 +3,14 @@ package com.yifu.cloud.plus.v1.yifu.archives;
import com.yifu.cloud.plus.v1.yifu.common.security.annotation.EnableYifuResourceServer;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.scheduling.annotation.EnableScheduling;
/**
* @author pig archetype
* <p>
* 项目启动类
*/
@EnableYifuResourceServer
@SpringBootApplication
public class ArchivesApplication {
......
......@@ -23,9 +23,11 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.pig4cloud.plugin.excel.annotation.RequestExcel;
import com.pig4cloud.plugin.excel.vo.ErrorMessage;
import com.yifu.cloud.plus.v1.yifu.archives.entity.TCustomerInfo;
import com.yifu.cloud.plus.v1.yifu.archives.entity.TCutsomerDataPermisson;
import com.yifu.cloud.plus.v1.yifu.archives.entity.TEmpChangeInfo;
import com.yifu.cloud.plus.v1.yifu.archives.entity.TSettleDomain;
import com.yifu.cloud.plus.v1.yifu.archives.service.TEmpChangeInfoService;
import com.yifu.cloud.plus.v1.yifu.archives.vo.TEmpChangeInfoNewVO;
import com.yifu.cloud.plus.v1.yifu.archives.vo.TEmpChangeInfoVO;
import com.yifu.cloud.plus.v1.yifu.common.core.util.R;
import com.yifu.cloud.plus.v1.yifu.common.log.annotation.SysLog;
......@@ -131,6 +133,18 @@ public class TEmpChangeInfoController {
return new R<>(tEmpChangeInfoService.getAllDeptPage(page, departName, nameOrNo, customerId,flag));
}
/**
* 分页查询获取所有项目名称(缩小范围)
* @param page 分页对象
* @return
*/
@Operation(description = "分页查询缩小范围")
@GetMapping("/getAllDeptPagePermission" )
public R<IPage<TSettleDomain>> getItemNamePagePermission(Page page, @RequestParam(required = false) String departName
,@RequestParam(required = false) String nameOrNo
,@RequestParam(required = false) String customerId, @RequestParam(required = false) String flag) {
return new R<>(tEmpChangeInfoService.getAllDeptPagePermission(page,departName, nameOrNo, customerId,flag));
}
/**
* 获取所有项目名称
* @return R
......@@ -184,5 +198,18 @@ public class TEmpChangeInfoController {
public R<List<ErrorMessage>> batchChangeArc(@RequestExcel List<TEmpChangeInfoVO> excelVOList, BindingResult bindingResult) {
return tEmpChangeInfoService.batchChangeArc(excelVOList,bindingResult);
}
/**
* @Author fxj
* @Description 员工档案划转---新
* @Date 15:28 2023/5/5
* @Param
* @return
**/
@Operation(summary = "员工档案划转-新", description = "员工档案划转-新")
@SysLog("员工档案划转-新" )
@PostMapping("/empProArcChangeNew" )
@PreAuthorize("@pms.hasPermission('archives_tempchangeinfo_change')")
public R<Boolean> empProArcChangeNew(@RequestBody TEmpChangeInfoNewVO changeVo) {
return tEmpChangeInfoService.changeEmpProArcNew(changeVo);
}
}
......@@ -23,7 +23,10 @@ import com.pig4cloud.plugin.excel.vo.ErrorMessage;
import com.yifu.cloud.plus.v1.yifu.archives.entity.TEmployeeInfo;
import com.yifu.cloud.plus.v1.yifu.archives.service.TEmployeeInfoService;
import com.yifu.cloud.plus.v1.yifu.archives.vo.*;
import com.yifu.cloud.plus.v1.yifu.common.core.constant.CacheConstants;
import com.yifu.cloud.plus.v1.yifu.common.core.constant.CommonConstants;
import com.yifu.cloud.plus.v1.yifu.common.core.constant.ResultConstants;
import com.yifu.cloud.plus.v1.yifu.common.core.redis.RedisDistributedLock;
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.vo.YifuUser;
......@@ -185,7 +188,29 @@ public class TEmployeeInfoController {
@PostMapping("/addNewEmployee")
//@PreAuthorize("@pms.hasPermission('temployeeinfo_add')")
public R<String> addNewEmployee(@Valid @RequestBody TEmployeeInfo tEmployeeInfo) {
return tEmployeeInfoService.addNewEmployee(tEmployeeInfo);
YifuUser user = SecurityUtils.getUser();
if (Common.isEmpty(user)){
return R.failed(CommonConstants.USER_FAIL);
}
// 获取redis分布式事务锁
String key = CacheConstants.EMP_ADD_LOCK + CommonConstants.DOWN_LINE_STRING + user.getId();
String requestId;
try {
requestId = RedisDistributedLock.getLock(key,"10");
} catch (Exception e) {
throw new RuntimeException(ResultConstants.NO_GETLOCK_DATA+CommonConstants.DOWN_LINE_STRING+e.getMessage());
}
try {
if (Common.isNotNull(requestId)) {
return tEmployeeInfoService.addNewEmployee(tEmployeeInfo);
} else {
return R.failed(ResultConstants.NO_GETLOCK_DATA);
}
}finally {
//主动释放锁
RedisDistributedLock.unlock(key, requestId);
}
}
/**
......
package com.yifu.cloud.plus.v1.yifu.archives.controller;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yifu.cloud.plus.v1.yifu.archives.entity.TEmployeeRetirement;
import com.yifu.cloud.plus.v1.yifu.archives.service.TEmployeeRetirementService;
import com.yifu.cloud.plus.v1.yifu.archives.vo.ChangeHandleFlagAllVo;
import com.yifu.cloud.plus.v1.yifu.archives.vo.ChangeHandleFlagVo;
import com.yifu.cloud.plus.v1.yifu.archives.vo.TEmployeeRetirementExportVo;
import com.yifu.cloud.plus.v1.yifu.archives.vo.TEmployeeRetirementSearchVo;
import com.yifu.cloud.plus.v1.yifu.common.core.util.R;
import com.yifu.cloud.plus.v1.yifu.common.security.annotation.Inner;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse;
import java.util.List;
import java.util.Set;
/**
* @author wzb
* @description 退休人员提醒
* @date 2023-05-18 16:11:02
*/
@RestController
@RequiredArgsConstructor
@RequestMapping("/temployeeretirement" )
@Tag(name = "退休人员提醒")
public class TEmployeeRetirementController {
private final TEmployeeRetirementService tEmployeeRetirementService;
/**
* 分页查询
*
* @author wzb
* @param page
* @param searchVo
* @return {@link R< IPage< TEmployeeRetirement>>}
*/
@Operation(summary = "分页查询", description = "分页查询")
@GetMapping("/page" )
public R<IPage<TEmployeeRetirement>> getTEmployeeRetirementPage(Page page, TEmployeeRetirementSearchVo searchVo) {
return R.ok(tEmployeeRetirementService.getTEmployeeRetirementPage(page,searchVo));
}
@Inner
@Operation(summary = "分页查询", description = "分页查询")
@PostMapping("/inner/retireeRemind" )
public void retireeRemind() {
tEmployeeRetirementService.retireeRemind();
}
/**
* 批量修改状态
*
* @author wzb
* @param changeHandleFlagAllVo
* @return {@link R}
*/
@Operation(summary = "批量修改状态", description = "修改状态")
@PostMapping("/changeHandleFlagAll")
public R changeHandleFlagAll( @RequestBody ChangeHandleFlagAllVo changeHandleFlagAllVo) {
return R.ok(tEmployeeRetirementService.changeHandleFlagAll(changeHandleFlagAllVo));
}
/**
* 修改状态
*
* @author wzb
* @param changeHandleFlagVo
* @return {@link R}
*/
@Operation(summary = "修改状态", description = "修改状态")
@PostMapping("/changeHandleFlag")
public R changeHandleFlag(@RequestBody ChangeHandleFlagVo changeHandleFlagVo) {
return R.ok(tEmployeeRetirementService.changeHandleFlag(changeHandleFlagVo));
}
/**
* 修改状态
*/
@Operation(summary = "操作日志详情", description = "操作日志详情")
@GetMapping("/getHandleFlagDetail")
public R getHandleFlagDetail(String id) {
return R.ok(tEmployeeRetirementService.getHandleFlagDetail(id));
}
/**
* 人员退休提醒批量导出
*
* @author wzb
* @param response
* @param searchVo
* @return void
*/
@Operation(summary = "人员退休提醒批量导出", description = "人员退休提醒批量导出")
@GetMapping("/export")
public void export(HttpServletResponse response, TEmployeeRetirementSearchVo searchVo) {
tEmployeeRetirementService.listExport(response, searchVo);
}
}
......@@ -109,4 +109,6 @@ public interface TEmployeeContractInfoMapper extends BaseMapper<TEmployeeContrac
void updateContractChange(@Param("idCard")String empIdcard, @Param("deptNo")String deptNo, @Param("oldDeptNo")String odlDeptNo);
String getContractByEmpIdCardAndDeptId(@Param("empIdCard") String empIdCard, @Param("deptId") String deptId);
void updateContractEnd( @Param("tEmployeeContractInfo")TEmployeeContractInfo tEmployeeContractInfo);
}
......@@ -112,4 +112,6 @@ public interface TEmployeeProjectMapper extends BaseMapper<TEmployeeProject> {
List<BusinessEmployeeExtentExcelVO> getTEmployeeBusinessList(@Param("query") THroBusinessUserQuery query);
int updateSocialAndFundStatusById(@Param("project")TEmployeeProject project);
int updateChangeById(@Param("project")TEmployeeProject project);
}
package com.yifu.cloud.plus.v1.yifu.archives.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.yifu.cloud.plus.v1.yifu.archives.entity.TEmployeeRetirementFlagDetail;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* @author 86187
* @description 针对表【t_employee_retirement_flag_detail】的数据库操作Mapper
* @createDate 2023-05-20 16:18:07
* @Entity generator.domain.TEmployeeRetirementFlagDetail
*/
@Mapper
public interface TEmployeeRetirementFlagDetailMapper extends BaseMapper<TEmployeeRetirementFlagDetail> {
List<TEmployeeRetirementFlagDetail> getDatail(@Param("id") String id);
}
package com.yifu.cloud.plus.v1.yifu.archives.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.archives.entity.TEmployeeRetirement;
import com.yifu.cloud.plus.v1.yifu.archives.vo.*;
import com.yifu.cloud.plus.v1.yifu.social.vo.TDispatchInfoSearchVo;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.web.bind.annotation.RequestBody;
import java.util.List;
/**
* @author 86187
* @description 针对表【t_employee_retirement】的数据库操作Mapper
* @createDate 2023-05-18 15:40:46
* @Entity generator.domain.TEmployeeRetirement
*/
@Mapper
public interface TEmployeeRetirementMapper extends BaseMapper<TEmployeeRetirement> {
IPage<TEmployeeRetirement> getTEmployeeRetirementPage(Page page, @Param("userId") String userId,@Param("searchVo") TEmployeeRetirementSearchVo searchVo);
List<TEmployeeRetirement> getBirthday(@Param("oo") String oo, @Param("pp") String pp);
boolean changeHandleFlagAll(@Param("changeHandleFlagAllVo") ChangeHandleFlagAllVo changeHandleFlagAllVo);
boolean changeHandleFlag(@Param("changeHandleFlagVo")ChangeHandleFlagVo changeHandleFlagVo);
int selectByEmpIdcard(@Param("empIdCard") String empIdCard,@Param("deptNo") String deptNo);
int add(@Param("tEmployeeRetirement") TEmployeeRetirement tEmployeeRetirement);
long selectExportCount(@Param("tEmployeeRetirement") TEmployeeRetirementExportVo tEmployeeRetirement);
List<TEmployeeRetirementExportVo>noPageDiy(@Param("userId") String userId,@Param("searchVo")TEmployeeRetirementSearchVo searchVo);
int noPageCountDiy(@Param("userId") String userId,@Param("searchVo")TEmployeeRetirementSearchVo searchVo);
String selectByIdd(@Param("id")Integer id);
}
......@@ -42,6 +42,20 @@ public interface TSettleDomainMapper extends BaseMapper<TSettleDomain> {
List<TSettleDomain> getPage(@Param("tSettleDomain") TSettleDomain tSettleDomain);
/**
* 分页获取项目名称缩小可见范围
*
* @author wzb
* @param page
* @param userId
* @param departName
* @param nameOrNo
* @param customerId
* @param flag
* @return {@link IPage< TSettleDomain>}
*/
IPage<TSettleDomain> getPagePerMission(Page<TSettleDomain> page, @Param("userId") String userId,@Param("departName") String departName,@Param("nameOrNo") String nameOrNo,@Param("customerId") String customerId, @Param("flag") String flag);
IPage<IdNameNoVo> getUnitPage(Page<IdNameNoVo> page, @Param("idNameNoVo") IdNameNoVo idNameNoVo);
/**
* @param departNo
......
......@@ -22,8 +22,10 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.pig4cloud.plugin.excel.vo.ErrorMessage;
import com.yifu.cloud.plus.v1.yifu.archives.entity.TCustomerInfo;
import com.yifu.cloud.plus.v1.yifu.archives.entity.TCutsomerDataPermisson;
import com.yifu.cloud.plus.v1.yifu.archives.entity.TEmpChangeInfo;
import com.yifu.cloud.plus.v1.yifu.archives.entity.TSettleDomain;
import com.yifu.cloud.plus.v1.yifu.archives.vo.TEmpChangeInfoNewVO;
import com.yifu.cloud.plus.v1.yifu.archives.vo.TEmpChangeInfoVO;
import com.yifu.cloud.plus.v1.yifu.common.core.util.R;
import org.springframework.validation.BindingResult;
......@@ -70,5 +72,22 @@ public interface TEmpChangeInfoService extends IService<TEmpChangeInfo> {
*/
R<List<TCustomerInfo>> getAllUint(String customerName);
/**
* 分页获取项目名称缩小可见范围
*
* @author wzb
* @param page
* @param departName
* @param nameOrNo
* @param customerId
* @param flag
* @return {@link IPage< TSettleDomain>}
*/
IPage<TSettleDomain> getAllDeptPagePermission(Page page, String departName, String nameOrNo, String customerId,String flag);
IPage<TSettleDomain> getAllDeptPage(Page page, String deptName, String nameOrNo, String customerId,String flag);
R<Boolean> changeEmpProArcNew(TEmpChangeInfoNewVO changeVo);
}
......@@ -256,4 +256,6 @@ public interface TEmployeeProjectService extends IService<TEmployeeProject> {
* @date: 2021/8/10
*/
R<List<BusinessEmployeeExtentExcelVO>> exportByParams(THroBusinessUserQuery query);
void updateChangeById(TEmployeeProject oldEmpProject);
}
package com.yifu.cloud.plus.v1.yifu.archives.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.yifu.cloud.plus.v1.yifu.archives.entity.TEmployeeRetirementFlagDetail;
;
/**
* @author wzb
* @description 针对表【t_employee_retirement_flag_detail】的数据库操作Service
* @createDate 2023-05-20 16:18:07
*/
public interface TEmployeeRetirementFlagDetailService extends IService<TEmployeeRetirementFlagDetail> {
}
package com.yifu.cloud.plus.v1.yifu.archives.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.yifu.cloud.plus.v1.yifu.archives.entity.TEmployeeRetirement;
import com.yifu.cloud.plus.v1.yifu.archives.entity.TEmployeeRetirementFlagDetail;
import com.yifu.cloud.plus.v1.yifu.archives.vo.ChangeHandleFlagAllVo;
import com.yifu.cloud.plus.v1.yifu.archives.vo.ChangeHandleFlagVo;
import com.yifu.cloud.plus.v1.yifu.archives.vo.TEmployeeRetirementSearchVo;
import javax.servlet.http.HttpServletResponse;
import java.util.List;
/**
* @author 86187
* @description 针对表【t_employee_retirement】的数据库操作Service
* @createDate 2023-05-18 15:40:46
*/
public interface TEmployeeRetirementService extends IService<TEmployeeRetirement> {
/**
* 人员退休提醒分页列表
*
* @author wzb
* @param page
* @param searchVo
* @return {@link IPage< TEmployeeRetirement>}
*/
IPage<TEmployeeRetirement> getTEmployeeRetirementPage(Page page, TEmployeeRetirementSearchVo searchVo);
/**
* 批量修改状态
*
* @author wzb
* @param changeHandleFlagAllVo
* @return {@link boolean}
*/
boolean changeHandleFlagAll(ChangeHandleFlagAllVo changeHandleFlagAllVo);
/**
* 修改状态
*
* @author wzb
* @param changeHandleFlagVo
* @return {@link boolean}
*/
boolean changeHandleFlag(ChangeHandleFlagVo changeHandleFlagVo);
/**
* 退休提醒人员导出
*
* @author wzb
* @param response
* @param searchVo
* @return void
*/
void listExport (HttpServletResponse response, TEmployeeRetirementSearchVo searchVo);
/**
* 退休提醒定时任务
*
* @author wzb
* @param
* @return void
*/
void retireeRemind() ;
/**
* 获取处理日志
*
* @author wzb
* @param id
* @return {@link List< TEmployeeRetirementFlagDetail>}
*/
List<TEmployeeRetirementFlagDetail> getHandleFlagDetail(String id);
}
......@@ -2241,8 +2241,8 @@ public class TEmployeeInfoServiceImpl extends ServiceImpl<TEmployeeInfoMapper, T
TEmployeeContractAudit contractAudit = new TEmployeeContractAudit();
contractAudit.setLinkId(c.getId());
contractAudit.setLinkType(CommonConstants.ONE_INT);
contractAudit.setCreateBy(c.getCreateBy());
contractAudit.setCreateName(c.getCreateName());
contractAudit.setCreateBy(vo.getCreateBy());
contractAudit.setCreateName(vo.getCreateName());
contractAudit.setCreateTime(LocalDateTime.now());
//审核通过
c.setAuditUserName(c.getCreateBy());
......
......@@ -791,7 +791,7 @@ public class TEmployeeProjectServiceImpl extends ServiceImpl<TEmployeeProjectMap
//根据身份证获取人员档案
tEmployeeInfo= tEmployeeInfoMapper.selectOne(Wrappers.<TEmployeeInfo>query().lambda()
.eq(TEmployeeInfo::getEmpIdcard, excel.getEmpIdcard())
.eq(TEmployeeInfo::getDeleteFlag, CommonConstants.STATUS_NORMAL));
.eq(TEmployeeInfo::getDeleteFlag, CommonConstants.STATUS_NORMAL).last(CommonConstants.LAST_ONE_SQL));
//根据身份证和项目编码获取项目档案
tEmployeeProject = baseMapper.selectOne(Wrappers.<TEmployeeProject>query().lambda()
.eq(TEmployeeProject::getEmpIdcard, excel.getEmpIdcard())
......@@ -1089,6 +1089,14 @@ public class TEmployeeProjectServiceImpl extends ServiceImpl<TEmployeeProjectMap
for (TEmployeeProject delProject : list) {
++i;
try {
if (delProject.getContractStatus() == CommonConstants.dingleDigitIntArray[1] ||
delProject.getInsuranceStatus() != CommonConstants.dingleDigitIntArray[0] ||
delProject.getSocialStatus() != CommonConstants.dingleDigitIntArray[0] ||
delProject.getFundStatus() != CommonConstants.dingleDigitIntArray[0]) {
errorList.add(new ErrorMessage(i, delProject.getEmpName() + ";" +
delProject.getEmpIdcard() + ";" + delProject.getDeptNo() + ";" + "人员在该项目下存在进行中/未完结的服务,禁止删除"));
continue;
}
if (CommonConstants.dingleDigitIntArray[0] == delProject.getStatus()) {
delProject.setDeleteFlag(CommonConstants.ONE_STRING);
updList.add(delProject);
......@@ -1697,4 +1705,15 @@ public class TEmployeeProjectServiceImpl extends ServiceImpl<TEmployeeProjectMap
}
return R.ok(this.baseMapper.getTEmployeeBusinessList(query));
}
/**
* @Author fxj
* @Description 划转数据更新
* @Date 11:42 2023/5/9
* @Param
* @return
**/
@Override
public void updateChangeById(TEmployeeProject oldEmpProject) {
baseMapper.updateChangeById(oldEmpProject);
}
}
package com.yifu.cloud.plus.v1.yifu.archives.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.yifu.cloud.plus.v1.yifu.archives.entity.TEmployeeRetirementFlagDetail;
import com.yifu.cloud.plus.v1.yifu.archives.mapper.TEmployeeRetirementFlagDetailMapper;
import com.yifu.cloud.plus.v1.yifu.archives.service.TEmployeeRetirementFlagDetailService;
import org.springframework.stereotype.Service;
/**
* @author 86187
* @description 针对表【t_employee_retirement_flag_detail】的数据库操作Service实现
* @createDate 2023-05-20 16:18:07
*/
@Service
public class TEmployeeRetirementFlagDetailServiceImpl extends ServiceImpl<TEmployeeRetirementFlagDetailMapper, TEmployeeRetirementFlagDetail>
implements TEmployeeRetirementFlagDetailService {
}
......@@ -806,6 +806,11 @@
where a.EMP_IDCARD = #{idCard} and a.DEPT_NO = #{oldDeptNo} and b.DEPART_NO= #{deptNo} and b.DELETE_FLAG='0';
</update>
<update id="updateContractEnd">
update t_employee_contract_info a
set a.CONTRACT_END=#{tEmployeeContractInfo.contractEnd}
where a.ID=#{tEmployeeContractInfo.id}
</update>
<select id="getContractByEmpIdCardAndDeptId" resultType="java.lang.String">
select
e.CONTRACT_START
......
......@@ -925,14 +925,9 @@
WHERE
x.DELETE_FLAG = '0'
AND (
(
x.AUDIT_STATUS = '2'
AND x.IN_USE = '0'
)
OR (
x.AUDIT_STATUS = '1'
AND x.IN_USE = '1'
)
( x.AUDIT_STATUS = '2' AND x.IN_USE = '0' )
OR
( x.AUDIT_STATUS = '1' AND x.IN_USE = '1' )
)
<if test="checkVo != null">
<if test="checkVo.idCards != null">
......
......@@ -56,6 +56,7 @@
<result property="socialStatus" column="SOCIAL_STATUS"/>
<result property="fundStatus" column="FUND_STATUS"/>
<result property="contractStatus" column="CONTRACT_STATUS"/>
<result property="empLabel" column="EMP_LABEL"/>
</resultMap>
<resultMap id="tEmployeeProjectExportMap" type="com.yifu.cloud.plus.v1.yifu.archives.vo.EmployeeProjectExportVO">
......@@ -115,6 +116,8 @@
<result property="createName" column="CREATE_NAME"/>
<result property="createTime" column="CREATE_TIME"/>
<result property="contractStatus" column="CONTRACT_STATUS"/>
<result property="empLabel" column="EMP_LABEL"/>
<result property="contractParty" column="CONTRACT_PARTY"/>
</resultMap>
<sql id="Base_Column_List">
......@@ -168,7 +171,8 @@
a.SOCIAL_PROVINCE,
a.SOCIAL_CITY,
a.SOCIAL_TOWN,
a.SALARY_STATUS
a.SALARY_STATUS,
a.EMP_LABEL
</sql>
<sql id="Base_Export_List">
......@@ -231,7 +235,10 @@
a.CREATE_NAME,
a.CREATE_TIME,
b.EMP_EMAIL,
b.EMP_NATRUE AS PROEMP_NATRUE
b.EMP_NATRUE AS PROEMP_NATRUE,
a.EMP_LABEL,
t.CONTRACT_PARTY
</sql>
<sql id="tEmployeeProject_where">
......@@ -421,6 +428,9 @@
#{idStr}
</foreach>
</if>
<if test="tEmployeeProject.empLabel != null">
AND a.EMP_LABEL = #{tEmployeeProject.empLabel}
</if>
</if>
</sql>
......@@ -581,12 +591,22 @@
#{idStr}
</foreach>
</if>
<if test="tEmployeeProject.empLabel != null">
AND a.EMP_LABEL = #{tEmployeeProject.empLabel}
</if>
</if>
</sql>
<update id="updateExcelEmpProject" parameterType="java.util.List">
update t_employee_project
<trim prefix="set" suffixOverrides=",">
<trim prefix="EMP_LABEL =case" suffix="end,">
<foreach collection="list" item="i" index="index">
<if test="i.empLabel!=null">
when ID=#{i.id} then #{i.empLabel}
</if>
</foreach>
</trim>
<trim prefix="EMP_NATRUE =case" suffix="end,">
<foreach collection="list" item="i" index="index">
<if test="i.empNatrue!=null">
......@@ -692,7 +712,7 @@
(ID,EMP_ID,EMP_NATRUE,EMP_NAME,EMP_IDCARD,STATUS,PROJECT_STATUS,EMP_CODE,DEPT_NO,CONTRACT_TYPE,POST,
DEPT_ID,DEPT_NAME,UNIT_ID,UNIT_NAME,UNIT_NO,EMP_NO,TRY_PERIOD,ENJOIN_DATE,BANK_NAME,BANK_NO,BANK_SUB_NAME,
BUSINESS_PRIMARY_TYPE,BUSINESS_SECOND_TYPE,BUSINESS_THIRD_TYPE,WORKING_HOURS,PROJECT_SOURCE,DELETE_FLAG,
CREATE_BY,CREATE_NAME,CREATE_TIME,INSURANCE_STATUS,SOCIAL_STATUS,FUND_STATUS)
CREATE_BY,CREATE_NAME,CREATE_TIME,INSURANCE_STATUS,SOCIAL_STATUS,FUND_STATUS,EMP_LABEL)
VALUES
<foreach collection="list" item="item" index="index" separator=",">
(
......@@ -729,13 +749,19 @@
now(),
0,
0,
0
0,
#{item.empLabel,jdbcType=VARCHAR}
)
</foreach>
</insert>
<update id="updateReduceEmpProject" parameterType="java.util.List">
update t_employee_project
<trim prefix="set" suffixOverrides=",">
<trim prefix="EMP_LABEL =case" suffix="end,">
<foreach collection="list" item="i" index="index">
when ID=#{i.id} then #{i.empLabel}
</foreach>
</trim>
<trim prefix="LEAVE_TIME =case" suffix="end,">
<foreach collection="list" item="i" index="index">
when ID=#{i.id} then now()
......@@ -812,6 +838,15 @@
<include refid="Base_Export_List"/>
FROM t_employee_project a
left join t_employee_info b on a.EMP_ID = b.id
LEFT JOIN (
SELECT
t1.EMP_ID ,t1.CONTRACT_PARTY,t1.IN_USE,t1.DEPT_NO
FROM
t_employee_contract_info t1
<!-- INNER JOIN ( SELECT EMP_ID, MAX( CREATE_TIME ) CREATE_TIME FROM t_employee_contract_info GROUP BY EMP_ID ) t2 ON t2.EMP_ID = t1.EMP_ID-->
<!-- AND t2.CREATE_TIME = t1.CREATE_TIME-->
WHERE t1.IN_USE='0'
) AS t ON t.EMP_ID = a.EMP_ID AND a.DEPT_NO =t.DEPT_NO
LEFT JOIN sys_area a1 on a1.id=b.ID_PROVINCE
LEFT JOIN sys_area a2 on a2.id=b.ID_CITY
LEFT JOIN sys_area a3 on a3.id=b.ID_TOWN
......@@ -827,7 +862,9 @@
<if test="tEmployeeProject.authSql != null and tEmployeeProject.authSql.trim() != ''">
${tEmployeeProject.authSql}
</if>
</where>
order by a.CREATE_TIME desc
<if test="tEmployeeProject != null">
<if test="tEmployeeProject.limitStart != null">
......@@ -841,12 +878,23 @@
count(1)
FROM t_employee_project a
left join t_employee_info b on a.EMP_ID = b.id
LEFT JOIN (
SELECT
t1.EMP_ID ,t1.CONTRACT_PARTY,t1.IN_USE,t1.DEPT_NO
FROM
t_employee_contract_info t1
INNER JOIN ( SELECT EMP_ID, MAX( CREATE_TIME ) CREATE_TIME FROM t_employee_contract_info GROUP BY EMP_ID ) t2 ON t2.EMP_ID = t1.EMP_ID
AND t2.CREATE_TIME = t1.CREATE_TIME
WHERE
t1.IN_USE='0'
) AS t ON t.EMP_ID = a.EMP_ID AND a.DEPT_NO=t.DEPT_NO
<where>
a.DELETE_FLAG = '0'
<include refid="exportTEmployeeProject_where"/>
<if test="tEmployeeProject.authSql != null and tEmployeeProject.authSql.trim() != ''">
${tEmployeeProject.authSql}
</if>
</where>
</select>
......@@ -999,4 +1047,18 @@
</trim>
WHERE a.id=#{project.id}
</update>
<update id="updateChangeById" >
update t_employee_project a
<trim prefix="set" suffixOverrides=",">
<if test="project.socialStatus != null">SOCIAL_STATUS=#{project.socialStatus},</if>
<if test="project.fundStatus != null">FUND_STATUS=#{project.fundStatus},</if>
<if test="project.socialProvince == null">SOCIAL_PROVINCE= null,</if>
<if test="project.socialCity == null">SOCIAL_CITY=null,</if>
<if test="project.socialTown == null">SOCIAL_TOWN=null,</if>
<if test="project.contractStatus != null">CONTRACT_STATUS=#{project.contractStatus},</if>
<if test="project.contractType == null">CONTRACT_TYPE=null,</if>
</trim>
WHERE a.id=#{project.id}
</update>
</mapper>
<?xml version="1.0" encoding="UTF-8"?>
<!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.archives.mapper.TEmployeeRetirementFlagDetailMapper">
<resultMap id="BaseResultMap" type="com.yifu.cloud.plus.v1.yifu.archives.entity.TEmployeeRetirementFlagDetail">
<id property="id" column="ID" jdbcType="VARCHAR"/>
<result property="datailId" column="DATAIL_ID" jdbcType="VARCHAR"/>
<result property="createBy" column="CREATE_BY" jdbcType="VARCHAR"/>
<result property="createName" column="CREATE_NAME" jdbcType="VARCHAR"/>
<result property="createTime" column="CREATE_TIME" jdbcType="TIMESTAMP"/>
<result property="updateBy" column="UPDATE_BY" jdbcType="VARCHAR"/>
<result property="updateTime" column="UPDATE_TIME" jdbcType="TIMESTAMP"/>
<result property="context" column="CONTEXT" jdbcType="VARCHAR"/>
</resultMap>
<sql id="Base_Column_List">
ID,CREATE_BY,CREATE_NAME,DATAIL_ID,
CREATE_TIME,UPDATE_BY,UPDATE_TIME,
CONTEXT
</sql>
<select id="getDatail" resultType="com.yifu.cloud.plus.v1.yifu.archives.entity.TEmployeeRetirementFlagDetail">
SELECT a.ID,a.DATAIL_ID,a.CREATE_NAME,a.CREATE_BY,a.CREATE_TIME,a.CONTEXT
FROM t_employee_retirement_flag_detail a
where a.DATAIL_ID=#{id}
ORDER BY a.CREATE_TIME DESC
</select>
</mapper>
......@@ -265,6 +265,34 @@
WHERE a.id=#{id} GROUP BY a.id
</select>
<select id="getPagePerMission" resultMap="tSettleDomainMap">
SELECT
<include refid="Base_Column_List"/>
FROM
t_settle_domain a
LEFT JOIN t_cutsomer_data_permisson b ON b.SETTLE_DOMAIN_NO = a.DEPART_NO
WHERE
b.USER_ID = #{userId}
AND a.DELETE_FLAG = '0'
<if test="departName != null and departName.trim() != ''">
and a.DEPART_NAME like concat("%",#{departName},"%")
</if>
<if test="nameOrNo != null and nameOrNo.trim() != ''">
and (a.DEPART_NAME like concat("%",#{nameOrNo},"%") or a.DEPART_NO like concat("%",#{nameOrNo},"%"))
</if>
<if test="customerId != null and customerId.trim() != ''">
and a.CUSTOMER_ID =#{customerId}
</if>
<if test="flag != null">
and a.STOP_FLAG='0'
</if>
GROUP BY
b.USER_ID,
b.SETTLE_DOMAIN_NO
</select>
<select id="selectAllSettleDomainSelectVos" resultMap="tSettleDomainSelectVoMap">
SELECT
<include refid="Base_Column_List"/>,
......
......@@ -9,7 +9,6 @@ spring:
matching-strategy: ant_path_matcher
redis:
host: 127.0.0.1
password: '@yf_2017'
cloud:
sentinel:
eager: true
......
......@@ -154,4 +154,9 @@ public interface CacheConstants {
//社保公积金派单
String PAYMENT_DISPATCH_BATCH_IMPORT = "payment_dispatch_batch_import";
String EMP_ADD_LOCK ="emp_add_lock";
String FUND_IMPORT_HANDLE_LOCK = "fund_import_handle_handle_lock";
}
......@@ -341,7 +341,7 @@ public interface CommonConstants {
public static final String JAR_TYPE = "jar";
int BATCH_COUNT = 100;
int BATCH_COUNT1 = 2000;
String IMPORT_DATA_ANALYSIS_ERROR = "数据导入解析异常,请检查表数据格式(1.日期格式:yyyy-MM-dd,2.比例为整数且不含%)";
String IMPORT_DATA_ANALYSIS_ERROR = "数据导入解析异常,请检查表数据格式(常见错误:1.日期格式:yyyy-MM-dd,2.比例为整数且不含%)";
String IMPORT_DATA_ANALYSIS_ERROR_TWO = "数据导入解析异常,请检查表数据格式";
String CREATE_TIME = "CREATE_TIME";
......@@ -572,4 +572,31 @@ public interface CommonConstants {
String NO_SETTLE_DOMAIN_AUTH = "Hro系统中身份证号不存在,或者没有该人员的结算主体权限";
String HRO_EMPLOYEE_NULL = "Hro人员列表为空";
int THIRTY_INT_NEGATIVE = -30;
/*
* 启用停用状态
*/
String START = "启用";
String STOP = "停用";
String CONTRACT_TYPE_TWO="无固定期限";
String CONTRACT_TYPE_ZERO="已完成一定工作任务为期限";
Integer ZERO_INTEGER = 0;
Integer ONE_INTEGER = 1;
Integer TWO_INTEGER = 2;
Integer THREE_INTEGER = 3;
Integer FOUR_INTEGER = 4;
Integer FIVE_INTEGER =5;
Integer SIX_INTEGER = 6;
Integer SEVEN_INTEGER = 7;
Integer EIGHT_INTEGER =8;
Integer NINE_INTEGER = 9;
Integer TEN_INTEGER = 10;
Integer ELEVEN_INTEGER =11;
}
......@@ -153,5 +153,10 @@ public class ExcelAttributeConstants {
public static final String CUSTOMER = "customer";
public static final String HOUSEHOLD = "household";
// 派单办理失败类型
public static final String DISPATCH_HANDLE_REASON = "dispatch-audit-add-reason";
// 社保办理失败类型
public static final String SOCIAL_DISPATCH_HANDLE_REASON = "social-conduct-add-reason";
// 公积金办理失败类型
public static final String FUND_DISPATCH_HANDLE_REASON = "fund-conduct-add-reason";
}
......@@ -547,4 +547,28 @@ public interface ErrorCodes {
**/
String EMP_DISPATCH_EMP_CONTRACT_SUB_NAME_NOT_EMPTY = "emp.dispatch.emp.contract.sub.name.not.empty";
/**
* 公积金办理:无办理权限或无可需要办理的公积金数据
*/
String FUND_IMPORT_HANDLE_NOT_EXITS = "fund.import.handle.not.exits";
/**
* 公积金办理:办理失败,失败原因必填
*/
String FUND_IMPORT_HANDLE_REASON_NOT_EMPY = "fund_import_handle_reason_not_empty";
/**
* 社保办理:任一险种办理失败,失败原因必填
*/
String SOCIAL_IMPORT_HANDLE_REASON_NOT_EMPY = "social_import_handle_reason_not_empty";
/**
* 社保办理失败,必须办理其中一个险种
*/
String SOCIAL_IMPORT_HANDLE_NOT_EMPY = "social_import_handle_not_empty";
/**
* 社保办理:无办理权限或无可需要办理的社保数据
*/
String SOCIAL_IMPORT_HANDLE_NOT_EXITS = "social.import.handle.not.exits";
/**
* 社保办理:该数据已处理,请勿重复操作
*/
String SOCIAL_IMPORT_SAME_INFO = "social.import.same.info";
}
package com.yifu.cloud.plus.v1.yifu.common.core.util;
import lombok.Data;
import lombok.Getter;
import lombok.Setter;
import java.io.Serializable;
import java.util.HashSet;
......@@ -10,7 +12,7 @@ import java.util.Set;
* @author fang
*/
@Data
public class ErrorMessage implements Serializable {
public class ErrorMessage<T> implements Serializable {
/**
* 行数或INDEX
*/
......@@ -29,18 +31,35 @@ public class ErrorMessage implements Serializable {
* 错误信息
*/
private String message;
/**
* 数据
*/
private T data;
public ErrorMessage(Integer lineNum, String message) {
this.lineNum = lineNum;
this.color = "red";
this.message = message;
}
public ErrorMessage(Integer lineNum, String message, T t) {
this.lineNum = lineNum;
this.color = "red";
this.message = message;
this.data = t;
}
public ErrorMessage(Integer lineNum, String message, String color) {
this.lineNum = lineNum;
this.color = color;
this.message = message;
}
public ErrorMessage(Integer lineNum, String message, String color, T t) {
this.lineNum = lineNum;
this.color = color;
this.message = message;
this.data = t;
}
public ErrorMessage(Integer lineNum, String message, String color, String name) {
this.lineNum = lineNum;
this.color = color;
......
......@@ -214,6 +214,15 @@ social.hold.is.empty=\u793E\u4FDD\u6237\u4E0D\u80FD\u4E3A\u7A7A
fund.hold.is.empty=\u516C\u79EF\u91D1\u6237\u4E0D\u80FD\u4E3A\u7A7A
fund.import.handle.not.exits=\u65E0\u529E\u7406\u6743\u9650\u6216\u65E0\u53EF\u9700\u8981\u529E\u7406\u7684\u516C\u79EF\u91D1\u6570\u636E
fund_import_handle_reason_not_empty=\u516C\u79EF\u91D1\u529E\u7406\uFF1A\u529E\u7406\u5931\u8D25\uFF0C\u5931\u8D25\u7C7B\u578B\u5FC5\u586B
social_import_handle_reason_not_empty=\u793E\u4FDD\u529E\u7406\uFF1A\u4EFB\u4E00\u9669\u79CD\u529E\u7406\u5931\u8D25\uFF0C\u5931\u8D25\u7C7B\u578B\u5FC5\u586B
social_import_handle_not_empty=\u793E\u4FDD\u529E\u7406\u5931\u8D25\uFF0C\u5FC5\u987B\u529E\u7406\u5176\u4E2D\u4E00\u4E2A\u9669\u79CD
social.import.handle.not.exits=\u65E0\u529E\u7406\u6743\u9650\u6216\u65E0\u53EF\u9700\u8981\u529E\u7406\u7684\u793E\u4FDD\u6570\u636E
social.import.same.info=\u8BE5\u6570\u636E\u5DF2\u5904\u7406\uFF0C\u8BF7\u52FF\u91CD\u590D\u64CD\u4F5C
......
......@@ -11,6 +11,7 @@ import com.yifu.cloud.plus.v1.yifu.common.core.constant.CommonConstants;
import com.yifu.cloud.plus.v1.yifu.common.core.constant.SecurityConstants;
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.vo.YifuUser;
import com.yifu.cloud.plus.v1.yifu.common.dapr.config.DaprArchivesProperties;
import lombok.extern.log4j.Log4j2;
import org.springframework.beans.factory.annotation.Autowired;
......@@ -280,7 +281,7 @@ public class ArchivesDaprUtil {
* @Param type 0 审核通过 1 审核不通过
* @return
**/
public R<Boolean> updateEmpInfo(String empIdCard, String projectNo, String contractId,String type,String remarkTemp){
public R<Boolean> updateEmpInfo(String empIdCard, String projectNo, String contractId,String type,String remarkTemp, YifuUser user){
if (Common.isEmpty(empIdCard)
|| Common.isEmpty(projectNo)
|| Common.isEmpty(type)){
......@@ -292,6 +293,8 @@ public class ArchivesDaprUtil {
vo.setContractId(contractId);
vo.setRemarkTemp(remarkTemp);
vo.setType(type);
vo.setCreateBy(user.getId());
vo.setCreateName(user.getNickname());
R<Boolean> res = HttpDaprUtil.invokeMethodPost(
daprArchivesProperties.getAppUrl(),daprArchivesProperties.getAppId()
,"/temployeeinfo/inner/updateEmpInfo" , JSON.toJSONString(vo), Boolean.class, SecurityConstants.FROM_IN);
......
......@@ -24,7 +24,7 @@ import java.util.List;
/**
* @author licancan
* @description 对接ekp订
* @description 对接ekp订
* @date 2022-08-31 15:35:20
*/
@Log4j2
......
......@@ -28,7 +28,7 @@ seata:
enable-degrade: false # 降级开关
disable-global-transaction: false # 禁用全局事务(默认false)
grouplist:
default: 192.168.0.153:33091
default: 192.168.1.65:33091
transport:
shutdown:
wait: 3
......
......@@ -341,22 +341,31 @@ public class DoJointInsuranceTask {
public void updateSalarySettleStatus(EkpStatusParamVo vo) {
List<EkpSocialViewVo> viewVo;
try {
//根据结算单号获取明细id和结算状态
viewVo = ekpSettleService.selectSalarylViewBySettleNo(vo.getSettleNo(), vo.getPayFlag());
if (!viewVo.isEmpty()) {
viewVo.forEach(e -> e.setPayFlag(vo.getPayFlag()));
R<Boolean> flag = salaryDaprUtil.updateSalarySettleStatus(viewVo);
if (Common.isEmpty(flag) || Boolean.TRUE.equals(!flag.getData())) {
TUpdateStatusError error = new TUpdateStatusError();
error.setSettleNo(vo.getSettleNo());
error.setStatus(CommonConstants.ZERO_INT);
error.setTitle("薪资结算状态同步失败");
error.setTypeFlag(CommonConstants.FIVE_STRING);
error.setCreateTime(DateUtil.getCurrentDateTime());
error.setSettleType(vo.getPayFlag());
updateStatusErrorMapper.insert(error);
}
}
//薪资结算状态同步暂时解决方案为定时任务去更新
TUpdateStatusError error = new TUpdateStatusError();
error.setSettleNo(vo.getSettleNo());
error.setStatus(CommonConstants.ZERO_INT);
error.setTitle("薪资结算状态同步失败");
error.setTypeFlag(CommonConstants.FIVE_STRING);
error.setCreateTime(DateUtil.getCurrentDateTime());
error.setSettleType(vo.getPayFlag());
updateStatusErrorMapper.insert(error);
// //根据结算单号获取明细id和结算状态
// viewVo = ekpSettleService.selectSalarylViewBySettleNo(vo.getSettleNo(), vo.getPayFlag());
// if (!viewVo.isEmpty()) {
// viewVo.forEach(e -> e.setPayFlag(vo.getPayFlag()));
// R<Boolean> flag = salaryDaprUtil.updateSalarySettleStatus(viewVo);
// if (Common.isEmpty(flag) || Boolean.TRUE.equals(!flag.getData())) {
// TUpdateStatusError error = new TUpdateStatusError();
// error.setSettleNo(vo.getSettleNo());
// error.setStatus(CommonConstants.ZERO_INT);
// error.setTitle("薪资结算状态同步失败");
// error.setTypeFlag(CommonConstants.FIVE_STRING);
// error.setCreateTime(DateUtil.getCurrentDateTime());
// error.setSettleType(vo.getPayFlag());
// updateStatusErrorMapper.insert(error);
// }
// }
} catch (Exception e) {
TUpdateStatusError error = new TUpdateStatusError();
error.setSettleNo(vo.getSettleNo());
......
......@@ -20,8 +20,8 @@ spring:
type: com.zaxxer.hikari.HikariDataSource
driver-class-name: com.mysql.cj.jdbc.Driver
username: root
password: ekp!@#123
jdbc-url: jdbc:mysql://36.7.147.19:20023/ekp?characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&allowMultiQueries=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=Asia/Shanghai&nullCatalogMeansCurrent=true&allowPublicKeyRetrieval=true
password: ll_mysql
jdbc-url: jdbc:mysql://192.168.1.106:23306/ekp?characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&allowMultiQueries=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=Asia/Shanghai&nullCatalogMeansCurrent=true&allowPublicKeyRetrieval=true
hikari:
minimum-idle: 10 # 最小空闲连接数量
idle-timeout: 60000 # 空闲连接存活最大时间,默认600000(10分钟)
......
......@@ -52,4 +52,12 @@ public class ArchiveTask {
log.info("-------------每天更新人员档案、项目档案的过期合同为2不在用-定时任务结束------------");
}
public void retireeRemind() {
log.info("-------------每日凌晨1点人员退休提醒-定时任务开始------------");
HttpDaprUtil.invokeMethodPost(daprArchivesProperties.getAppUrl(), daprArchivesProperties.getAppId(),
"/temployeeretirement/inner/retireeRemind", "", Object.class,
SecurityConstants.FROM_IN);
log.info("-------------每日凌晨1点人员退休提醒-定时任务开始------------");
}
}
\ No newline at end of file
# 忽略匹配下列规则的Git 提交 V2.1.0
### gradle ###
.gradle
/build/
!gradle/wrapper/gradle-wrapper.jar
### STS ###
.settings/
.apt_generated
.classpath
.factorypath
.project
.settings
.springBeans
bin/
### IntelliJ IDEA ###
.idea
*.iws
*.iml
*.ipr
*.lock
rebel.xml
### NetBeans ###
nbproject/private/
build/
nbbuild/
nbdist/
.nb-gradle/
### maven ###
target/
*.war
*.ear
*.zip
*.tar
*.tar.gz
### logs ####
/logs/
*.log
### temp ignore ###
*.cache
*.diff
*.patch
*.tmp
*.java~
*.properties~
*.xml~
### system ignore ###
.DS_Store
Thumbs.db
Servers
.metadata
upload
gen_code
### node ###
node_modules
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>yifu</artifactId>
<groupId>com.yifu.cloud.plus.v1</groupId>
<version>1.0.0</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>yifu-msg</artifactId>
<description>EKP消息服务</description>
<packaging>pom</packaging>
<!--项目子模块-->
<modules>
<module>yifu-msg-api</module>
<module>yifu-msg-biz</module>
</modules>
</project>
<?xml version="1.0"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.yifu.cloud.plus.v1</groupId>
<artifactId>yifu</artifactId>
<version>1.0.0</version>
<relativePath>../../pom.xml</relativePath>
</parent>
<artifactId>yifu-msg-api</artifactId>
<packaging>jar</packaging>
<description>身份证+手机号验证模块</description>
<dependencies>
<!-- core 工具类 -->
<dependency>
<groupId>com.yifu.cloud.plus.v1</groupId>
<artifactId>yifu-common-core</artifactId>
</dependency>
<!--swagger 注解-->
<!--<dependency>
<groupId>io.swagger.core.v3</groupId>
<artifactId>swagger-annotations</artifactId>
</dependency>-->
<!--feign 注解依赖-->
<!--<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-openfeign-core</artifactId>
<optional>true</optional>
</dependency>-->
<!--mybatis 依赖-->
<dependency>
<groupId>com.yifu.cloud.plus.v1</groupId>
<artifactId>yifu-common-mybatis</artifactId>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
</dependency>
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
</dependency>
</dependencies>
</project>
package com.yifu.cloud.plus.v1.msg.entity;
import com.yifu.cloud.plus.v1.yifu.common.mybatis.base.BaseEntity;
import lombok.Data;
/**
* @Author fxj
* @Description EKP 消息提醒服务
* @Date 11:18 2023/5/30
* @Param
* @return
**/
@Data
public class Message extends BaseEntity {
private String title;
private String url;
private String content;
}
/*
* 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.msg.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;
/**
* @author fxj
* @date 2023-06-01 10:41:25
*/
@Data
@TableName("msg_info")
@EqualsAndHashCode(callSuper = true)
@Schema(description = "EKP 消息提醒")
public class MsgInfo extends BaseEntity {
/**
* id
*/
@TableId(type = IdType.ASSIGN_ID)
@ExcelProperty("id")
@Schema(description = "id")
private String id;
/**
* orderId
*/
@ExcelAttribute(name = "orderId", maxLength = 50)
@Length(max = 50, message = "orderId不能超过50个字符")
@ExcelProperty("orderId")
@Schema(description = "orderId")
private String orderId;
/**
* 订单号
*/
@ExcelAttribute(name = "订单号", maxLength = 200)
@Length(max = 200, message = "订单号不能超过200个字符")
@ExcelProperty("订单号")
@Schema(description = "订单号")
private String url;
/**
* 提交人
*/
@ExcelAttribute(name = "提交人", maxLength = 50)
@Length(max = 50, message = "提交人不能超过50个字符")
@ExcelProperty("提交人")
@Schema(description = "提交人")
private String orderNo;
/**
* 0 接单 1 超时 2变更
*/
@ExcelAttribute(name = "0 接单 1 超时 2变更", maxLength = 1)
@Length(max = 1, message = "0 接单 1 超时 2变更不能超过1个字符")
@ExcelProperty("0 接单 1 超时 2变更")
@Schema(description = "0 接单 1 超时 2变更")
private String alertType;
/**
* 0 未阅 1 已阅
*/
@ExcelAttribute(name = "0 未阅 1 已阅", maxLength = 1)
@Length(max = 1, message = "0 未阅 1 已阅不能超过1个字符")
@ExcelProperty("0 未阅 1 已阅")
@Schema(description = "0 未阅 1 已阅")
private String read;
/**
* 提醒人
*/
@ExcelAttribute(name = "提醒人", maxLength = 1)
@Length(max = 1, message = "提醒人不能超过1个字符")
@ExcelProperty("提醒人")
@Schema(description = "提醒人")
private String alertUser;
}
package com.yifu.cloud.plus.v1.msg.utils;
/**
* @author hgw2
* @description 测试身份证
* @date 2022/5/7
*/
public class EkpMsgUtil {
}
package com.yifu.cloud.plus.v1.msg.utils;
import org.apache.http.HttpEntity;
import org.apache.http.HttpStatus;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.RequestBuilder;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;
import java.nio.charset.Charset;
import java.util.Map;
/**
* @author hgw2
* @description 发送
* @date 2022/5/7
*/
public class HttpUtils {
private static final int REQUEST_TIMEOUT = 3 * 1000; // 设置请求超时10秒钟
private static final int CONNECT_TIMEOUT = 5 * 1000; // 连接超时时间
private static final int SO_TIMEOUT = 10 * 1000; // 数据传输超时
private static final String ENCODING = "UTF-8";
// 务必单例
private static CloseableHttpClient client;
static {
RequestConfig requestConfig = RequestConfig.custom()
.setConnectTimeout(CONNECT_TIMEOUT)
.setConnectionRequestTimeout(REQUEST_TIMEOUT)
.setSocketTimeout(SO_TIMEOUT)
.build();
client = HttpClients.custom().setDefaultRequestConfig(requestConfig).setMaxConnTotal(50).build();
}
public static String get(String url, Map<String, String> paramsMap) {
return send(RequestBuilder.get(url), paramsMap);
}
public static String post(String url, Map<String, String> paramsMap) {
return send(RequestBuilder.post(url), paramsMap);
}
public static String send(RequestBuilder requestBuilder, Map<String, String> paramsMap) {
requestBuilder.setCharset(Charset.forName(ENCODING));
String responseText = "";
if (paramsMap != null) {
for (Map.Entry<String, String> param : paramsMap.entrySet()) {
requestBuilder.addParameter(param.getKey(), param.getValue());
}
CloseableHttpResponse response = null;
try {
response = client.execute(requestBuilder.build());
if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
HttpEntity entity = response.getEntity();
if (entity != null) {
responseText = EntityUtils.toString(entity, ENCODING);
}
}
} catch (Exception e) {
e.printStackTrace();//正式项目中请改为log打印
} finally {
try {
response.close();
} catch (Exception e) {
e.printStackTrace();//正式项目中请改为log打印
}
}
}
return responseText;
}
}
package com.yifu.cloud.plus.v1.msg.vo;
import lombok.Data;
/**
* @Author fxj
* @Date 2023/5/30
* @Description
* @Version 1.0
*/
@Data
public class EkpAlertVo {
/**
* 类型 0 接单 1 超时 2变更
**/
private String type;
/**
* 订单号
**/
private String orderId;
/**
* 表单类型:0 项目订单
**/
private String item;
/**
* 提醒人
**/
private String alertUser;
}
org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
com.yifu.cloud.plus.v1.msg.utils.EkpMsgUtil
\ No newline at end of file
FROM moxm/java:1.8-full
RUN mkdir -p /yifu-msg-biz
WORKDIR yifu-msg-biz
ARG JAR_FILE=target/yifu-msg-biz.jar
COPY ${JAR_FILE} app.jar
EXPOSE 5026
ENV TZ=Asia/Shanghai JAVA_OPTS="-Xms128m -Xmx256m -Djava.security.egd=file:/dev/./urandom"
CMD sleep 60; java -jar app.jar $JAVA_OPTS
#!/usr/bin/env bash
mvn clean package -Pprd -Dmaven.test.skip=true docker:build -DpushImage
\ No newline at end of file
#!/usr/bin/env bash
mvn clean package -Ptest -Dmaven.test.skip=true docker:build -DpushImage
\ No newline at end of file
#!/usr/bin/env bash
mvn clean package -Dmaven.test.skip=true docker:build -DpushImage
\ No newline at end of file
<?xml version="1.0"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.yifu.cloud.plus.v1</groupId>
<artifactId>yifu</artifactId>
<version>1.0.0</version>
</parent>
<artifactId>yifu-msg-biz</artifactId>
<packaging>jar</packaging>
<description>身份证+手机号验证模块</description>
<dependencies>
<!--选配: 依赖seata模块-->
<dependency>
<groupId>com.yifu.cloud.plus.v1</groupId>
<artifactId>yifu-common-seata</artifactId>
</dependency>
<!--选配: orm 模块-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<!--必备:安全模块-->
<dependency>
<groupId>com.yifu.cloud.plus.v1</groupId>
<artifactId>yifu-common-security</artifactId>
</dependency>
<!--必备:日志处理-->
<dependency>
<groupId>com.yifu.cloud.plus.v1</groupId>
<artifactId>yifu-common-log</artifactId>
</dependency>
<!--必备:swagger-->
<dependency>
<groupId>com.yifu.cloud.plus.v1</groupId>
<artifactId>yifu-common-swagger</artifactId>
</dependency>
<!--必备:undertow容器-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-undertow</artifactId>
</dependency>
<dependency>
<groupId>com.yifu.cloud.plus.v1</groupId>
<artifactId>yifu-msg-api</artifactId>
<version>1.0.0</version>
<scope>compile</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>1.1.0</version>
<configuration>
<serverId>docker-hub</serverId>
<!--指定生成的镜像名-->
<imageName>${my.hub.host}/${map.group.name}/${project.artifactId}:${project.version}</imageName>
<dockerDirectory>${project.basedir}/</dockerDirectory>
<!--指定远程 docker api地址-->
<!--<dockerHost>http://172.16.66.232:2375</dockerHost>-->
<!-- 这里是复制 jar 包到 docker 容器指定目录配置-->
<resources>
<resource>
<targetPath>/</targetPath>
<!--jar 包所在的路径 此处配置的 即对应 target 目录-->
<directory>${project.build.directory}</directory>
<!-- 需要包含的 jar包 ,这里对应的是 Dockerfile中添加的文件名 -->
<include>${project.build.finalName}.jar</include>
</resource>
</resources>
<forceTags>true</forceTags>
</configuration>
</plugin>
</plugins>
</build>
</project>
package com.yifu.cloud.plus.v1.msg;
import com.yifu.cloud.plus.v1.yifu.common.security.annotation.EnableYifuResourceServer;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
/**
* @author pig archetype
* <p>
* 项目启动类
*/
@EnableYifuResourceServer
@SpringBootApplication
public class MsgApplication {
public static void main(String[] args) {
SpringApplication.run(MsgApplication.class, args);
}
}
package com.yifu.cloud.plus.v1.msg.constant;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.PropertySource;
import org.springframework.stereotype.Component;
/**
* @Author fxj
* @Date 2022/6/21
* @Description
* @Version 1.0
*/
@Component
@PropertySource("classpath:application.yml")
@ConfigurationProperties(value = "ekp", ignoreInvalidFields = false)
public interface MesConstants {
/**
* 項目订单URL
**/
String orderUrl ="";
}
/*
* 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.msg.controller;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yifu.cloud.plus.v1.msg.entity.MsgInfo;
import com.yifu.cloud.plus.v1.msg.service.MsgInfoService;
import com.yifu.cloud.plus.v1.msg.vo.EkpAlertVo;
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.tags.Tag;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
*
*
* @author fxj
* @date 2023-06-01 10:41:25
*/
@RestController
@RequiredArgsConstructor
@RequestMapping("/msg" )
@Tag(name = "消息生成及查询")
public class MsgInfoController {
private final MsgInfoService msgInfoService;
/**
* 简单分页查询
* @param page 分页对象
* @param msgInfo
* @return
*/
@Operation(description = "简单分页查询")
@GetMapping("/page")
public R<IPage<MsgInfo>> getMsgInfoPage(Page<MsgInfo> page, MsgInfo msgInfo) {
return new R<>(msgInfoService.getMsgInfoPage(page,msgInfo));
}
/**
* @Author fxj
* @Description 触发消息提醒--EKP调用接口
* @Date 10:52 2023/6/1
* @Param
* @return
**/
@Operation(summary = "触发消息提醒--EKP调用接口", description = "触发消息提醒--EKP调用接口")
@SysLog("触发消息提醒--EKP调用接口")
@PostMapping("/createMsg")
public R<Boolean> createMsg(EkpAlertVo vo) {
return msgInfoService.createMsg(vo);
}
/**
* @Author fxj
* @Description 每29分钟刷新 超时待办提醒
* @Date 20:05 2023/5/30
* @Param
* @return
**/
@Operation(summary = "每29分钟刷新 超时待办提醒", description = "每29分钟刷新 超时待办提醒")
@Inner
@PostMapping("/inner/updateOverTimeMsg")
public void everyMonthUpdateSalaryStatus() {
msgInfoService.updateOverTimeMsg();
}
}
/*
* 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.msg.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.msg.entity.MsgInfo;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
*
*
* @author fxj
* @date 2023-06-01 10:41:25
*/
@Mapper
public interface MsgInfoMapper extends BaseMapper<MsgInfo> {
/**
* 简单分页查询
* @param msgInfo
* @return
*/
IPage<MsgInfo> getMsgInfoPage(Page<MsgInfo> page, @Param("msgInfo") MsgInfo msgInfo);
MsgInfo getMsgByOrderId(@Param("orderId")String orderId);
List<MsgInfo> getMsgByTask();
List<MsgInfo> getMsgInfo(@Param("msgInfo") MsgInfo msgInfo);
}
/*
* 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.msg.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.yifu.cloud.plus.v1.msg.entity.MsgInfo;
import com.yifu.cloud.plus.v1.msg.vo.EkpAlertVo;
import com.yifu.cloud.plus.v1.yifu.common.core.util.R;
import java.util.List;
/**
*
*
* @author fxj
* @date 2023-06-01 10:41:25
*/
public interface MsgInfoService extends IService<MsgInfo> {
/**
* 简单分页查询
* @param msgInfo
* @return
*/
IPage<MsgInfo> getMsgInfoPage(Page<MsgInfo> page, MsgInfo msgInfo);
List<MsgInfo> getMsgInfo(MsgInfo msgInfo);
R<Boolean> createMsg(EkpAlertVo vo);
void updateOverTimeMsg();
}
/*
* 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.msg.service.impl;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.yifu.cloud.plus.v1.msg.constant.MesConstants;
import com.yifu.cloud.plus.v1.msg.entity.MsgInfo;
import com.yifu.cloud.plus.v1.msg.mapper.MsgInfoMapper;
import com.yifu.cloud.plus.v1.msg.service.MsgInfoService;
import com.yifu.cloud.plus.v1.msg.vo.EkpAlertVo;
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 lombok.extern.log4j.Log4j2;
import org.springframework.stereotype.Service;
import java.time.LocalDateTime;
import java.util.List;
/**
*
*
* @author fxj
* @date 2023-06-01 10:41:25
*/
@Log4j2
@Service
public class MsgInfoServiceImpl extends ServiceImpl<MsgInfoMapper, MsgInfo> implements MsgInfoService {
/**
* 简单分页查询
* @param msgInfo
* @return
*/
@Override
public IPage<MsgInfo> getMsgInfoPage(Page<MsgInfo> page, MsgInfo msgInfo){
return baseMapper.getMsgInfoPage(page,msgInfo);
}
@Override
public List<MsgInfo> getMsgInfo(MsgInfo msgInfo) {
return baseMapper.getMsgInfo(msgInfo);
}
/**
* @Author fxj
* @Description 生成 待办 变更 提醒数据
* @Date 19:36 2023/5/30
* @Param
* @return
**/
@Override
public R<Boolean> createMsg(EkpAlertVo vo) {
if (Common.isNotNull(vo)){
if (Common.isEmpty(vo.getItem())
|| Common.isEmpty(vo.getType())
|| Common.isEmpty(vo.getOrderId())
|| Common.isEmpty(vo.getAlertUser())){
return R.failed(CommonConstants.PARAM_INFO_ERROR);
}
MsgInfo save = null;
// 项目订单处理
if (CommonConstants.ZERO_STRING.equals(vo.getItem())){
// 接单提醒
if (CommonConstants.ZERO_STRING.equals(vo.getType())){
save = baseMapper.getMsgByOrderId(vo.getOrderId());
if (Common.isNotNull(save)){
save.setCreateTime(LocalDateTime.now());
save.setUrl(MesConstants.orderUrl+vo.getOrderId());
baseMapper.insert(save);
}
}
// 变更提醒
if (CommonConstants.TWO_STRING.equals(vo.getType())){
save = baseMapper.getMsgByOrderId(vo.getOrderId());
if (Common.isNotNull(save)){
save.setCreateTime(LocalDateTime.now());
save.setUrl(MesConstants.orderUrl+save.getOrderId());
save.setAlertType(CommonConstants.TWO_STRING);
baseMapper.insert(save);
}
}
}
return R.ok();
}else {
return R.failed(CommonConstants.PARAM_INFO_ERROR);
}
}
/**
* @Author fxj
* @Description 定时刷新待办任务
* @Date 20:07 2023/5/30
* @Param
* @return
**/
@Override
public void updateOverTimeMsg() {
List<MsgInfo> msgInfos = baseMapper.getMsgByTask();
if (Common.isNotNull(msgInfos)){
//1.先删除
baseMapper.delete(Wrappers.<MsgInfo>query().lambda().eq(MsgInfo::getAlertType,CommonConstants.ONE_STRING));
//2. 重新生成
for (MsgInfo ms:msgInfos){
ms.setCreateTime(LocalDateTime.now());
ms.setUrl(MesConstants.orderUrl+ms.getOrderId());
}
this.saveBatch(msgInfos);
}
}
}
# 数据源配置
spring:
mvc:
pathmatch:
matching-strategy: ant_path_matcher
config:
activate:
on-profile: dev
redis:
host: 127.0.0.1
password: '@yf_2017'
datasource:
type: com.zaxxer.hikari.HikariDataSource
driver-class-name: com.mysql.cj.jdbc.Driver
username: root
password: ll_mysql
url: jdbc:mysql://192.168.1.106:23306/ekp?characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&allowMultiQueries=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=Asia/Shanghai&nullCatalogMeansCurrent=true&allowPublicKeyRetrieval=true
hikari:
driver-class-name: ${spring.datasource.driver-class-name}
jdbc-url: ${spring.datasource.url}
username: ${spring.datasource.username}
password: ${spring.datasource.password}
minimum-idle: 10 # 最小空闲连接数量
idle-timeout: 60000 # 空闲连接存活最大时间,默认600000(10分钟)
maximum-pool-size: 12 # 连接池最大连接数,默认是10
auto-commit: true #此属性控制从池返回的连接的默认自动提交行为,默认值:true
max-lifetime: 0 #此属性控制池中连接的最长生命周期,值0表示无限生命周期,默认1800000即30分钟
## spring security 配置
security:
oauth2:
resource:
loadBalanced: true
token-info-uri: http://127.0.0.1:3000/oauth/check_token
# 直接放行URL
ignore:
urls:
- /v3/api-docs
- /actuator/**
- /swagger-ui/**
- /msg/**
\ No newline at end of file
# 数据源配置
spring:
mvc:
pathmatch:
matching-strategy: ant_path_matcher
config:
activate:
on-profile: test
redis:
host: 192.168.1.65
port: 22379
password: '@yf_2017'
datasource:
type: com.zaxxer.hikari.HikariDataSource
driver-class-name: com.mysql.cj.jdbc.Driver
username: root
password: ll_mysql
url: jdbc:mysql://192.168.1.106:23306/ekp?characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&allowMultiQueries=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=Asia/Shanghai&nullCatalogMeansCurrent=true&allowPublicKeyRetrieval=true
hikari:
driver-class-name: ${spring.datasource.driver-class-name}
jdbc-url: ${spring.datasource.url}
username: ${spring.datasource.username}
password: ${spring.datasource.password}
minimum-idle: 10 # 最小空闲连接数量
idle-timeout: 60000 # 空闲连接存活最大时间,默认600000(10分钟)
maximum-pool-size: 12 # 连接池最大连接数,默认是10
auto-commit: true #此属性控制从池返回的连接的默认自动提交行为,默认值:true
max-lifetime: 0 #此属性控制池中连接的最长生命周期,值0表示无限生命周期,默认1800000即30分钟
## spring security 配置
security:
oauth2:
resource:
loadBalanced: true
token-info-uri: http://127.0.0.1:3000/oauth/check_token
# 直接放行URL
ignore:
urls:
- /v3/api-docs
- /actuator/**
- /swagger-ui/**
\ No newline at end of file
server:
port: 5026
# 加解密根密码
jasypt:
encryptor:
password: yifu #根密码
# 暴露监控端点
management:
endpoints:
web:
exposure:
include: "*"
endpoint:
health:
show-details: ALWAYS
# mybaits-plus配置
mybatis-plus:
mapper-locations: classpath:/mapper/*Mapper.xml
global-config:
banner: false
db-config:
id-type: auto
table-underline: true
logic-delete-value: 1
logic-not-delete-value: 0
configuration:
map-underscore-to-camel-case: true
spring:
application:
name: @artifactId@
#swagger 文档 https://springdoc.org/
### OpenAPI3 注解
# OpenAPI 3 注解位置
# @Tag(name = “接口类描述”) Controller 类上
# @Operation(summary =“接口方法描述”) Controller 方法上
# @Parameters Controller 方法上
# @Parameter(description=“参数描述”) Controller 方法上 @Parameters 里
# @Parameter(description=“参数描述”) Controller 方法的参数上
# @Parameter(hidden = true) 或 @Hidden --
# @Schema DTO类上
# @Schema DTO属性上
springdoc:
api-docs:
#是否开启文档功能
enabled: true
#swagger后端请求地址
path: /api-docs
swagger-ui:
#自定义swagger前端请求路径,输入http:127.0.0.1:8080/test会自动重定向到swagger页面
path: /api
#包扫描路径
packages-to-scan: com.yifu.cloud.plus.v1.msg.controller
#这里定义了两个分组,可定义多个,也可以不定义
group-configs:
#分组名
#- group: admin
#按路径匹配
# pathsToMatch: /admin/**
#分组名
- group: mail
#按包路径匹配
packagesToScan: com.yifu.cloud.plus.v1.msg.controller
ekp:
orderUrl: http://36.7.147.19:28080/sys/modeling/main/modelingAppView.do?method=modelView&listviewId=185943766d6e9ff50d8fea1414eaf460&fdId=
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<configuration debug="false" scan="false">
<springProperty scop="context" name="spring.application.name" source="spring.application.name" defaultValue=""/>
<property name="log.path" value="logs/${spring.application.name}"/>
<!-- 彩色日志格式 -->
<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}}"/>
<!-- 彩色日志依赖的渲染类 -->
<conversionRule conversionWord="clr" converterClass="org.springframework.boot.logging.logback.ColorConverter"/>
<conversionRule conversionWord="wex"
converterClass="org.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter"/>
<conversionRule conversionWord="wEx"
converterClass="org.springframework.boot.logging.logback.ExtendedWhitespaceThrowableProxyConverter"/>
<!-- Console log output -->
<appender name="console" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>${CONSOLE_LOG_PATTERN}</pattern>
</encoder>
</appender>
<!-- Log file debug output -->
<appender name="debug" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${log.path}/debug.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<fileNamePattern>${log.path}/%d{yyyy-MM, aux}/debug.%d{yyyy-MM-dd}.%i.log.gz</fileNamePattern>
<maxFileSize>50MB</maxFileSize>
<maxHistory>30</maxHistory>
</rollingPolicy>
<encoder>
<pattern>%date [%thread] %-5level [%logger{50}] %file:%line - %msg%n</pattern>
</encoder>
</appender>
<!-- Log file error output -->
<appender name="error" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${log.path}/error.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<fileNamePattern>${log.path}/%d{yyyy-MM}/error.%d{yyyy-MM-dd}.%i.log.gz</fileNamePattern>
<maxFileSize>50MB</maxFileSize>
<maxHistory>30</maxHistory>
</rollingPolicy>
<encoder>
<pattern>%date [%thread] %-5level [%logger{50}] %file:%line - %msg%n</pattern>
</encoder>
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>ERROR</level>
</filter>
</appender>
<!-- 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>
</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.msg.mapper.MsgInfoMapper">
<resultMap id="msgInfoMap" type="com.yifu.cloud.plus.v1.msg.entity.MsgInfo">
<id property="id" column="ID"/>
<result property="orderId" column="ORDER_ID"/>
<result property="url" column="URL"/>
<result property="orderNo" column="ORDER_NO"/>
<result property="alertType" column="ALERT_TYPE"/>
<result property="createTime" column="CREATE_TIME"/>
<result property="read" column="READ"/>
<result property="alertUser" column="ALERT_USER"/>
</resultMap>
<sql id="Base_Column_List">
a.ID,
a.ORDER_ID,
a.URL,
a.ORDER_NO,
a.ALERT_TYPE,
a.CREATE_TIME,
a.READ,
a.ALERT_USER
</sql>
<sql id="msgInfo_where">
<if test="msgInfo != null">
<if test="msgInfo.id != null and msgInfo.id.trim() != ''">
AND a.ID = #{msgInfo.id}
</if>
<if test="msgInfo.orderId != null and msgInfo.orderId.trim() != ''">
AND a.ORDER_ID = #{msgInfo.orderId}
</if>
<if test="msgInfo.url != null and msgInfo.url.trim() != ''">
AND a.URL = #{msgInfo.url}
</if>
<if test="msgInfo.orderNo != null and msgInfo.orderNo.trim() != ''">
AND a.ORDER_NO = #{msgInfo.orderNo}
</if>
<if test="msgInfo.alertType != null and msgInfo.alertType.trim() != ''">
AND a.ALERT_TYPE = #{msgInfo.alertType}
</if>
<if test="msgInfo.createTime != null">
AND a.CREATE_TIME = #{msgInfo.createTime}
</if>
<if test="msgInfo.read != null and msgInfo.read.trim() != ''">
AND a.READ = #{msgInfo.read}
</if>
<if test="msgInfo.alertUser != null and msgInfo.alertUser.trim() != ''">
AND a.ALERT_USER = #{msgInfo.alertUser}
</if>
</if>
</sql>
<!--msgInfo简单分页查询-->
<select id="getMsgInfoPage" resultMap="msgInfoMap">
SELECT
<include refid="Base_Column_List"/>
FROM msg_info a
<where>
1=1
<include refid="msgInfo_where"/>
</where>
</select>
<select id="getMsgInfo" resultMap="msgInfoMap">
SELECT
<include refid="Base_Column_List"/>
FROM msg_info a
<where>
1=1
<include refid="msgInfo_where"/>
</where>
</select>
<select id="getMsgByOrderId" resultMap="msgInfoMap">
SELECT
p.fd_name alertUser,
a.fd_3ac901c5184274 orderNo,
a.fd_id orderId,
'0' as alertType
FROM
ekp_ea33075576149bb8a4f5 a
LEFT JOIN sys_org_element p on a.fd_3b0aff6781fa86 = p.fd_id
WHERE
a.ORDER_ID = #{orderId} limit 1
</select>
<select id="getMsgByTask" resultMap="msgInfoMap">
select
<!-- 加急(2-3小时)|1 紧急(3-5小时)|4 常规(5-8小时)|7 -->
o.fd_name alertUser,
b1.fd_3ac901c5184274 orderNo,
b1.fd_id orderId,
'1' as alertType
FROM lbpm_workitem a
LEFT JOIN lbpm_node e on e.fd_id= a.fd_node_id
LEFT JOIN lbpm_process p on p.fd_id=e.fd_process_id
LEFT JOIN ekp_ea33075576149bb8a4f5 b1 on p.fd_model_id=b1.fd_id
LEFT JOIN sys_org_element o on o.fd_id=fd_expected_id
where
e.fd_fact_node_id='N5' and b1.fd_id is not null;
and DATE_ADD(NOW(),INTERVAL 30 MINUTE) > IF(b1.fd_3b779ba2168eea=1,DATE_ADD(a.fd_start_date,INTERVAL 3 HOUR),IF(b1.fd_3b779ba2168eea=4,DATE_ADD(a.fd_start_date,INTERVAL 5 HOUR),DATE_ADD(a.fd_start_date,INTERVAL 8 HOUR)))
</select>
</mapper>
......@@ -118,4 +118,23 @@ public class OrderConstants {
* 订单作废失败
*/
public static final String ORDER_INVALID_FAILED = "订单状态为待办理才可作废";
public static final String ORDER_DEPTMENT_IS_EMPTY = "下单人所在地不能为空";
public static final String ORDER_CUSTOMER_GRADE_IS_EMPTY = "客户等级不能为空";
public static final String ORDER_URGENCY_EXTENT_IS_EMPTY = "紧急程度不能为空";
public static final String ORDER_SERVICE_TYPE_IS_EMPTY = "服务类型不能为空";
public static final String ORDER_SERVICE_PROJECE_IS_EMPTY = "服务项目不能为空";
public static final String ORDER_LEVEL_IS_EMPTY = "星级不能为空";
public static final String ORDER_DEMAND_IS_EMPTY = "其他支撑需求不能为空";
public static final String ORDER_HANDLE_USER_IS_EMPTY = "指派人不能为空";
public static final String ORDER_STATUSONE_IS_EMPTY = "待客户确认后提交审核不能为空";
}
......@@ -113,4 +113,271 @@ public class TOrder implements Serializable {
@Schema(description = "星级")
private String level;
/**
* 下单人所在部门
*/
@Schema(description = "下单人所在部门")
private String department;
/**
* 客户等级
*/
@Schema(description = "客户等级")
private String customerGrade;
/**
* 紧急程度
*/
@Schema(description = "紧急程度")
private String urgencyExtent;
/**
* 服务类型
*/
@Schema(description = "服务类型")
private String serviceType;
/**
* 服务项目
*/
@Schema(description = "服务项目")
private String serviceProject;
/**
* 其他支撑需求
*/
@Schema(description = "其他支撑需求")
private String demand;
/**
* 指派人
*/
@Schema(description = "指派人")
private String handleUser;
/**
* 待客户确认后提交审核
*/
@Schema(description = "待客户确认后提交审核")
private String status;
/**
* 工资暂时停发
*/
@Schema(description = "工资暂时停发")
private String wageFlag;
/**
* 工资姓名
*/
@Schema(description = "工资姓名")
private String wageName;
/**
* 工资身份证号
*/
@Schema(description = "工资身份证号")
private String wageIdcard;
/**
* 工资费用
*/
@Schema(description = "工资费用")
private String wageExpenses;
/**
* 费用调整_薪资
*/
@Schema(description = "费用调整_薪资")
private String salaryFlag;
/**
* 薪资姓名
*/
@Schema(description = "薪资姓名")
private String salaryName;
/**
* 薪资身份证号
*/
@Schema(description = "薪资身份证号")
private String salaryIdcard;
/**
* 薪资费用
*/
@Schema(description = "薪资费用")
private String salaryExpenses;
/**
* 费用调整_社保
*/
@Schema(description = "费用调整_社保")
private String socialFlag;
/**
* 社保姓名
*/
@Schema(description = "社保姓名")
private String socialName;
/**
* 社保身份证号
*/
@Schema(description = "社保身份证号")
private String socialIdcard;
/**
* 社保费用
*/
@Schema(description = "社保费用")
private String socialExpenses;
/**
* 费用调整_公积金
*/
@Schema(description = "费用调整_公积金")
private String fundFlag;
/**
* 公积金姓名
*/
@Schema(description = "公积金姓名")
private String fundName;
/**
* 公积金身份证号
*/
@Schema(description = "公积金身份证号")
private String fundIdcard;
/**
* 公积金费用
*/
@Schema(description = "公积金费用")
private String fundExpenses;
/**
* 费用调整_商险
*/
@Schema(description = "费用调整_商险")
private String insuranceFlag;
/**
* 商险姓名
*/
@Schema(description = "商险姓名")
private String insuranceName;
/**
* 商险身份证号
*/
@Schema(description = "商险身份证号")
private String insuranceIdcard;
/**
* 商险费用
*/
@Schema(description = "商险费用")
private String insuranceExpenses;
/**
* 费用代扣
*/
@Schema(description = "代扣")
private String withholdingFlag;
/**
* 代扣名称
*/
@Schema(description = "代扣名称")
private String withholdingName;
/**
* 代扣身份证号
*/
@Schema(description = "代扣身份证号")
private String withholdingIdcard;
/**
* 代扣费用
*/
@Schema(description = "代扣费用")
private String withholdingExpenses;
/**
* 费用代收
*/
@Schema(description = "费用代收")
private String collectionFlag;
/**
* 代收姓名
*/
@Schema(description = "代收姓名")
private String collectionName;
/**
* 代收身份证号
*/
@Schema(description = "代收身份证号")
private String collectionIdcard;
/**
* 代收费用
*/
@Schema(description = "代收")
private String collectionExpenses;
/**
* 非扣税项
*/
@Schema(description = "非扣税项")
private String noTaxFlag;
/**
* 非扣税名称
*/
@Schema(description = "非扣税名称")
private String noTaxName;
/**
* 非扣税身份证号
*/
@Schema(description = "非扣税身份证号")
private String noTaxIdcard;
/**
* 非扣税费用
*/
@Schema(description = "非扣税费用")
private String noTaxExpenses;
/**
* 其他项
*/
@Schema(description = "其他项")
private String otherFlag;
/**
* 其他名称
*/
@Schema(description = "其他名称")
private String otherName;
/**
* 其他项身份证号
*/
@Schema(description = "其他项身份证号")
private String otherIdcard;
/**
* 其他项费用
*/
@Schema(description = "其他项费用")
private String otherExpenses;
}
\ No newline at end of file
......@@ -44,7 +44,7 @@ public class TOrderEnclosure implements Serializable {
private String remark;
/**
* 附件标识 0订单附件 1回复附件
* 附件标识 0订单附件 1回复附件 2工资暂停发 3费用调整-薪酬 4费用调整-社保 5费用调整-公积金 6费用调整-商险 7代扣费用 8代收费用 9非扣税项 10其他项 11薪资交接手册
*/
@JsonIgnore
private Integer enclosureFlag;
......@@ -61,5 +61,6 @@ public class TOrderEnclosure implements Serializable {
@Schema(description = "删除标识")
private Integer deleteFlag;
private static final long serialVersionUID = 1L;
}
\ No newline at end of file
......@@ -552,7 +552,7 @@ public class TSalaryAccount extends BaseEntity {
private String incomeSettleFlag;
/**
* 收入信息结算状态 0 已收 1 未收 2 垫付
* 收入信息收款状态 0 已收 1 未收 2 垫付
*/
@Schema(description = "收入信息收款状态")
private String incomeCollectFlag;
......
package com.yifu.cloud.plus.v1.yifu.salary.vo;
import lombok.Data;
import java.util.List;
/**
* @author wzb
* @description TODO
* @date 2023-05-06 11:18:17
*/
@Data
public class TMinSalaryImportParam {
/**
* excel表格类型
*/
private List<TMinSalaryImportVo> tMinSalaryImportVoList;
}
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