Commit f7fb226d authored by fangxinjiang's avatar fangxinjiang

Merge branch 'develop'

# Conflicts:
#	yifu-common/yifu-common-dapr/src/main/resources/daprConfig.properties
parents 5a6ad0fa 5926d8ca
apiVersion: apps/v1 # 指定api版本,此值必须在kubectl api-versions中
kind: Deployment # 指定创建资源的角色/类型
metadata: # 资源的元数据/属性
name: yifu-csp # 资源的名字,在同一个namespace中必须唯一
namespace: qas-mvp # 部署在哪个namespace中
spec: # 资源规范字段
selector: # 选择器
matchLabels: # 匹配标签
app: yifu-csp
replicas: 1 # 声明副本数目
#revisionHistoryLimit: 3 # 保留历史版本
#strategy: # 策略
# rollingUpdate: # 滚动更新
# maxSurge: 30% # 最大额外可以存在的副本数,可以为百分比,也可以为整数
# maxUnavailable: 30% # 示在更新过程中能够进入不可用状态的 Pod 的最大值,可以为百分比,也可以为整数
# type: RollingUpdate # 滚动更新策略
template: # 模版
metadata: # 模版
labels: # 设定资源的标签
app: yifu-csp
annotations:
dapr.io/enabled: "true" #设定此参数为 true 注入Dapr sidecar到pod
dapr.io/app-id: "yifu-csp" #应用程序唯一 ID。 用于服务发现、状态封装 和 发布/订阅 消费者ID
dapr.io/app-port: "5088" #这个参数告诉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-csp # 容器的名字
#image: 192.168.1.110:5500/qas-mvp/yifu-csp-biz:1.0.0 # 容器镜像地址
image: hub.worfu.com/qas-mvp/yifu-csp-biz:1.0.0 #临时地址
imagePullPolicy: Always # 每次Pod启动拉取镜像策略,三个选择 Always、Never、IfNotPresent
# Always,每次都检查;Never,每次都不检查(不管本地是否有);IfNotPresent,如果本地有就不检查,如果没有就拉取(手动测试时,
# 已经打好镜像存在docker容器中时,使用存在不检查级别,
# 默认为每次都检查,然后会进行拉取新镜像,因镜像仓库不存在,导致部署失败)
ports:
- containerPort: 25088 # 容器端口
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-csp # 资源的名字,在同一个namespace中必须唯一
name: yifu-csp # 资源的名字,在同一个namespace中必须唯一
namespace: qas-mvp # 部署在哪个namespace中
spec: # 资源规范字段
ports:
- port: 5088 # service 端口
protocol: TCP # 协议
targetPort: 5088 # 容器暴露的端口
name: http-ekp # 端口名称
- port: 3500 # service 端口
protocol: TCP # 协议
targetPort: 3500 # 容器暴露的端口
name: http-ekp-dapr
selector: # 选择器
app: yifu-ekp # 资源名称
type: ClusterIP # ClusterIP 类型
\ No newline at end of file
apiVersion: apps/v1
kind: Deployment
metadata:
name: yifu-prd-webcsp
namespace: prd-mvp
spec:
selector:
matchLabels:
app: yifu-prd-webcsp
replicas: 1
template: # 模版
metadata: # 模版
labels: # 设定资源的标签
app: yifu-prd-webcsp
annotations:
dapr.io/enabled: "true" #设定此参数为 true 注入Dapr sidecar到pod
dapr.io/app-id: "yifu-prd-webcsp" #应用程序唯一 ID。 用于服务发现、状态封装 和 发布/订阅 消费者ID
dapr.io/app-port: "8889" #这个参数告诉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-type: worker
containers:
- name: yifu-prd-webcsp
image: hub.worfu.com/prd-mvp/yifu-prd-webcsp:1.0.0
imagePullPolicy: Always
ports:
- containerPort: 8889
env:
- name: TZ
value: Asia/Shanghai
resources:
requests:
memory: "100Mi"
limits:
memory: "200Mi"
imagePullSecrets:
- name: login
apiVersion: v1
kind: Service
metadata:
name: yifu-prd-webcsp
namespace: prd-mvp
labels:
k8s-app: yifu-prd-webcsp
spec:
ports:
- name: yifu-prd-webcsp
port: 80
protocol: TCP
targetPort: 8889
selector:
app: yifu-prd-webcsp
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
name: yifu-prd-webcsp
namespace: prd-mvp
spec:
gateways:
- istio-system/prd-worfu
hosts:
- hrcsp.worfu.com
http:
- match:
- uri:
prefix: /
rewrite:
uri: /
route:
- destination:
host: 127.0.0.1
port:
number: 3500
apiVersion: apps/v1 # 指定api版本,此值必须在kubectl api-versions中
kind: Deployment # 指定创建资源的角色/类型
metadata: # 资源的元数据/属性
name: yifu-csp # 资源的名字,在同一个namespace中必须唯一
namespace: prd-mvp # 部署在哪个namespace中
spec: # 资源规范字段
selector: # 选择器
matchLabels: # 匹配标签
app: yifu-csp
replicas: 1 # 声明副本数目
#revisionHistoryLimit: 3 # 保留历史版本
#strategy: # 策略
# rollingUpdate: # 滚动更新
# maxSurge: 30% # 最大额外可以存在的副本数,可以为百分比,也可以为整数
# maxUnavailable: 30% # 示在更新过程中能够进入不可用状态的 Pod 的最大值,可以为百分比,也可以为整数
# type: RollingUpdate # 滚动更新策略
template: # 模版
metadata: # 模版
labels: # 设定资源的标签
app: yifu-csp
annotations:
dapr.io/enabled: "true" #设定此参数为 true 注入Dapr sidecar到pod
dapr.io/app-id: "yifu-csp" #应用程序唯一 ID。 用于服务发现、状态封装 和 发布/订阅 消费者ID
dapr.io/app-port: "5088" #这个参数告诉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: "8MB" #增加http和grpc服务器请求正文参数的最大大小,单位为MB,以处理大文件的上传。 默认值为 4 MB
#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标签
containers: # 容器
- name: yifu-csp # 容器的名字
#image: 192.168.1.110:5500/prd-mvp/yifu-csp-biz:1.0.0 # 容器镜像地址
image: hub.worfu.com/prd-mvp/yifu-csp-biz:1.0.0 #临时地址
imagePullPolicy: Always # 每次Pod启动拉取镜像策略,三个选择 Always、Never、IfNotPresent
# Always,每次都检查;Never,每次都不检查(不管本地是否有);IfNotPresent,如果本地有就不检查,如果没有就拉取(手动测试时,
# 已经打好镜像存在docker容器中时,使用存在不检查级别,
# 默认为每次都检查,然后会进行拉取新镜像,因镜像仓库不存在,导致部署失败)
ports:
- containerPort: 25088 # 容器端口
env: # 启动环境配置信息 active and timeZone set
- name: SPRING_PROFILES_ACTIVE
value: prd
- name: TZ
value: Asia/Shanghai
resources: #资源配置限制
limits: # 最大使用
memory: "2048Mi"
#cpu: 300m # CPU,1核心 = 1000m
requests: # 容器运行时,最低资源需求,也就是说最少需要多少资源容器才能正常运行
#cpu: 100m
memory: "500Mi"
#livenessProbe: # pod 内部健康检查的设置
# httpGet: # 通过httpget检查健康,返回200-399之间,则认为容器正常
# path: /healthcsp # 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: /healthcsp
# 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-csp # 资源的名字,在同一个namespace中必须唯一
name: yifu-csp # 资源的名字,在同一个namespace中必须唯一
namespace: prd-mvp # 部署在哪个namespace中
spec: # 资源规范字段
ports:
- port: 5088 # service 端口
protocol: TCP # 协议
targetPort: 5088 # 容器暴露的端口
name: http-csp # 端口名称
#- port: 3500 # service 端口
# protocol: TCP # 协议
# targetPort: 3500 # 容器暴露的端口
# name: http-csp-dapr
selector: # 选择器
app: yifu-csp # 资源名称
type: ClusterIP # ClusterIP 类型
\ No newline at end of file
......@@ -115,6 +115,7 @@
<module>yifu-permission</module>
<module>yifu-ekp</module>
<module>yifu-process</module>
<module>yifu-csp</module>
</modules>
<dependencyManagement>
......
/*
* 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.entity;
import com.alibaba.excel.annotation.ExcelProperty;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.yifu.cloud.plus.v1.yifu.common.core.constant.ExcelAttribute;
import com.yifu.cloud.plus.v1.yifu.common.mybatis.base.BaseEntity;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.hibernate.validator.constraints.Length;
import javax.validation.constraints.NotBlank;
/**
* 完整度监控配置
*
* @author hgw
* @date 2025-02-26 15:18:51
*/
@Data
@TableName("t_complete_monitor_set")
@EqualsAndHashCode(callSuper = true)
@Schema(description = "完整度监控配置")
public class TCompleteMonitorSet extends BaseEntity {
/**
* 主键
*/
@TableId(type = IdType.ASSIGN_ID)
@ExcelProperty("主键")
@Schema(description = "主键")
private String id;
/**
* 是否监控0否1是
*/
@ExcelAttribute(name = "是否监控0否1是", isNotEmpty = true, errorInfo = "是否监控0否1是不能为空", maxLength = 1)
@NotBlank(message = "是否监控0否1是不能为空")
@Length(max = 1, message = "是否监控0否1是不能超过1个字符")
@ExcelProperty("是否监控0否1是")
@Schema(description = "是否监控0否1是")
private String isMonitor;
/**
* 合同类型(字典值,逗号分割,-1表示默认)
*/
@ExcelAttribute(name = "合同类型(字典值,逗号分割,-1表示默认)", isNotEmpty = true, errorInfo = "合同类型(字典值,逗号分割,-1表示默认)不能为空", maxLength = 200)
@NotBlank(message = "合同类型(字典值,逗号分割,-1表示默认)不能为空")
@Length(max = 200, message = "合同类型(字典值,逗号分割,-1表示默认)不能超过200个字符")
@ExcelProperty("合同类型(字典值,逗号分割,-1表示默认)")
@Schema(description = "合同类型(字典值,逗号分割,-1表示默认)")
private String contractType;
/**
* 合同类型中文名
*/
@ExcelAttribute(name = "合同类型名称", isNotEmpty = true, errorInfo = "合同类型名称不能为空", maxLength = 500)
@NotBlank(message = "合同类型名称不能为空")
@Length(max = 500, message = "合同类型名称不能超过500个字符")
@ExcelProperty("合同类型名称")
@Schema(description = "合同类型名称")
private String contractTypeName;
/**
* 监控基础信息表ID(逗号分割)
*/
@ExcelAttribute(name = "监控基础信息表ID(逗号分割)", maxLength = 400)
@Length(max = 400, message = "监控基础信息表ID(逗号分割)不能超过400个字符")
@ExcelProperty("监控基础信息表ID(逗号分割)")
@Schema(description = "监控基础信息表ID(逗号分割)")
private String baseId;
/**
* 更新人
*/
@ExcelAttribute(name = "更新人", maxLength = 50)
@Length(max = 50, message = "更新人不能超过50个字符")
@ExcelProperty("更新人")
@Schema(description = "更新人")
private String updateName;
}
/*
* 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.entity;
import com.alibaba.excel.annotation.ExcelProperty;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.yifu.cloud.plus.v1.yifu.common.core.constant.ExcelAttribute;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import org.hibernate.validator.constraints.Length;
import javax.validation.constraints.NotBlank;
/**
* 完整度监控配置
*
* @author hgw
* @date 2025-02-26 15:18:51
*/
@Data
@TableName("t_complete_monitor_set_base_info")
@Schema(description = "完整度监控配置")
public class TCompleteMonitorSetBaseInfo {
/**
* 主键
*/
@TableId(type = IdType.ASSIGN_ID)
@ExcelProperty("主键")
@Schema(description = "主键")
private Integer id;
/**
* 类型(1档案基础信息2默认联动信息3监控信息项)
*/
@ExcelAttribute(name = "类型(1档案基础信息2默认联动信息3监控信息项)", isNotEmpty = true, errorInfo = "类型(1档案基础信息2默认联动信息3监控信息项)不能为空", maxLength = 1)
@NotBlank(message = "类型(1档案基础信息2默认联动信息3监控信息项)不能为空")
@Length(max = 1, message = "类型(1档案基础信息2默认联动信息3监控信息项)不能超过1个字符")
@ExcelProperty("类型(1档案基础信息2默认联动信息3监控信息项)")
@Schema(description = "类型(1档案基础信息2默认联动信息3监控信息项)")
private String baseType;
/**
* 序号
*/
@ExcelAttribute(name = "序号", isNotEmpty = true, errorInfo = "序号不能为空")
@NotBlank(message = "序号不能为空")
@ExcelProperty("序号")
@Schema(description = "序号")
private Integer baseNum;
/**
* 字段名称
*/
@ExcelAttribute(name = "字段名称", isNotEmpty = true, errorInfo = "字段名称不能为空", maxLength = 50)
@NotBlank(message = "字段名称不能为空")
@Length(max = 50, message = "字段名称不能超过50个字符")
@ExcelProperty("字段名称")
@Schema(description = "字段名称")
private String baseName;
/**
* 字段说明
*/
@ExcelAttribute(name = "字段说明", maxLength = 50)
@Length(max = 50, message = "字段说明不能超过50个字符")
@ExcelProperty("字段说明")
@Schema(description = "字段说明")
private String baseRemark;
/**
* 是否监控0否1是
*/
@ExcelAttribute(name = "是否监控0否1是", isNotEmpty = true, errorInfo = "是否监控0否1是不能为空", maxLength = 1)
@NotBlank(message = "是否监控0否1是不能为空")
@Length(max = 1, message = "是否监控0否1是不能超过1个字符")
@ExcelProperty("是否监控0否1是")
@Schema(description = "是否监控0否1是")
private String isMonitor;
/**
* 表字段
*/
@ExcelAttribute(name = "表字段", maxLength = 100)
@Length(max = 100, message = "表字段不能超过100个字符")
@ExcelProperty("表字段")
@Schema(description = "表字段")
private String baseColumn;
/**
* 表名称
*/
@ExcelAttribute(name = "表名称", maxLength = 200)
@Length(max = 200, message = "表名称不能超过200个字符")
@ExcelProperty("表名称")
@Schema(description = "表名称")
private String baseTable;
/**
* 属性字段
*/
@ExcelAttribute(name = "属性字段", maxLength = 100)
@Length(max = 100, message = "属性字段不能超过100个字符")
@ExcelProperty("属性字段")
@Schema(description = "属性字段")
private String baseField;
}
......@@ -16,6 +16,7 @@
*/
package com.yifu.cloud.plus.v1.yifu.archives.entity;
import com.alibaba.excel.annotation.ExcelProperty;
import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.yifu.cloud.plus.v1.yifu.common.core.constant.ExcelAttribute;
......@@ -24,6 +25,7 @@ import com.yifu.cloud.plus.v1.yifu.common.mybatis.base.BaseEntity;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.hibernate.validator.constraints.Length;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
......@@ -425,4 +427,20 @@ public class TEmployeeProject extends BaseEntity {
@TableField(exist = false)
private LocalDateTime createTimeEnd;
@Schema(description = "所属部门名称")
@TableField(exist = false)
private String empDeptname;
@Schema(description = "所属部门id")
@TableField(exist = false)
private String empDeptid;
@Schema(description = "操作的用户id")
@TableField(exist = false)
private String operationUserId;
@Schema(description = "操作的用户Name")
@TableField(exist = false)
private String operationUserName;
}
/*
* 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.entity;
import com.alibaba.excel.annotation.ExcelProperty;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.yifu.cloud.plus.v1.yifu.common.core.constant.ExcelAttribute;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import org.hibernate.validator.constraints.Length;
import java.time.LocalDateTime;
/**
* 项目档案所属部门表
*
* @author hgw
* @date 2025-02-28 15:03:17
*/
@Data
@TableName("t_employee_project_belong_dept")
@Schema(description = "项目档案所属部门表")
public class TEmployeeProjectBelongDept {
/**
* 项目档案ID
*/
@TableId(type = IdType.ASSIGN_ID)
@ExcelProperty("项目档案ID")
@Schema(description = "项目档案ID")
private String id;
/**
* 所属部门名称
*/
@ExcelAttribute(name = "所属部门名称", maxLength = 30)
@Length(max = 30, message = "所属部门名称不能超过30个字符")
@ExcelProperty("所属部门名称")
@Schema(description = "所属部门名称")
private String empDeptname;
/**
* 所属部门id
*/
@ExcelAttribute(name = "所属部门id", maxLength = 36)
@Length(max = 36, message = "所属部门id不能超过36个字符")
@ExcelProperty("所属部门id")
@Schema(description = "所属部门id")
private String empDeptid;
// 日志确认接收时间,与项目档案日期比较
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern="yyyy-MM-dd HH:mm:ss")
@TableField(exist = false)
private LocalDateTime logCreateTime;
}
......@@ -548,4 +548,23 @@ public class TSettleDomain extends BaseEntity {
*/
@Schema(description ="代发户状态(0否;1是代发户)")
private Integer issueStatus;
/**
* 前端客服
*/
@Schema(description ="前端客服")
private String csName;
/**
* 前端客服-手机号码
*/
@Schema(description ="手机号码")
private String csPhone;
/**
* 前端客服-登录账号
*/
@Schema(description ="登录账号")
private String csLoginName;
}
package com.yifu.cloud.plus.v1.yifu.archives.vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import java.io.Serializable;
import java.time.LocalDateTime;
/**
* @Author hgw
* @Date 2022-10-21 09:50:08
* @Description 通用Vo
* @Version 1.0
*/
@Data
public class EmpProjectStatusVo implements Serializable {
private String deptNo;
private String empIdcard;
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern="yyyy-MM-dd HH:mm:ss")
private LocalDateTime projectTime;
private String empProjectId;
}
/*
* 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.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.annotation.write.style.ColumnWidth;
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 lombok.Data;
import java.io.Serializable;
import java.time.LocalDate;
/**
* CSP客户服务平台-花名册
* @author hgw
* @date 2025-2-28 18:10:00
*/
@Data
@ColumnWidth(30)
public class EmployeeProjectScpVO implements Serializable {
private static final long serialVersionUID = 1L;
@ExcelAttribute(name = "员工姓名")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty(value = "员工姓名")
private String empName;
@ExcelAttribute(name = "身份证号")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty(value = "身份证号")
private String empIdcard;
@ExcelAttribute(name = "员工手机号")
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty(value = "员工手机号")
private String empPhone;
@ExcelAttribute(name = "所属部门", maxLength = 30)
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("所属部门")
private String empDeptname;
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty(value = "就职岗位")
@ExcelAttribute(name = "就职岗位")
private String post;
// (0在职;1离职
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty(value = "在职状态")
@ExcelAttribute(name = "在职状态")
private String projectStatus;
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty(value = "入/离职日期")
@ExcelAttribute(name = "入/离职日期")
private String enjoinDateAndLeaveTime;
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty(value = "合同签订状态")
@ExcelAttribute(name = "合同签订状态", isDataId = true, dataType = ExcelAttributeConstants.PERSONNEL_STATE)
private String contractStatus;
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty(value = "商险购买状态")
@ExcelAttribute(name = "商险购买状态", isDataId = true, dataType = ExcelAttributeConstants.COMMERCIAL_SATTE)
private String insuranceStatus;
}
......@@ -19,10 +19,12 @@ package com.yifu.cloud.plus.v1.yifu.archives.vo;
import com.baomidou.mybatisplus.annotation.TableField;
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.util.LocalDateTimeUtils;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.io.Serializable;
import java.time.LocalDateTime;
import java.util.Date;
/**
......@@ -97,6 +99,27 @@ public class PreUploadEmpImportTwoVo implements Serializable {
@ExcelAttribute(name = "毕业时间", isDate = true, pattern = "entryDate")
private String gradutionDate;
// 1.9.7:主要工作经历(t_emp_work_recording)
@ExcelAttribute(name = "是否为首份工作", isDataId = true, readConverterExp = "0=否,1=是")
private String isFirstWork;
@ExcelAttribute(name = "工作单位", maxLength = 100)
private String workUnit;
@ExcelAttribute(name = "工作岗位", maxLength = 100)
private String workJob;
@ExcelAttribute(name = "开始工作日期", isDate = true, dateFormat = LocalDateTimeUtils.DATE_TIME_PATTERN_DEFAULT)
private String startDate;
@ExcelAttribute(name = "结束工作日期", isDate = true, pattern = "startDate", dateFormat = LocalDateTimeUtils.DATE_TIME_PATTERN_DEFAULT)
private String endDate;
// 1.9.7:主要家庭成员信息(t_emp_family)
@ExcelAttribute(name = "家庭成员姓名", maxLength = 20)
private String familyName;
@ExcelAttribute(name = "家庭成员与本人关系", isDataId = true,dataType = ExcelAttributeConstants.FAMILY_RELATION, maxLength = 32)
private String relationshipSelf;
@ExcelAttribute(name = "手机号码(家庭成员)", isPhone = true, maxLength = 32)
private String contractTel;
// 紧急联系人
// private TPreEmpContactInfo tpreEmpContactInfo
// 紧急联系人姓名 与本人关系 联系地址-省 联系地址-市 联系地址-区/县 联系地址-详细地址 手机号码(紧急联系人)
......@@ -129,6 +152,37 @@ public class PreUploadEmpImportTwoVo implements Serializable {
@ExcelAttribute(name = "计税月份", isDate = true, dateFormat = "yyyyMM", maxLength = 6)
private String taxMonth;
@ExcelAttribute(name = "是否有不良记录", isDataId = true, readConverterExp = "0=是,1=否")
private String badRecordFlag;
@ExcelAttribute(name = "是否有职业资格证书", isDataId = true, readConverterExp = "0=是,1=否")
private String haveQualification;
// 1.9.7: 职业资格信息
@ExcelAttribute(name = "申报年度", isDate = true, dateFormat = "yyyy", maxLength = 6)
private String declareYear;
@ExcelAttribute(name = "职业资格名称", isDataId = true, dataType = ExcelAttributeConstants.QUALIFICATION_TYPE, maxLength = 32)
private String qualificationType;
// 1.9.7: 伤残信息(t_emp_disability_info)
@ExcelAttribute(name = "是否曾被认定为工伤", isDataId = true, readConverterExp = "0=是,1=否", maxLength = 1)
private String injuryIdentification;
@ExcelAttribute(name = "是否有职业病", isDataId = true, readConverterExp = "0=是,1=否", maxLength = 1)
private String occupationalDiseaseFlag;
@ExcelAttribute(name = "职业病名称", maxLength = 50)
private String occupationalDisease;
@ExcelAttribute(name = "是否有传染性疾病", isDataId = true, readConverterExp = "0=是,1=否", maxLength = 1)
private String infectiousDiseaseFlag;
@ExcelAttribute(name = "传染病名称", maxLength = 50)
private String infectiousName;
@ExcelAttribute(name = "是否被劳动能力鉴定委员会鉴定为具有伤残等级", isDataId = true, readConverterExp = "0=是,1=否", maxLength = 1)
private String disabilityFlag;
@ExcelAttribute(name = "伤残病名称", maxLength = 50)
private String disabilityName;
@ExcelAttribute(name = "伤残等级",isDataId = true, dataType = ExcelAttributeConstants.DISABILITY_GRADE, maxLength = 32)
private String disabilityLevel;
@ExcelAttribute(name = "是否从事过井下、高空、高温、特别繁重体力劳动以及有毒有害工种", isDataId = true, readConverterExp = "0=是,1=否", maxLength = 1)
private String otherFlag;
// 字典值起始
@ExcelAttribute(name = "员工类型-值")
private String empNatrueValue;
......@@ -187,11 +241,30 @@ public class PreUploadEmpImportTwoVo implements Serializable {
@ExcelAttribute(name = "身份证截止日期-值")
private Date validityEndValue;
@ExcelAttribute(name = "是否有不良记录", isDataId = true, readConverterExp = "0=是,1=否")
private String badRecordFlag;
@ExcelAttribute(name = "开始工作日期-值")
private LocalDateTime startDateValue;
@ExcelAttribute(name = "结束工作日期-值")
private LocalDateTime endDateValue;
@ExcelAttribute(name = "与本人关系-值")
private String relationshipSelfValue;
@ExcelAttribute(name = "职业资格名称-值")
private String qualificationTypeValue;
@ExcelAttribute(name = "是否曾被认定为工伤-值")
private String injuryIdentificationValue;
@ExcelAttribute(name = "是否有职业病-值")
private String occupationalDiseaseFlagValue;
@ExcelAttribute(name = "是否有传染性疾病-值")
private String infectiousDiseaseFlagValue;
@ExcelAttribute(name = "是否被劳动能力鉴定委员会鉴定为具有伤残等级-值")
private String disabilityFlagValue;
@ExcelAttribute(name = "伤残等级-值")
private String disabilityLevelValue;
@ExcelAttribute(name = "是否从事过井下、高空、高温、特别繁重体力劳动以及有毒有害工种-值")
private String otherFlagValue;
@ExcelAttribute(name = "是否有职业资格证书", isDataId = true, readConverterExp = "0=是,1=否")
private String haveQualification;
// 字典值结束
@TableField(exist = false)
......
/*
* 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.yifu.cloud.plus.v1.yifu.archives.entity.TCompleteMonitorSet;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.time.LocalDateTime;
/**
* 完整度监控配置
*
* @author hgw
* @date 2025-02-26 15:18:51
*/
@Data
public class TCompleteMonitorSetSearchVo extends TCompleteMonitorSet {
/**
* 多选导出或删除等操作
*/
@Schema(description = "选中ID,多个逗号分割")
private String ids;
/**
* 合同类型多选
*/
private String[] contractTypeArray;
/**
* 创建时间区间 [开始时间,结束时间]
*/
@Schema(description = "创建时间区间")
private LocalDateTime[] createTimes;
/**
* @Author fxj
* 查询数据起
**/
@Schema(description = "查询limit 开始")
private int limitStart;
/**
* @Author fxj
* 查询数据止
**/
@Schema(description = "查询limit 数据条数")
private int limitEnd;
}
package com.yifu.cloud.plus.v1.yifu.archives.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.io.Serializable;
/**
* @Author fxj
* @Description 同步前端客服及手机号码
* @Date 11:44 2025/2/28
**/
@Data
public class TDomainUpCsVo implements Serializable {
/**
* 前端客服
*/
@Schema(description = "前端客服")
private String name;
/**
* 手机号码
*/
@Schema(description = "手机号码")
private String phone;
/**
* 项目编码
*/
@Schema(description = "项目编码")
private String departNo;
/**
* 登录账号
*/
@Schema(description = "登录账号")
private String loginName;
}
/*
* 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 io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.time.LocalDateTime;
/**
* 查询Csp数据的传参vo
* @author hgw
* @date 2025-3-3 17:31:58
*/
@Data
public class TEmployeeProjectBelongDeptSearchCspVo {
// 项目ID
@Schema(description = "项目ID")
private String deptId;
// 身份证
@Schema(description = "身份证")
private String empIdCard;
// 登记类型 1入职 2离职
@Schema(description = "登记类型")
private String feedbackType;
// 项目档案入离职日期,与日志确认接收时间比较
@Schema(description = "项目档案创建与离职时间")
private LocalDateTime empCreateAndLeaveTime;
// 项目档案入离职日期,与日志确认接收时间比较
@Schema(description = "项目档案创建与离职人")
private String empCreateAndLeaveUser;
@Schema(description = "登录人Id")
private String userId;
// 项目档案入离职日期,与日志确认接收时间比较
@Schema(description = "登录人姓名")
private String userName;
}
/*
* 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 io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.time.LocalDateTime;
/**
* 项目档案所属部门表
*
* @author hgw
* @date 2025-02-28 15:03:17
*/
@Data
public class TEmployeeProjectBelongDeptSearchVo extends EmployeeProjectScpVO {
/**
* 多选导出或删除等操作
*/
@Schema(description = "选中ID,多个逗号分割")
private String ids;
// 必传:
@Schema(description = "项目ID")
private String deptId;
// 前端传这个
@Schema(description = "员工所属部门ID逗号分割")
private String empDeptId;
// 后端自己转化为arr:员工所属部门ID逗号分割 转化为arr
private String[] empDeptIdArray;
@Schema(description = "入离职日期开始时间")
private LocalDateTime enjoinDateAndLeaveTimeStart;
@Schema(description = "入离职日期结束时间")
private LocalDateTime enjoinDateAndLeaveTimeEnd;
@Schema(description = "商险状态多个")
private String[] insuranceStatusArray;
@Schema(description = "合同状态多个")
private String[] contractStatusArray;
@Schema(description = "在职状态多个")
private String[] projectStatusArray;
@Schema(description = "就职岗位多个")
private String[] postArray;
/**
* 查询数据起
**/
@Schema(description = "查询limit 开始")
private int limitStart;
/**
* 查询数据止
**/
@Schema(description = "查询limit 数据条数")
private int limitEnd;
@Schema(description = "部门下人员档案数量")
private Integer empNum;
}
......@@ -185,5 +185,19 @@ public class TMainExportAllVO {
@ExcelAttribute(needExport = true, name ="不良记录描述")
private String field63;
// 2025-2-27 17:07:09新增
@ExcelAttribute(needExport = true, name ="银行卡号")
private String field73;
@ExcelAttribute(needExport = true, name ="开户总行")
private String field74;
@ExcelAttribute(needExport = true, name ="开户省", isArea = true)
private String field75;
@ExcelAttribute(needExport = true, name ="开户市", isArea = true, parentField = "field75")
private String field76;
@ExcelAttribute(needExport = true, name ="开户支行")
private String field77;
@ExcelAttribute(needExport = true, name ="计税月份")
private String field78;
}
......@@ -124,4 +124,17 @@ public class TSettleDomainVo extends TSettleDomain implements Serializable {
@TableField(exist = false)
private List<String> settleDomainIds;
/**
* 前端客服
*/
@Schema(description ="前端客服")
private String csName;
/**
* 前端客服-手机号码
*/
@Schema(description ="手机号码")
private String csPhone;
}
......@@ -111,7 +111,13 @@
<artifactId>xlsx-streamer</artifactId>
<version>2.2.0</version>
</dependency>
<!-- 二维码生成JAR结束 -->
<dependency>
<groupId>com.yifu.cloud.plus.v1</groupId>
<artifactId>yifu-csp-api</artifactId>
<version>1.0.0</version>
<scope>compile</scope>
</dependency>
<!-- 二维码生成JAR结束 -->
</dependencies>
<build>
......
......@@ -13,6 +13,7 @@ public class EmployeeConstants {
public static final String VALIDITY_END = "身份证截止日期必填";
public static final String VALIDITY_END_FORMAT = "身份证截止日期只能为日期格式:yyyy-MM-dd或者固定值:长期";
public static final String EMP_VALIDITY_END_START_DATE = "身份证截止日期不能小于等于身份证开始日期";
public static final String EMP_VALIDITY_DATE_ERROR = "身份证截止日期或开始日期有误,请检查修改后导入";
public static final String EMP_NATIONAL = "民族必填";
public static final String ID_PROVINCE = "户籍所在地必填";
public static final String FILE_PROVINCE = "档案所在地(省市)必填";
......
......@@ -149,7 +149,7 @@ public class TCompleteMonitorController {
@Operation(description = "生成档案完整度监控")
@Inner
@PostMapping("/inner/createComlpeteMonitor")
public void createComlpeteMonitor() throws IllegalAccessException{
public void createComlpeteMonitor() {
tCompleteMonitorService.createComlpeteMonitor();
}
......
/*
* 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.controller;
import com.yifu.cloud.plus.v1.yifu.archives.entity.TCompleteMonitorSetBaseInfo;
import com.yifu.cloud.plus.v1.yifu.archives.service.TCompleteMonitorSetBaseInfoService;
import com.yifu.cloud.plus.v1.yifu.common.core.util.R;
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.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
/**
* 完整度监控配置
*
* @author hgw
* @date 2025-02-26 15:18:51
*/
@RestController
@RequiredArgsConstructor
@RequestMapping("/tcompletemonitorsetbaseinfo")
@Tag(name = "完整度监控配置管理")
public class TCompleteMonitorSetBaseInfoController {
private final TCompleteMonitorSetBaseInfoService tCompleteMonitorSetBaseInfoService;
/**
* @param baseType 类型(1档案基础信息2默认联动信息3监控信息项)
* @Description: 获取list数据
* @Author: hgw
* @Date: 2025/2/27 11:49
* @return: com.yifu.cloud.plus.v1.yifu.common.core.util.R<java.util.List < com.yifu.cloud.plus.v1.yifu.archives.entity.TCompleteMonitorSetBaseInfo>>
**/
@Operation(summary = "获取list数据", description = "不分页查询")
@GetMapping("/getListByBaseType")
public R<List<TCompleteMonitorSetBaseInfo>> getListByBaseType(@RequestParam(required = false) String baseType) {
return R.ok(tCompleteMonitorSetBaseInfoService.getListByBaseType(baseType));
}
/**
* @param typeName 员工合同名称
* @Description: 根据员工合同名称,获取需要完整的字段
* @Author: hgw
* @Date: 2025/2/27 11:49
* @return: com.yifu.cloud.plus.v1.yifu.common.core.util.R<java.util.List < com.yifu.cloud.plus.v1.yifu.archives.entity.TCompleteMonitorSetBaseInfo>>
**/
@Operation(summary = "根据员工合同名称,获取需要完整的字段", description = "根据员工合同名称,获取需要完整的字段")
@GetMapping("/getBaseFieldByTypeName")
public R<List<String>> getBaseFieldByTypeName(@RequestParam String typeName) {
return R.ok(tCompleteMonitorSetBaseInfoService.getBaseFieldByTypeName(typeName));
}
}
/*
* 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.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.TCompleteMonitorSet;
import com.yifu.cloud.plus.v1.yifu.archives.service.TCompleteMonitorSetService;
import com.yifu.cloud.plus.v1.yifu.archives.vo.TCompleteMonitorSetSearchVo;
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.log.annotation.SysLog;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.RequiredArgsConstructor;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
* 完整度监控配置
*
* @author hgw
* @date 2025-02-26 15:18:51
*/
@RestController
@RequiredArgsConstructor
@RequestMapping("/tcompletemonitorset")
@Tag(name = "完整度监控配置管理")
public class TCompleteMonitorSetController {
private final TCompleteMonitorSetService tCompleteMonitorSetService;
/**
* 简单分页查询
*
* @param page 分页对象
* @param tCompleteMonitorSet 完整度监控配置
* @return
*/
@Operation(description = "简单分页查询")
@GetMapping("/page")
public R<IPage<TCompleteMonitorSet>> getTCompleteMonitorSetPage(Page<TCompleteMonitorSet> page, TCompleteMonitorSetSearchVo tCompleteMonitorSet) {
return new R<>(tCompleteMonitorSetService.getTCompleteMonitorSetPage(page, tCompleteMonitorSet));
}
/**
* 不分页查询
*
* @param tCompleteMonitorSet 完整度监控配置
* @return
*/
@Operation(summary = "不分页查询", description = "不分页查询")
@PostMapping("/noPage")
public R<List<TCompleteMonitorSet>> getTCompleteMonitorSetNoPage(@RequestBody TCompleteMonitorSetSearchVo tCompleteMonitorSet) {
return R.ok(tCompleteMonitorSetService.noPageDiy(tCompleteMonitorSet));
}
/**
* 通过id查询完整度监控配置
*
* @param id id
* @return R
*/
@Operation(summary = "通过id查询", description = "通过id查询")
@GetMapping("/{id}")
public R<TCompleteMonitorSet> getById(@PathVariable("id") String id) {
return R.ok(tCompleteMonitorSetService.getById(id));
}
/**
* @Description: 获取可用的员工合同类型
* @Author: hgw
* @Date: 2025/2/27 15:24
* @return: com.yifu.cloud.plus.v1.yifu.common.core.util.R<java.util.List < com.yifu.cloud.plus.v1.yifu.admin.api.entity.SysDictItem>>
**/
@Operation(summary = "获取在用的员工合同类型", description = "获取在用的员工合同类型")
@GetMapping("/getContractType")
public R<String> getContractType() {
return R.ok(tCompleteMonitorSetService.getContractType());
}
/**
* 新增完整度监控配置
*
* @param tCompleteMonitorSet 完整度监控配置
* @return R
*/
@Operation(summary = "新增完整度监控配置", description = "新增完整度监控配置:hasPermission('archives_tcompletemonitorset_add')")
@SysLog("新增完整度监控配置")
@PostMapping("/saveInfo")
@PreAuthorize("@pms.hasPermission('archives_tcompletemonitorset_add')")
public R<String> saveInfo(@RequestBody TCompleteMonitorSet tCompleteMonitorSet) {
return tCompleteMonitorSetService.saveOrUpdateInfo(tCompleteMonitorSet);
}
/**
* 修改完整度监控配置
*
* @param tCompleteMonitorSet 完整度监控配置
* @return R
*/
@Operation(summary = "修改完整度监控配置", description = "修改完整度监控配置:hasPermission('archives_tcompletemonitorset_edit')")
@SysLog("修改完整度监控配置")
@PostMapping("/updateInfoById")
@PreAuthorize("@pms.hasPermission('archives_tcompletemonitorset_edit')")
public R<String> updateInfoById(@RequestBody TCompleteMonitorSet tCompleteMonitorSet) {
if (Common.isEmpty(tCompleteMonitorSet.getId())) {
return R.failed("请传Id");
}
return tCompleteMonitorSetService.saveOrUpdateInfo(tCompleteMonitorSet);
}
/**
* 通过id删除完整度监控配置
*
* @param id id
* @return R
*/
@Operation(summary = "通过id删除完整度监控配置", description = "通过id删除完整度监控配置:hasPermission('archives_tcompletemonitorset_del')")
@SysLog("通过id删除完整度监控配置")
@DeleteMapping("/{id}")
@PreAuthorize("@pms.hasPermission('archives_tcompletemonitorset_del')")
public R<Boolean> removeById(@PathVariable String id) {
return R.ok(tCompleteMonitorSetService.removeById(id));
}
}
/*
* 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.controller;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yifu.cloud.plus.v1.yifu.admin.api.vo.SysCspDeptVo;
import com.yifu.cloud.plus.v1.yifu.archives.entity.TEmployeeProjectBelongDept;
import com.yifu.cloud.plus.v1.yifu.archives.service.TEmployeeProjectBelongDeptService;
import com.yifu.cloud.plus.v1.yifu.archives.vo.EmployeeProjectScpVO;
import com.yifu.cloud.plus.v1.yifu.archives.vo.TEmployeeProjectBelongDeptSearchVo;
import com.yifu.cloud.plus.v1.yifu.common.core.constant.CommonConstants;
import com.yifu.cloud.plus.v1.yifu.common.core.util.Common;
import com.yifu.cloud.plus.v1.yifu.common.core.util.R;
import com.yifu.cloud.plus.v1.yifu.common.core.vo.UserPermissionVo;
import com.yifu.cloud.plus.v1.yifu.common.core.vo.YifuUser;
import com.yifu.cloud.plus.v1.yifu.common.log.annotation.SysLog;
import com.yifu.cloud.plus.v1.yifu.common.security.annotation.Inner;
import com.yifu.cloud.plus.v1.yifu.common.security.util.SecurityUtils;
import 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.Map;
/**
* 项目档案所属部门表
*
* @author hgw
* @date 2025-02-28 15:03:17
*/
@RestController
@RequiredArgsConstructor
@RequestMapping("/temployeeprojectbelongdept")
@Tag(name = "项目档案所属部门表管理")
public class TEmployeeProjectBelongDeptController {
private final TEmployeeProjectBelongDeptService tEmployeeProjectBelongDeptService;
/**
* 简单分页查询
*
* @param page 分页对象
* @param tEmployeeProjectBelongDept 项目档案所属部门表
* @return
*/
@Operation(description = "简单分页查询")
@PostMapping("/page")
public R<IPage<EmployeeProjectScpVO>> getTEmployeeProjectBelongDeptPage(Page<EmployeeProjectScpVO> page
, @RequestBody TEmployeeProjectBelongDeptSearchVo tEmployeeProjectBelongDept) {
return new R<>(tEmployeeProjectBelongDeptService.getTEmployeeProjectBelongDeptPage(page, tEmployeeProjectBelongDept));
}
/**
* @param id 项目id
* @Description: 项目档案详情,获取所属部门,需要额外请求接口:
* @Author: hgw
* @Date: 2025/3/3 9:38
* @return: com.yifu.cloud.plus.v1.yifu.common.core.util.R<com.yifu.cloud.plus.v1.yifu.archives.entity.TEmployeeProjectBelongDept>
**/
@Operation(summary = "通过id查询", description = "通过id查询")
@GetMapping("/{id}")
public R<TEmployeeProjectBelongDept> getById(@PathVariable("id") String id) {
return R.ok(tEmployeeProjectBelongDeptService.getById(id));
}
/**
* @param tEmployeeProjectBelongDept
* @Description: 项目组织维护(新增、修改、清空 项目档案所属部门表)
* @Author: hgw
* @Date: 2025/3/3 9:37
* @return: com.yifu.cloud.plus.v1.yifu.common.core.util.R<java.lang.String>
**/
@Operation(summary = "项目组织维护", description = "项目组织维护")
@SysLog("项目组织维护")
@PostMapping("/saveOrUpdate")
public R<String> saveOrUpdate(@RequestBody TEmployeeProjectBelongDept tEmployeeProjectBelongDept) {
if (Common.isEmpty(tEmployeeProjectBelongDept.getId())) {
return R.failed("项目ID必填");
}
if (Common.isEmpty(tEmployeeProjectBelongDept.getEmpDeptid())) {
tEmployeeProjectBelongDeptService.removeById(tEmployeeProjectBelongDept.getId());
return R.ok(CommonConstants.SAVE_SUCCESS);
} else if (Common.isEmpty(tEmployeeProjectBelongDept.getEmpDeptname())) {
return R.failed("所属部门名称必填");
}
tEmployeeProjectBelongDeptService.saveOrUpdate(tEmployeeProjectBelongDept);
return R.ok(CommonConstants.SAVE_SUCCESS);
}
/**
* CSP导出花名册
* @author hgw
* @date 2025-02-28 15:03:17
**/
@Operation(description = "CSP导出花名册")
@PostMapping("/export")
public void export(HttpServletResponse response, @RequestBody TEmployeeProjectBelongDeptSearchVo searchVo) {
tEmployeeProjectBelongDeptService.listExport(response,searchVo);
}
/**
* 获取指定部门下花名册总数
* @param tEmployeeProjectBelongDept 花名册查询
* @return R<Integer> 花名册总数
* @author chenyuxi
* @since 1.9.7
*/
@GetMapping(value = "/getDeptCount")
public R<Integer> getDeptCount(TEmployeeProjectBelongDeptSearchVo tEmployeeProjectBelongDept) {
if(Common.isEmpty(tEmployeeProjectBelongDept.getEmpDeptId())){
R.failed("所属部门id不能为空");
}
if(Common.isEmpty(tEmployeeProjectBelongDept.getDeptId())){
R.failed("项目ID不能为空");
}
return R.ok(tEmployeeProjectBelongDeptService.getDeptCount(tEmployeeProjectBelongDept));
}
/**
* 根据权限获取对应部门ID下的花名册总数Map
* @param tEmployeeProjectBelongDept 花名册查询
* @return R<Integer> 花名册总数
* @author chenyuxi
* @since 1.9.7
*/
@GetMapping(value = "/getDeptCountMap")
public R<Map<String,Integer>> getDeptCountMap(TEmployeeProjectBelongDeptSearchVo tEmployeeProjectBelongDept) {
if(Common.isEmpty(tEmployeeProjectBelongDept.getDeptId())){
R.failed("项目ID不能为空");
}
YifuUser user = SecurityUtils.getUser();
if (user == null || Common.isEmpty(user.getId())) {
return R.failed(CommonConstants.PLEASE_LOG_IN);
}
List<UserPermissionVo> cspPermList = user.getCspPermMap();
if(Common.isEmpty(cspPermList)){
return R.failed("获取用户权限失败!");
}
// 获取用户在当前项目下的权限
UserPermissionVo authority = null;
for (UserPermissionVo userPermissionVo : cspPermList) {
if(tEmployeeProjectBelongDept.getDeptId().equals(userPermissionVo.getProjectId())){
authority = userPermissionVo;
}
}
if(Common.isEmpty(authority)){
return R.failed("获取用户在当前项目下的权限失败!");
}
return R.ok(tEmployeeProjectBelongDeptService.getDeptCountMap(tEmployeeProjectBelongDept,authority));
}
/**
* 没有关联部门的花名册总数
* @param tEmployeeProjectBelongDept 花名册查询
* @return R<Integer> 花名册总数
* @author chenyuxi
* @since 1.9.7
*/
@GetMapping(value = "/getNoneDeptCount")
public R<Integer> getNoneDeptCount(TEmployeeProjectBelongDeptSearchVo tEmployeeProjectBelongDept) {
if(Common.isEmpty(tEmployeeProjectBelongDept.getDeptId())){
R.failed("项目ID不能为空");
}
return R.ok(tEmployeeProjectBelongDeptService.getNoneDeptCount(tEmployeeProjectBelongDept));
}
/**
* @Author huych
* @Description 根据项目id和用户id查询csp部门信息
* @Date 14:27 2025/3/10
* @Param
* @return
**/
@Inner
@PostMapping("/inner/saveOrDeleteDeptRelation")
public R<Boolean> saveOrDeleteDeptRelation(@RequestBody SysCspDeptVo vo) {
return R.ok(tEmployeeProjectBelongDeptService.saveOrDeleteDeptRelation(vo));
}
}
......@@ -22,10 +22,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yifu.cloud.plus.v1.yifu.archives.entity.TEmployeeProject;
import com.yifu.cloud.plus.v1.yifu.archives.service.TEmployeeProjectService;
import com.yifu.cloud.plus.v1.yifu.archives.vo.EmpStatusVo;
import com.yifu.cloud.plus.v1.yifu.archives.vo.EmployeeProjectExportParamVO;
import com.yifu.cloud.plus.v1.yifu.archives.vo.TSettleDomainDataVo;
import com.yifu.cloud.plus.v1.yifu.archives.vo.UpProjectSocialFundVo;
import com.yifu.cloud.plus.v1.yifu.archives.vo.*;
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.ErrorMessage;
......@@ -36,6 +33,8 @@ import com.yifu.cloud.plus.v1.yifu.common.log.annotation.SysLog;
import com.yifu.cloud.plus.v1.yifu.common.security.annotation.Inner;
import com.yifu.cloud.plus.v1.yifu.common.security.util.SecurityUtils;
import com.yifu.cloud.plus.v1.yifu.salary.vo.TInsuranceUnpurchasePersonCardVo;
import com.yifu.cloud.plus.v1.yifu.salary.vo.TSalaryStandardSelectViewVo;
import com.yifu.cloud.plus.v1.yifu.salary.vo.TSalaryStandardUnprojectVo;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.RequiredArgsConstructor;
......@@ -106,8 +105,8 @@ public class TEmployeeProjectController {
*/
@Operation(summary = "通过id查询", description = "通过id查询")
@GetMapping("/{id}" )
public R getById(@PathVariable("id" ) String id) {
return R.ok(tEmployeeProjectService.getById(id));
public R<TEmployeeProject> getById(@PathVariable("id" ) String id) {
return R.ok(tEmployeeProjectService.getInfoById(id));
}
/**
......@@ -367,4 +366,54 @@ public class TEmployeeProjectController {
public Boolean selectExitEmpProject(@RequestBody TInsuranceUnpurchasePersonCardVo cardVo) {
return tEmployeeProjectService.selectExitEmpProject(cardVo);
}
/**
* @param voList 项目主键
* @Description: 通过id获取结算主体及单位部分信息
* @Author: huyc
* @Date: 2025/2/25 17:01
* @return:
**/
@Inner
@PostMapping("/inner/getUnProjectEmpList")
public TSalaryStandardSelectViewVo getUnProjectEmpList(@RequestBody List<TSalaryStandardUnprojectVo> voList) {
return tEmployeeProjectService.getUnProjectEmpList(voList);
}
/**
* @param vo 人员信息
* @Description: 获取人员项目档案信息
* @Author: huyc
* @Date: 2025/2/27 15:18
* @return:
**/
@Inner
@PostMapping("/inner/getEmpProjectStatus")
public EmpProjectStatusVo getEmpProjectStatus(@RequestBody EmpProjectStatusVo vo) {
return tEmployeeProjectService.getEmpProjectStatus(vo);
}
/**
* @param vo 人员信息
* @Description: 获取人员项目档案信息
* @Author: huyc
* @Date: 2025/2/27 15:18
* @return:
**/
@Inner
@PostMapping("/inner/getOutEmpProjectStatus")
public EmpProjectStatusVo getOutEmpProjectStatus(@RequestBody EmpProjectStatusVo vo) {
return tEmployeeProjectService.getOutEmpProjectStatus(vo);
}
/**
* 通过项目编码查询项目信息
* @param tEmployeeProject
* @return R
*/
@Operation(summary = "通过项目编码查询项目信息", description = "通过项目编码查询项目信息")
@GetMapping("/getProjectByDetpNo" )
public R<IPage<TEmployeeProject>> getProjectByDetpNo(Page page, TEmployeeProject tEmployeeProject) {
return R.ok(tEmployeeProjectService.getProjectByDetpNo(page,tEmployeeProject));
}
}
......@@ -39,6 +39,7 @@ import com.yifu.cloud.plus.v1.yifu.common.security.util.SecurityUtils;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.RequiredArgsConstructor;
import lombok.extern.log4j.Log4j2;
import org.springframework.beans.BeanUtils;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*;
......@@ -58,6 +59,7 @@ import java.util.stream.Collectors;
*/
@RestController
@RequiredArgsConstructor
@Log4j2
@RequestMapping("/tsettledomain")
@Tag(name = "项目表管理")
public class TSettleDomainController {
......@@ -328,6 +330,24 @@ public class TSettleDomainController {
return tSettleDomainService.getSettleInfoByCodes(codes);
}
/**
* @Author huych
* @Description 通过项目编码获取项目信息
* @Date 11:37 2025/3/3
* @Param
* @return
**/
@Operation(description = "通过项目编码获取项目信息")
@SysLog("通过项目编码获取项目信息")
@PostMapping("/getSettleDomainByNo")
public R getSettleDomainByNo(@RequestParam String deptNo) {
TSettleDomain tSettleDomain = tSettleDomainService.getOne(Wrappers.<TSettleDomain>query().lambda()
.eq(TSettleDomain::getDepartNo, deptNo)
.eq(TSettleDomain::getDeleteFlag,CommonConstants.ZERO_STRING)
.last(CommonConstants.LAST_ONE_SQL));
return R.ok(tSettleDomain);
}
/**
* @param id 项目主键
* @Description: 通过id获取结算主体及单位部分信息
......@@ -444,4 +464,23 @@ public class TSettleDomainController {
return tSettleDomainService.changeIssueStatus(changeIssueStatusVo);
}
/**
* @Author fxj
* @Description 更新项目前端客服及手机号码--EKP调用接口
* @Date 11:46 2025/2/28
**/
@Operation(summary = "更新项目前端客服及手机号码--EKP调用接口", description = "更新项目前端客服及手机号码--EKP调用接口")
@SysLog("更新项目前端客服及手机号码--EKP调用接口")
@PostMapping("/updateProjectCsInfo")
public R<Boolean> updateProjectCsInfo(@RequestBody String jsonStr) {
try {
String json = jsonStr.replaceAll("%(?![0-9a-fA-F]{2})", "%25");
jsonStr = URLDecoder.decode(json, CommonConstants.UTF8).replace("=", "");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
List<TDomainUpCsVo> list= JSONObject.parseArray(jsonStr, TDomainUpCsVo.class);
return tSettleDomainService.updateProjectCsInfo(list);
}
}
/*
* 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.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.yifu.cloud.plus.v1.yifu.archives.entity.TCompleteMonitorSetBaseInfo;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* 完整度监控配置
*
* @author hgw
* @date 2025-02-26 15:18:51
*/
@Mapper
public interface TCompleteMonitorSetBaseInfoMapper extends BaseMapper<TCompleteMonitorSetBaseInfo> {
/**
* @Description: 获取ids对应的所有的配置字段
* @Author: hgw
* @Date: 2025/2/26 17:25
* @return: java.util.List<com.yifu.cloud.plus.v1.yifu.archives.entity.TCompleteMonitorSetBaseInfo>
**/
List<TCompleteMonitorSetBaseInfo> getBaseInfoByIds(@Param("ids") String ids);
// 获取类型需要完整的字段名
String getIdByType(@Param("typeName") String typeName);
String getIdByOne();
List<String> getBaseFieldByIdArr(@Param("idArr") String[] idArr);
}
/*
* 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.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.TCompleteMonitorSet;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* 完整度监控配置
*
* @author hgw
* @date 2025-02-26 15:18:51
*/
@Mapper
public interface TCompleteMonitorSetMapper extends BaseMapper<TCompleteMonitorSet> {
/**
* 完整度监控配置简单分页查询
*
* @param tCompleteMonitorSet 完整度监控配置
* @return
*/
IPage<TCompleteMonitorSet> getTCompleteMonitorSetPage(Page<TCompleteMonitorSet> page, @Param("tCompleteMonitorSet") TCompleteMonitorSet tCompleteMonitorSet);
// 获取全部配置
List<TCompleteMonitorSet> getAllList();
// 获取已配置的合同类型
String getAllUseContractType(@Param("oldId") String oldId);
}
/*
* 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.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.TEmployeeProjectBelongDept;
import com.yifu.cloud.plus.v1.yifu.archives.vo.EmployeeProjectScpVO;
import com.yifu.cloud.plus.v1.yifu.archives.vo.TEmployeeProjectBelongDeptSearchVo;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
import java.util.Set;
/**
* 项目档案所属部门表
*
* @author hgw
* @date 2025-02-28 15:03:17
*/
@Mapper
public interface TEmployeeProjectBelongDeptMapper extends BaseMapper<TEmployeeProjectBelongDept> {
/**
* 项目档案所属部门表简单分页查询
*
* @param tEmployeeProjectBelongDept 项目档案所属部门表
* @return
*/
IPage<EmployeeProjectScpVO> getTEmployeeProjectBelongDeptPage(Page<EmployeeProjectScpVO> page
, @Param("tEmployeeProjectBelongDept") TEmployeeProjectBelongDeptSearchVo tEmployeeProjectBelongDept);
// 导出的条数
int getTEmployeeProjectBelongDeptCount(
@Param("tEmployeeProjectBelongDept") TEmployeeProjectBelongDeptSearchVo tEmployeeProjectBelongDept);
// 导出的数据
List<EmployeeProjectScpVO> getTEmployeeProjectBelongDeptList(
@Param("tEmployeeProjectBelongDept") TEmployeeProjectBelongDeptSearchVo tEmployeeProjectBelongDept);
// 获取部门下花名册总数
int getDeptCount(@Param("tEmployeeProjectBelongDept") TEmployeeProjectBelongDeptSearchVo tEmployeeProjectBelongDept);
// 根据权限获取对应部门ID下的花名册总数Map
List<TEmployeeProjectBelongDeptSearchVo> getDeptCountMap(@Param("deptId") String deptId,@Param("departIdSet") Set<String> departIdSet);
// 没有关联部门的花名册总数
int getNoneDeptCount(@Param("tEmployeeProjectBelongDept") TEmployeeProjectBelongDeptSearchVo tEmployeeProjectBelongDept);
}
......@@ -54,6 +54,8 @@ public interface TEmployeeProjectMapper extends BaseMapper<TEmployeeProject> {
IPage<TEmployeeProject> getTEmployeeProjectInfoPage(Page page, @Param("tEmployeeProject") TEmployeeProject tEmployeeProject);
IPage<TEmployeeProject> getProjectByDetpNo(Page page, @Param("tEmployeeProject") TEmployeeProject tEmployeeProject);
// getTEmployeeProjectExportPage 改造
List<EmployeeProjectExportVO> noPageDiy(@Param("tEmployeeProject")EmployeeProjectExportParamVO searchVo);
......@@ -125,4 +127,18 @@ public interface TEmployeeProjectMapper extends BaseMapper<TEmployeeProject> {
* @return
*/
void batchUpdateEmpProjectCompleteStatus(@Param("idList") List<String> idList, @Param("isComplete") String isComplete);
// 配置的不限制完整与否,则根据合同类型,更新为完整
void batchUpdateEmpProjectCompleteStatusByType(@Param("contractType") String contractType, @Param("deptNo") String deptNo);
// 代理的默认为完整 2025-2-26 09:34:54 倩倩评审1.7.7时说的
void updateTrueCompleteByAgent();
// 查找需要判断完整与否的项目档案员工合同类型
List<String> getNeedJudgeCompleteType(@Param("deptNo") String deptNo);
// 根据字段与表与列查询是否继续判断完整的项目ID
List<String> getNeedNextJudgeCompleteByColumnAndEmpProjectId(@Param("type") String type, @Param("deptNo") String deptNo
, @Param("columnInfo") String columnInfo, @Param("tableInfo") String tableInfo
, @Param("empProjectIdList") List<String> empProjectIdList);
}
......@@ -45,7 +45,7 @@ public interface TCompleteMonitorService extends IService<TCompleteMonitor> {
* 档案完整度监控生成
* @return
*/
void createComlpeteMonitor() throws IllegalAccessException;
void createComlpeteMonitor();
/**
* 根据项目编码刷新项目完整度状态
......
/*
* 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.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.yifu.cloud.plus.v1.yifu.archives.entity.TCompleteMonitorSetBaseInfo;
import java.util.List;
/**
* 完整度监控配置
*
* @author hgw
* @date 2025-02-26 15:18:51
*/
public interface TCompleteMonitorSetBaseInfoService extends IService<TCompleteMonitorSetBaseInfo> {
List<TCompleteMonitorSetBaseInfo> getListByBaseType(String baseType);
List<String> getBaseFieldByTypeName(String typeName);
}
/*
* 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.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.TCompleteMonitorSet;
import com.yifu.cloud.plus.v1.yifu.archives.vo.TCompleteMonitorSetSearchVo;
import com.yifu.cloud.plus.v1.yifu.common.core.util.R;
import java.util.List;
/**
* 完整度监控配置
*
* @author hgw
* @date 2025-02-26 15:18:51
*/
public interface TCompleteMonitorSetService extends IService<TCompleteMonitorSet> {
/**
* 完整度监控配置简单分页查询
*
* @param tCompleteMonitorSet 完整度监控配置
* @return
*/
IPage<TCompleteMonitorSet> getTCompleteMonitorSetPage(Page<TCompleteMonitorSet> page, TCompleteMonitorSetSearchVo tCompleteMonitorSet);
List<TCompleteMonitorSet> noPageDiy(TCompleteMonitorSetSearchVo searchVo);
/**
* @Description: 获取在用的员工合同类型
* @Author: hgw
* @Date: 2025/2/27 16:19
* @return: java.lang.String
**/
String getContractType();
/**
* @Description: 新增或编辑
* @Author: hgw
* @Date: 2025/2/27 16:19
* @return: com.yifu.cloud.plus.v1.yifu.common.core.util.R<java.lang.String>
**/
R<String> saveOrUpdateInfo(TCompleteMonitorSet tCompleteMonitorSet);
}
......@@ -22,6 +22,7 @@ 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.TEmployeeInfo;
import com.yifu.cloud.plus.v1.yifu.archives.entity.TEmployeeProject;
import com.yifu.cloud.plus.v1.yifu.archives.vo.*;
import com.yifu.cloud.plus.v1.yifu.common.core.util.R;
import org.springframework.web.multipart.MultipartFile;
......
/*
* 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.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.admin.api.vo.SysCspDeptVo;
import com.yifu.cloud.plus.v1.yifu.archives.entity.TEmployeeProjectBelongDept;
import com.yifu.cloud.plus.v1.yifu.archives.vo.EmployeeProjectScpVO;
import com.yifu.cloud.plus.v1.yifu.archives.vo.TEmployeeProjectBelongDeptSearchVo;
import com.yifu.cloud.plus.v1.yifu.common.core.vo.UserPermissionVo;
import javax.servlet.http.HttpServletResponse;
import java.util.Map;
/**
* 项目档案所属部门表
*
* @author hgw
* @date 2025-02-28 15:03:17
*/
public interface TEmployeeProjectBelongDeptService extends IService<TEmployeeProjectBelongDept> {
/**
* 项目档案所属部门表简单分页查询
*
* @param tEmployeeProjectBelongDept 项目档案所属部门表
* @return
*/
IPage<EmployeeProjectScpVO> getTEmployeeProjectBelongDeptPage(Page<EmployeeProjectScpVO> page
, TEmployeeProjectBelongDeptSearchVo tEmployeeProjectBelongDept);
/**
* @Description: CSP导出花名册
* @Author: hgw
* @Date: 2025/3/3 9:39
* @return: void
**/
void listExport(HttpServletResponse response, TEmployeeProjectBelongDeptSearchVo searchVo);
/**
* 获取部门下花名册总数
*
* @param tEmployeeProjectBelongDept 花名册查询
* @return Integer 花名册总数
*/
Integer getDeptCount(TEmployeeProjectBelongDeptSearchVo tEmployeeProjectBelongDept);
/**
* 根据权限获取对应部门ID下的花名册总数Map
*
* @param tEmployeeProjectBelongDept 花名册查询
* @return Map<String, Integer> 对应部门ID下的花名册总数Map
*/
Map<String, Integer> getDeptCountMap(TEmployeeProjectBelongDeptSearchVo tEmployeeProjectBelongDept, UserPermissionVo authority);
/**
* 没有关联部门的花名册总数
*
* @param tEmployeeProjectBelongDept 花名册查询
* @return Integer 花名册总数
*/
Integer getNoneDeptCount(TEmployeeProjectBelongDeptSearchVo tEmployeeProjectBelongDept);
Boolean saveOrDeleteDeptRelation(SysCspDeptVo vo);
}
......@@ -27,6 +27,8 @@ import com.yifu.cloud.plus.v1.yifu.archives.vo.*;
import com.yifu.cloud.plus.v1.yifu.common.core.util.ErrorMessage;
import com.yifu.cloud.plus.v1.yifu.common.core.util.R;
import com.yifu.cloud.plus.v1.yifu.salary.vo.TInsuranceUnpurchasePersonCardVo;
import com.yifu.cloud.plus.v1.yifu.salary.vo.TSalaryStandardSelectViewVo;
import com.yifu.cloud.plus.v1.yifu.salary.vo.TSalaryStandardUnprojectVo;
import javax.servlet.http.HttpServletResponse;
import java.io.InputStream;
......@@ -41,6 +43,11 @@ import java.util.Map;
*/
public interface TEmployeeProjectService extends IService<TEmployeeProject> {
TSalaryStandardSelectViewVo getUnProjectEmpList(List<TSalaryStandardUnprojectVo> voList);
EmpProjectStatusVo getEmpProjectStatus(EmpProjectStatusVo vo);
EmpProjectStatusVo getOutEmpProjectStatus(EmpProjectStatusVo vo);
/**
* @param tEmployeeProject
* @Description: 新增项目档案校验
......@@ -124,6 +131,14 @@ public interface TEmployeeProjectService extends IService<TEmployeeProject> {
**/
List<TEmployeeProject> getListByEmpId(String empId, int projectStatus);
/**
* @Description: 获取详情
* @Author: hgw
* @Date: 2025/3/4 16:05
* @return: com.yifu.cloud.plus.v1.yifu.archives.entity.TEmployeeProject
**/
TEmployeeProject getInfoById(String id);
/**
* @param empId
* @param deptNo
......@@ -173,6 +188,8 @@ public interface TEmployeeProjectService extends IService<TEmployeeProject> {
R getItemByEmpNo(String empIdcard, String empNo);
IPage<TEmployeeProject> getProjectByDetpNo(Page page, TEmployeeProject tEmployeeProject);
/**
* @param empId
* @param deptId
......@@ -285,4 +302,14 @@ public interface TEmployeeProjectService extends IService<TEmployeeProject> {
Boolean selectExitEmpProject(TInsuranceUnpurchasePersonCardVo cardVo);
/**
* @param p 项目档案信息,含入离职时间等
* @param feedbackType 登记类型 1入职 2离职
* @Description: 新逻辑:加所属部门
* @Author: hgw
* @Date: 2025/3/4 11:39
* @return: void
**/
void doSaveBelongDept(TEmployeeProject p, String feedbackType);
}
......@@ -137,4 +137,6 @@ public interface TSettleDomainService extends IService<TSettleDomain> {
R<Boolean> updateProjectServerTeam(List<TSettleDomainUpServerTeamVo> list);
R<Boolean> changeIssueStatus(ChangeIssueStatusVo changeIssueStatusVo);
R<Boolean> updateProjectCsInfo(List<TDomainUpCsVo> list);
}
......@@ -80,7 +80,7 @@ public class FddContractAttachInfoServiceImpl extends ServiceImpl<FddContractAtt
private TEmployeeInfoMapper tEmployeeInfoMapper;
@Autowired
private TEmployeeProjectMapper tEmployeeProjectMapper;
private TEmployeeProjectService tEmployeeProjectService;
@Autowired
private TEmployeeContractInfoMapper employeeContractInfoMapper;
......@@ -240,6 +240,9 @@ public class FddContractAttachInfoServiceImpl extends ServiceImpl<FddContractAtt
tEmployeeProject.setLeaveTime(null);
tEmployeeProject.setLeaveRemark(CommonConstants.EMPTY_STRING);
tEmployeeProject.setLeaveUser(CommonConstants.EMPTY_STRING);
// 增-同步处理CSP入离职申请为已处理,加日志
tEmployeeProjectService.doSaveBelongDept(tEmployeeProject, CommonConstants.ONE_STRING);
}
//判断人员档案的状态,如果是减档状态就复档
......@@ -695,7 +698,7 @@ public class FddContractAttachInfoServiceImpl extends ServiceImpl<FddContractAtt
empNO = getEmpNo(newTEmpProject.getDeptNo());
newTEmpProject.setEmpNo(empNO);
//新增档案
tEmployeeProjectMapper.insert(newTEmpProject);
employeeProjectMapper.insert(newTEmpProject);
}
//获取员工编码
......
......@@ -89,7 +89,7 @@ public class FileUploadServiceImpl implements FileUploadService {
true,
"1", authorities, "1",
null, null,
null);
null,null);
attaInfo.setCreateBy(user.getId());
attaInfo.setCreateName(user.getNickname());
attaInfo = tAttaInfoService.add(attaInfo);
......
......@@ -78,6 +78,10 @@ public class TCompleteMonitorServiceImpl extends ServiceImpl<TCompleteMonitorMap
private final TArchivesLimitMapper tArchivesLimitMapper;
// 完整度监控配置
private final TCompleteMonitorSetMapper tCompleteMonitorSetMapper;
private final TCompleteMonitorSetBaseInfoMapper tCompleteMonitorSetBaseInfoMapper;
private final OSSUtil ossUtil;
private final AtomicInteger atomicInteger = new AtomicInteger(0);
......@@ -158,11 +162,11 @@ public class TCompleteMonitorServiceImpl extends ServiceImpl<TCompleteMonitorMap
}
@Override
public void createComlpeteMonitor() throws IllegalAccessException {
public void createComlpeteMonitor() {
//先删除所有的档案监控数据
baseMapper.deleteAllMonitorInfo();
//批量查询项目档案的是否完整状态
List<TCompleteMonitorFlagVo> flagList = baseMapper.checkEmpProjectCompleteFlag(null);
/*List<TCompleteMonitorFlagVo> flagList = baseMapper.checkEmpProjectCompleteFlag(null);
if (!flagList.isEmpty()) {
List<String> projectIdList = new ArrayList<>();
List<String> projectNotIdList = new ArrayList<>();
......@@ -184,7 +188,8 @@ public class TCompleteMonitorServiceImpl extends ServiceImpl<TCompleteMonitorMap
if (!projectIdList.isEmpty()) {
projectMapper.batchUpdateEmpProjectCompleteStatus(projectNotIdList, CommonConstants.ONE_STRING);
}
}
}*/
this.judgeProjectCompleteCore(null);
//查询项目维度的信息
List<TCompleteMonitor> list = baseMapper.getAllMonitorEmpList(null);
......@@ -206,7 +211,7 @@ public class TCompleteMonitorServiceImpl extends ServiceImpl<TCompleteMonitorMap
public void updateProjectStatusByDeptNo(String deptNo) throws IllegalAccessException{
//批量查询项目档案的是否完整状态
List<TCompleteMonitorFlagVo> flagList = baseMapper.checkEmpProjectCompleteFlag(deptNo);
/*List<TCompleteMonitorFlagVo> flagList = baseMapper.checkEmpProjectCompleteFlag(deptNo);
if (!flagList.isEmpty()) {
List<String> projectIdList = new ArrayList<>();
List<String> projectNotIdList = new ArrayList<>();
......@@ -227,7 +232,8 @@ public class TCompleteMonitorServiceImpl extends ServiceImpl<TCompleteMonitorMap
if (!projectNotIdList.isEmpty()) {
projectMapper.batchUpdateEmpProjectCompleteStatus(projectNotIdList, CommonConstants.ONE_STRING);
}
}
}*/
this.judgeProjectCompleteCore(deptNo);
//删除项目监控表数据
baseMapper.deleteMonitorInfoByDeptNo(deptNo);
......@@ -237,6 +243,101 @@ public class TCompleteMonitorServiceImpl extends ServiceImpl<TCompleteMonitorMap
this.saveBatch(list);
}
/**
* @param deptNo 项目编码
* @Description:
* @Author: hgw
* @Date: 2025/2/25 15:30
* @return: void
**/
private void judgeProjectCompleteCore(String deptNo) {
// 1:员工类型为代理的 直接完整
projectMapper.updateTrueCompleteByAgent();
// 查询需要判断的数量有多少
List<String> typeList = projectMapper.getNeedJudgeCompleteType(deptNo);
if (typeList != null && !typeList.isEmpty()) {
// 查找配置
List<TCompleteMonitorSet> setList = tCompleteMonitorSetMapper.getAllList();
Map<String, String> setMap = new HashMap<>();
if (setList != null && !setList.isEmpty()) {
String[] strArr;
String baseId;
for (TCompleteMonitorSet set:setList) {
strArr = set.getContractType().split(",");
baseId = set.getBaseId();
for (String str : strArr) {
setMap.put(str, baseId);
}
}
}
// 默认配置
String baseSet = setMap.get("-1");
List<TCompleteMonitorSetBaseInfo> baseSetList = tCompleteMonitorSetBaseInfoMapper.getBaseInfoByIds(baseSet);
Map<String, List<TCompleteMonitorSetBaseInfo>> baseSetMap = new HashMap<>();
baseSetMap.put(baseSet, baseSetList);
// 表示有了其他配置
if (setMap.size() > 1) {
String useSet;
for (String type : typeList) {
useSet = setMap.get(type);
if (Common.isEmpty(useSet)) {
useSet = baseSet;
}
if ("-1".equals(useSet)) {
// -1表示配置的为空,直接完整
projectMapper.batchUpdateEmpProjectCompleteStatusByType(type, deptNo);
} else {
baseSetList = baseSetMap.get(useSet);
if (baseSetList == null) {
baseSetList = tCompleteMonitorSetBaseInfoMapper.getBaseInfoByIds(useSet);
baseSetMap.put(useSet, baseSetList);
}
doJudgeCore(type, deptNo, baseSetList);
}
}
} else {
// 表示都用默认配置
doJudgeCore(null, deptNo, baseSetList);
}
}
}
/**
* @param type 合同类型
* @param deptNo 项目编码
* @param baseSetList 配置list
* @Description: 核心配置
* @Author: hgw
* @Date: 2025/2/26 17:45
* @return: void
**/
private void doJudgeCore(String type, String deptNo, List<TCompleteMonitorSetBaseInfo> baseSetList) {
List<String> empProjectId;
if (baseSetList != null && !baseSetList.isEmpty()) {
empProjectId = null;
String tableInfo;
for (TCompleteMonitorSetBaseInfo baseInfo : baseSetList) {
tableInfo = baseInfo.getBaseTable();
if ("t_employee_info".equals(tableInfo) || "t_employee_project".equals(tableInfo)) {
tableInfo = null;
}
// 根据配置,逐个查询是否有空值:
empProjectId = projectMapper.getNeedNextJudgeCompleteByColumnAndEmpProjectId(
type, deptNo, baseInfo.getBaseColumn(), tableInfo, empProjectId);
if (empProjectId == null || empProjectId.isEmpty()) {
break;
}
}
// 这些事经过筛选的项目id,表示完整
if (empProjectId != null && !empProjectId.isEmpty()) {
projectMapper.batchUpdateEmpProjectCompleteStatus(empProjectId, CommonConstants.ZERO_STRING);
}
}
}
/**
*
* @param obj 对象
......@@ -438,6 +539,13 @@ public class TCompleteMonitorServiceImpl extends ServiceImpl<TCompleteMonitorMap
headList.add(this.getNewArrayList(new String[]{oneTitle, "是否从事过井下、高空、高温、特别繁重体力劳动以及有毒有害工种"}));
oneTitle = "不良记录";
headList.add(this.getNewArrayList(new String[]{oneTitle, "不良记录描述"}));
oneTitle = "银行卡信息";
headList.add(this.getNewArrayList(new String[]{oneTitle, "银行卡号"}));
headList.add(this.getNewArrayList(new String[]{oneTitle, "开户总行"}));
headList.add(this.getNewArrayList(new String[]{oneTitle, "开户省"}));
headList.add(this.getNewArrayList(new String[]{oneTitle, "开户市"}));
headList.add(this.getNewArrayList(new String[]{oneTitle, "开户支行"}));
headList.add(this.getNewArrayList(new String[]{oneTitle, "计税月份"}));
Set<String> titleContent = getExportFieldNameDetailByClass(TMainExportAllVO.class);
//ExcelUtil<TMainExportAllVO> util = new ExcelUtil<>(TMainExportAllVO.class)
......
/*
* 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.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.yifu.cloud.plus.v1.yifu.archives.entity.TCompleteMonitorSetBaseInfo;
import com.yifu.cloud.plus.v1.yifu.archives.mapper.TCompleteMonitorSetBaseInfoMapper;
import com.yifu.cloud.plus.v1.yifu.archives.service.TCompleteMonitorSetBaseInfoService;
import com.yifu.cloud.plus.v1.yifu.common.core.util.Common;
import lombok.extern.log4j.Log4j2;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.List;
/**
* 完整度监控配置
*
* @author hgw
* @date 2025-02-26 15:18:51
*/
@Log4j2
@Service
public class TCompleteMonitorSetBaseInfoServiceImpl extends ServiceImpl<TCompleteMonitorSetBaseInfoMapper, TCompleteMonitorSetBaseInfo> implements TCompleteMonitorSetBaseInfoService {
@Override
public List<TCompleteMonitorSetBaseInfo> getListByBaseType(String baseType) {
LambdaQueryWrapper<TCompleteMonitorSetBaseInfo> wrapper = Wrappers.lambdaQuery();
if (Common.isNotNull(baseType)) {
wrapper.in(TCompleteMonitorSetBaseInfo::getBaseType, baseType);
}
wrapper.orderByAsc(TCompleteMonitorSetBaseInfo::getId);
return baseMapper.selectList(wrapper);
}
/**
* @param typeName 类型名称
* @Description:
* @Author: hgw
* @Date: 2025/2/27 21:19
* @return: java.util.List<java.lang.String>
**/
@Override
public List<String> getBaseFieldByTypeName(String typeName) {
String[] idArr = null;
String ids = baseMapper.getIdByType(typeName);
// 取默认配置
if (Common.isEmpty(ids) || "-1".equals(ids)) {
ids = baseMapper.getIdByOne();
}
if (Common.isNotNull(ids)) {
idArr = ids.split(",");
}
if (idArr == null || idArr.length == 0) {
// -1表示不可以
List<String> stringList = new ArrayList<>();
stringList.add("-1");
return stringList;
}
return baseMapper.getBaseFieldByIdArr(idArr);
}
}
/*
* 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.service.impl;
import cn.hutool.core.util.ArrayUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
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.yifu.archives.entity.TCompleteMonitorSet;
import com.yifu.cloud.plus.v1.yifu.archives.mapper.TCompleteMonitorSetMapper;
import com.yifu.cloud.plus.v1.yifu.archives.service.TCompleteMonitorSetService;
import com.yifu.cloud.plus.v1.yifu.archives.vo.TCompleteMonitorSetSearchVo;
import com.yifu.cloud.plus.v1.yifu.common.core.constant.CommonConstants;
import com.yifu.cloud.plus.v1.yifu.common.core.util.Common;
import com.yifu.cloud.plus.v1.yifu.common.core.util.R;
import com.yifu.cloud.plus.v1.yifu.common.core.vo.YifuUser;
import com.yifu.cloud.plus.v1.yifu.common.mybatis.base.BaseEntity;
import com.yifu.cloud.plus.v1.yifu.common.security.util.SecurityUtils;
import lombok.extern.log4j.Log4j2;
import org.springframework.stereotype.Service;
import java.time.LocalDateTime;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* 完整度监控配置
*
* @author hgw
* @date 2025-02-26 15:18:51
*/
@Log4j2
@Service
public class TCompleteMonitorSetServiceImpl extends ServiceImpl<TCompleteMonitorSetMapper, TCompleteMonitorSet> implements TCompleteMonitorSetService {
/**
* 完整度监控配置简单分页查询
*
* @param tCompleteMonitorSet 完整度监控配置
* @return
*/
@Override
public IPage<TCompleteMonitorSet> getTCompleteMonitorSetPage(Page<TCompleteMonitorSet> page, TCompleteMonitorSetSearchVo tCompleteMonitorSet) {
return baseMapper.getTCompleteMonitorSetPage(page, tCompleteMonitorSet);
}
@Override
public List<TCompleteMonitorSet> noPageDiy(TCompleteMonitorSetSearchVo searchVo) {
LambdaQueryWrapper<TCompleteMonitorSet> wrapper = buildQueryWrapper(searchVo);
List<String> idList = Common.getList(searchVo.getIds());
if (Common.isNotNull(idList)) {
wrapper.in(TCompleteMonitorSet::getId, idList);
}
if (searchVo.getLimitStart() >= 0 && searchVo.getLimitEnd() > 0) {
wrapper.last(" limit " + searchVo.getLimitStart() + "," + searchVo.getLimitEnd());
}
wrapper.orderByDesc(BaseEntity::getCreateTime);
return baseMapper.selectList(wrapper);
}
private LambdaQueryWrapper<TCompleteMonitorSet> buildQueryWrapper(TCompleteMonitorSetSearchVo entity) {
LambdaQueryWrapper<TCompleteMonitorSet> wrapper = Wrappers.lambdaQuery();
if (ArrayUtil.isNotEmpty(entity.getCreateTimes())) {
wrapper.ge(TCompleteMonitorSet::getCreateTime, entity.getCreateTimes()[0])
.le(TCompleteMonitorSet::getCreateTime,
entity.getCreateTimes()[1]);
}
if (Common.isNotNull(entity.getCreateName())) {
wrapper.eq(TCompleteMonitorSet::getCreateName, entity.getCreateName());
}
return wrapper;
}
/**
* @Description: 获取在用的员工合同类型
* @Author: hgw
* @Date: 2025/2/27 16:16
* @return: java.lang.String
**/
@Override
public String getContractType() {
return baseMapper.getAllUseContractType(null);
}
/**
* @Description: 新增或编辑
* @Author: hgw
* @Date: 2025/2/27 16:16
* @return: java.lang.String
**/
@Override
public R<String> saveOrUpdateInfo(TCompleteMonitorSet tCompleteMonitorSet) {
if (Common.isEmpty(tCompleteMonitorSet.getContractType()) || Common.isEmpty(tCompleteMonitorSet.getContractTypeName())) {
return R.failed("请传合同类型与合同类型名称");
}
if (Common.isEmpty(tCompleteMonitorSet.getIsMonitor())) {
return R.failed("请传是否监控0否1是");
}
if (Common.isEmpty(tCompleteMonitorSet.getBaseId())) {
return R.failed("请传BaseId,为空传-1");
}
String allUseContractType = baseMapper.getAllUseContractType(tCompleteMonitorSet.getId());
if (Common.isNotNull(allUseContractType)) {
String[] contractTypeArr = tCompleteMonitorSet.getContractType().split(",");
String[] contractTypeNameArr = tCompleteMonitorSet.getContractTypeName().split(",");
if (contractTypeArr.length != contractTypeNameArr.length) {
return R.failed("请检查合同类型与合同类型名称的个数是否一致");
}
String[] allUseContractTypeArr = allUseContractType.split(",");
Map<String, Integer> curMap = new HashMap<>();
for (String str : allUseContractTypeArr) {
curMap.put(str, CommonConstants.ONE_INT);
}
String curContractType = null;
for (String str : contractTypeArr) {
if (curMap.get(str) != null) {
if (Common.isEmpty(curContractType)) {
curContractType = str;
} else {
curContractType += "、" + str;
}
}
}
if (Common.isNotNull(curContractType)) {
return R.failed("员工合同类型已存在");
}
}
YifuUser user = SecurityUtils.getUser();
if (user == null || Common.isEmpty(user.getNickname())) {
return R.failed("请登录!");
}
tCompleteMonitorSet.setUpdateTime(LocalDateTime.now());
tCompleteMonitorSet.setUpdateName(user.getNickname());
this.saveOrUpdate(tCompleteMonitorSet);
return R.ok(CommonConstants.SAVE_SUCCESS);
}
}
......@@ -53,6 +53,7 @@ import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.validation.BindingResult;
import java.time.LocalDateTime;
import java.util.*;
import java.util.regex.Pattern;
......@@ -131,6 +132,10 @@ public class TEmpChangeInfoServiceImpl extends ServiceImpl<TEmpChangeInfoMapper,
updateTEmployeeProject.setOdlDeptId(tEmployeeProjectOld.getDeptId());
updateTEmployeeProject.setOldDeptNo(tEmployeeProjectOld.getDeptNo());
tEmployeeProjectService.updateById(updateTEmployeeProject);
// 同步CSP
this.doAddAAndReduceB(updateTEmployeeProject, tEmployeeProjectOld);
tEmpChangeInfo.setProId(updateTEmployeeProject.getId());
UpdateSocialFoundVo updateSocialFoundVo = new UpdateSocialFoundVo();
......@@ -163,6 +168,35 @@ public class TEmpChangeInfoServiceImpl extends ServiceImpl<TEmpChangeInfoMapper,
return R.ok();
}
/**
* @param updateTEmployeeProject
* @param tEmployeeProjectOld
* @Description: 同步CSP服务,增加A,减少B
* @Author: hgw
* @Date: 2025/3/4 15:01
* @return: void
**/
private void doAddAAndReduceB(TEmployeeProject updateTEmployeeProject, TEmployeeProject tEmployeeProjectOld) {
YifuUser user = SecurityUtils.getUser();
if (user != null && Common.isNotNull(user.getId())) {
// 增B-同步处理CSP入离职申请为已处理,加日志
TEmployeeProject huaZhuanProject = new TEmployeeProject();
huaZhuanProject.setId(updateTEmployeeProject.getId());
huaZhuanProject.setDeptId(updateTEmployeeProject.getDeptId());
huaZhuanProject.setCreateTime(LocalDateTime.now());
huaZhuanProject.setCreateName(user.getNickname());
tEmployeeProjectService.doSaveBelongDept(huaZhuanProject, CommonConstants.ONE_STRING);
// 减A-同步处理CSP入离职申请为已处理,加日志
huaZhuanProject = new TEmployeeProject();
huaZhuanProject.setId(updateTEmployeeProject.getId());
huaZhuanProject.setDeptId(tEmployeeProjectOld.getDeptId());
huaZhuanProject.setLeaveTime(LocalDateTime.now());
huaZhuanProject.setLeaveUser(user.getNickname());
tEmployeeProjectService.doSaveBelongDept(huaZhuanProject, CommonConstants.TWO_STRING);
}
}
@Override
public R<List<ErrorMessage>> batchChangeArc(List<TEmpChangeInfoVO> excelVOList, BindingResult bindingResult) {
// 通用校验获取失败的数据
......@@ -172,9 +206,17 @@ public class TEmpChangeInfoServiceImpl extends ServiceImpl<TEmpChangeInfoMapper,
errorMessageList.forEach(errorMessage -> errorMsgMap.put(errorMessage.getLineNum(),errorMessage));
}
YifuUser user = SecurityUtils.getUser();
// 老项目已减项,划转后将删除 hgw 2023-8-22 10:47:41
List<TEmployeeProject> oldUpdateList = new ArrayList<>();
List<TEmployeeProject> updateList = new ArrayList<>();
// 同步CSP服务使用
List<TEmployeeProject> addCspList = new ArrayList<>();
List<TEmployeeProject> reduceCspList = new ArrayList<>();
TEmployeeProject addProject = new TEmployeeProject();
TEmployeeProject reduceProject = new TEmployeeProject();
Set<String> errorMsg;
//对象声明
TEmpChangeInfoVO excel;
......@@ -258,6 +300,22 @@ public class TEmpChangeInfoServiceImpl extends ServiceImpl<TEmpChangeInfoMapper,
updateTEmployeePro.setOdlDeptId(tEmployeeProjectOld.getDeptId());
updateTEmployeePro.setOldDeptNo(tEmployeeProjectOld.getDeptNo());
updateList.add(updateTEmployeePro);
addProject = new TEmployeeProject();
addProject.setId(updateTEmployeePro.getId());
addProject.setDeptId(updateTEmployeePro.getDeptId());
addProject.setEmpIdcard(updateTEmployeePro.getEmpIdcard());
addProject.setCreateTime(LocalDateTime.now());
addProject.setCreateName(user.getNickname());
addCspList.add(addProject);
reduceProject = new TEmployeeProject();
reduceProject.setId(updateTEmployeePro.getId());
reduceProject.setDeptId(tEmployeeProjectOld.getDeptId());
reduceProject.setEmpIdcard(tEmployeeProjectOld.getEmpIdcard());
reduceProject.setLeaveTime(LocalDateTime.now());
reduceProject.setLeaveUser(user.getNickname());
reduceCspList.add(reduceProject);
}
} else {
errorMsg.add(MsgUtils.getMessage(ErrorCodes.PROJECT_PERSON_SEARCH_EXIT, excel.getOldSettleCode()));
......@@ -276,6 +334,14 @@ public class TEmpChangeInfoServiceImpl extends ServiceImpl<TEmpChangeInfoMapper,
tEmployeeProjectService.updateBatchById(oldUpdateList);
}
tEmployeeProjectService.updateBatchById(updateList);
// 同步CSP
for (TEmployeeProject add : addCspList) {
tEmployeeProjectService.doSaveBelongDept(add, CommonConstants.ONE_STRING);
}
for (TEmployeeProject reduce : reduceCspList) {
tEmployeeProjectService.doSaveBelongDept(reduce, CommonConstants.TWO_STRING);
}
// 循环里的申明
UpdateSocialFoundVo updateSocialFoundVo;
for (TEmployeeProject tEmployeeProject: updateList) {
......@@ -615,6 +681,8 @@ public class TEmpChangeInfoServiceImpl extends ServiceImpl<TEmpChangeInfoMapper,
tEmployeeProjectService.updateChangeById(oldEmpProject);
//新增或变更新的项目档案
tEmployeeProjectService.saveOrUpdate(newEmpProject);
// 增加,同步CSP,下面的减少老项目档案,在方法里有减少CSP
tEmployeeProjectService.doSaveBelongDept(newEmpProject, CommonConstants.ONE_STRING);
//同步减项老项目档案
if (CommonConstants.ONE_STRING.equals(vo.getChangeType())){
oldEmpProject.setIsLeaveEmployee(CommonConstants.ZERO_INT);
......
......@@ -1751,6 +1751,10 @@ public class TEmployeeContractInfoServiceImpl extends ServiceImpl<TEmployeeContr
tEmployeeProject.setLeaveRemark("终止合同联动减项");
tEmployeeProject.setLeaveTime(LocalDateTime.now());
tEmployeeProject.setLeaveUser(user.getNickname());
// 减-同步处理CSP入离职申请为已处理,加日志
tEmployeeProjectService.doSaveBelongDept(tEmployeeProject, CommonConstants.TWO_STRING);
workInfo.append("减项成功,");
} else {
failueInfo.append("存在社保/公积金,无法减项");
......
/*
* 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.service.impl;
import com.alibaba.excel.EasyExcelFactory;
import com.alibaba.excel.ExcelWriter;
import com.alibaba.excel.write.metadata.WriteSheet;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.yifu.cloud.plus.v1.yifu.admin.api.vo.SysCspDeptVo;
import com.yifu.cloud.plus.v1.yifu.archives.entity.TEmployeeProjectBelongDept;
import com.yifu.cloud.plus.v1.yifu.archives.mapper.TEmployeeProjectBelongDeptMapper;
import com.yifu.cloud.plus.v1.yifu.archives.service.TEmployeeProjectBelongDeptService;
import com.yifu.cloud.plus.v1.yifu.archives.vo.EmployeeProjectScpVO;
import com.yifu.cloud.plus.v1.yifu.archives.vo.TEmployeeProjectBelongDeptSearchVo;
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.ExcelAttributeConstants;
import com.yifu.cloud.plus.v1.yifu.common.core.util.Common;
import com.yifu.cloud.plus.v1.yifu.common.core.util.DateUtil;
import com.yifu.cloud.plus.v1.yifu.common.core.util.DictConverter;
import com.yifu.cloud.plus.v1.yifu.common.core.util.RedisUtil;
import com.yifu.cloud.plus.v1.yifu.common.core.vo.UserPermissionVo;
import lombok.extern.log4j.Log4j2;
import org.springframework.stereotype.Service;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.net.URLEncoder;
import java.util.*;
/**
* 项目档案所属部门表
*
* @author hgw
* @date 2025-02-28 15:03:17
*/
@Log4j2
@Service
public class TEmployeeProjectBelongDeptServiceImpl extends ServiceImpl<TEmployeeProjectBelongDeptMapper, TEmployeeProjectBelongDept> implements TEmployeeProjectBelongDeptService {
/**
* 项目档案所属部门表简单分页查询
*
* @param tEmployeeProjectBelongDept 项目档案所属部门表
* @return
*/
@Override
public IPage<EmployeeProjectScpVO> getTEmployeeProjectBelongDeptPage(Page<EmployeeProjectScpVO> page, TEmployeeProjectBelongDeptSearchVo tEmployeeProjectBelongDept) {
this.setSearchParam(tEmployeeProjectBelongDept);
return baseMapper.getTEmployeeProjectBelongDeptPage(page, tEmployeeProjectBelongDept);
}
/**
* @Description: 处理查询条件
* @Author: hgw
* @Date: 2025/3/3 9:47
* @return: void
**/
private void setSearchParam(TEmployeeProjectBelongDeptSearchVo tEmployeeProjectBelongDept) {
if (Common.isEmpty(tEmployeeProjectBelongDept.getDeptId())) {
// 没传项目id,置为-1,不给查询
tEmployeeProjectBelongDept.setDeptId("-1");
}
// empDeptId == -1,则查项目下所有 所属部门 为空的(逻辑在XML的where里)
// 2025-3-3 11:52:18 倩倩与宇茜沟通后确定的,宇茜说 所属部门树的顶级的数字,是底下加上的,所以没有 包含空的
if (Common.isNotNull(tEmployeeProjectBelongDept.getEmpDeptId()) && !"-1".equals(tEmployeeProjectBelongDept.getEmpDeptId())) {
tEmployeeProjectBelongDept.setEmpDeptIdArray(tEmployeeProjectBelongDept.getEmpDeptId().split(","));
}
if (Common.isEmpty(tEmployeeProjectBelongDept.getEmpDeptId())) {
tEmployeeProjectBelongDept.setEmpDeptId("不查数据");
}
}
/**
* @Description: CSP导出花名册
* @Author: hgw
* @Date: 2025/3/3 9:54
* @return: void
**/
@Override
public void listExport(HttpServletResponse response, TEmployeeProjectBelongDeptSearchVo searchVo) {
String fileName = "人员花名册批量导出" + DateUtil.getThisTime() + ".xlsx";
//获取要导出的列表
List<EmployeeProjectScpVO> list = new ArrayList<>();
// 处理查询条件
this.setSearchParam(searchVo);
long count = baseMapper.getTEmployeeProjectBelongDeptCount(searchVo);
ServletOutputStream out = null;
try {
out = response.getOutputStream();
response.setContentType(CommonConstants.MULTIPART_FORM_DATA);
response.setCharacterEncoding("utf-8");
response.setHeader(CommonConstants.CONTENT_DISPOSITION, CommonConstants.ATTACHMENT_FILENAME + URLEncoder.encode(fileName, CommonConstants.UTF8));
// 这里 需要指定写用哪个class去写,然后写到第一个sheet,然后文件流会自动关闭
Map<String, String> nameAndDicTypeMap = new HashMap<>();
nameAndDicTypeMap.put("contractStatus", ExcelAttributeConstants.PERSONNEL_STATE);
nameAndDicTypeMap.put("insuranceStatus", ExcelAttributeConstants.COMMERCIAL_SATTE);
Map<String, String> redisLabelMap = (Map<String, String>) RedisUtil.redis.opsForValue().get(CacheConstants.REDIS_DICT_LABLE);
ExcelWriter excelWriter = EasyExcelFactory.write(out, EmployeeProjectScpVO.class).registerConverter(new DictConverter(nameAndDicTypeMap, redisLabelMap)).build();
int index = 0;
if (count > CommonConstants.ZERO_INT) {
for (int i = 0; i <= count; i += CommonConstants.EXCEL_EXPORT_LIMIT) {
// 获取实际记录
searchVo.setLimitStart(i);
searchVo.setLimitEnd(CommonConstants.EXCEL_EXPORT_LIMIT);
list = baseMapper.getTEmployeeProjectBelongDeptList(searchVo);
if (Common.isNotNull(list)) {
WriteSheet writeSheet = EasyExcelFactory.writerSheet("花名册" + index).build();
excelWriter.write(list, writeSheet);
index++;
}
if (Common.isNotNull(list)) {
list.clear();
}
}
} else {
WriteSheet writeSheet = EasyExcelFactory.writerSheet("花名册" + index).build();
excelWriter.write(list, writeSheet);
}
if (Common.isNotNull(list)) {
list.clear();
}
out.flush();
excelWriter.finish();
} catch (Exception e) {
log.error("执行异常", e);
} finally {
try {
if (null != out) {
out.close();
}
} catch (IOException e) {
log.error("执行异常", e);
}
}
}
/**
* 获取部门下花名册总数
*
* @param tEmployeeProjectBelongDept 花名册查询
* @return Integer 花名册总数
*/
@Override
public Integer getDeptCount(TEmployeeProjectBelongDeptSearchVo tEmployeeProjectBelongDept) {
return baseMapper.getDeptCount(tEmployeeProjectBelongDept);
}
/**
* 根据权限获取对应部门ID下的花名册总数Map
*
* @param tEmployeeProjectBelongDept 花名册查询
* @return Map<String, Integer> 对应部门ID下的花名册总数Map
*/
@Override
public Map<String, Integer> getDeptCountMap(TEmployeeProjectBelongDeptSearchVo tEmployeeProjectBelongDept, UserPermissionVo authority) {
Map<String, Integer> deptCountMap = new HashMap<>();
Set<String> departIdSet = authority.getDepartIdSet();
// 有全部权限
if(authority.isHaveAll()){
departIdSet = new HashSet<>();
}
List<TEmployeeProjectBelongDeptSearchVo> sysDeptList = baseMapper.getDeptCountMap(tEmployeeProjectBelongDept.getDeptId(),departIdSet);
if(Common.isNotNull(sysDeptList)) {
for (TEmployeeProjectBelongDeptSearchVo deptVo : sysDeptList) {
deptCountMap.put(deptVo.getEmpDeptId(),deptVo.getEmpNum());
}
}
return deptCountMap;
}
/**
* 没有关联部门的花名册总数
*
* @param tEmployeeProjectBelongDept 花名册查询
* @return Integer 花名册总数
*/
@Override
public Integer getNoneDeptCount(TEmployeeProjectBelongDeptSearchVo tEmployeeProjectBelongDept) {
return baseMapper.getNoneDeptCount(tEmployeeProjectBelongDept);
}
@Override
public Boolean saveOrDeleteDeptRelation(SysCspDeptVo vo) {
if (Common.isNotNull(vo.getDepartName())) {
TEmployeeProjectBelongDept dept = new TEmployeeProjectBelongDept();
dept.setId(vo.getProjectId());
dept.setEmpDeptid(vo.getDepartId().toString());
dept.setEmpDeptname(vo.getDepartName());
this.save(dept);
} else {
this.removeById(vo.getProjectId());
}
return true;
}
}
......@@ -1683,7 +1683,7 @@ public class TPreEmpMainServiceImpl extends ServiceImpl<TPreEmpMainMapper, TPreE
}
} catch (Exception e) {
log.error("档案预入职C端保存异常:", e);
throw new RuntimeException("保存失败,请联系管理员!!预入职主键【" + main.getId() + "】");
throw new RuntimeException("保存失败,请联系管理员!!预入职主键【" + main.getId() + "】身份证=" + main.getEmpIdcard());
}
}
......@@ -1719,7 +1719,7 @@ public class TPreEmpMainServiceImpl extends ServiceImpl<TPreEmpMainMapper, TPreE
true,
"1", authorities, "1",
null, null,
null);
null,null);
}
/**
......@@ -1822,7 +1822,7 @@ public class TPreEmpMainServiceImpl extends ServiceImpl<TPreEmpMainMapper, TPreE
tEmployeeProjectService.updateById(project);
} else {
this.saveTEmployeeProject(project, user, tPreEmployeeProject, emp, dept);
project = this.saveTEmployeeProject(project, user, tPreEmployeeProject, emp, dept);
}
} else {
// 新建档案、项目档案,将档案id赋值,给其他附属信息
......@@ -1835,12 +1835,17 @@ public class TPreEmpMainServiceImpl extends ServiceImpl<TPreEmpMainMapper, TPreE
empId = emp.getId();
empIdCard = emp.getEmpIdcard();
// 2项目档案
this.saveTEmployeeProject(project, user, tPreEmployeeProject, emp, dept);
project = this.saveTEmployeeProject(project, user, tPreEmployeeProject, emp, dept);
}
}
if (emp == null) {
return R.failed("新建员工失败!");
}
if (project != null) {
// 增加,同步CSP
tEmployeeProjectService.doSaveBelongDept(project, CommonConstants.ONE_STRING);
}
// 更新或新增薪资人员
// 2024-11-6 16:56:46 新逻辑:在项人员,要更新薪资人员,及时卡号为空也要更新
if (Common.isNotNull(tPreEmployeeInfo.getBankNo()) || isMustUpdateSalary) {
......@@ -3328,6 +3333,8 @@ public class TPreEmpMainServiceImpl extends ServiceImpl<TPreEmpMainMapper, TPreE
Map<String, String> parentAreaMap = new HashMap<>();
Map<String, Date> startDateMap;
int lineNum = 2;
Date date1;
Date date2;
for (Map<String, String> rowMap : vo.getContentList()) {
curVo = null;
errorMust = new StringBuilder();
......@@ -3497,11 +3504,20 @@ public class TPreEmpMainServiceImpl extends ServiceImpl<TPreEmpMainMapper, TPreE
}
// 身份证起止有效期 都有值 且 截止日期正常
if (Common.isNotNull(detail.getValidityStart())
&& Common.isNotNull(detail.getValidityEnd())
&& !"长期".equals(detail.getValidityEnd())
&& !DateUtil.stringToDate(detail.getValidityEnd(),DateUtil.ISO_EXPANDED_DATE_FORMAT)
.after(DateUtil.stringToDate(detail.getValidityStart(),DateUtil.ISO_EXPANDED_DATE_FORMAT))){
detail.setErrorInfo(EmployeeConstants.EMP_VALIDITY_END_START_DATE);
&& Common.isNotNull(detail.getValidityEnd())){
date1 = DateUtil.stringToDate(detail.getValidityStart(),DateUtil.ISO_EXPANDED_DATE_FORMAT);
date2 = DateUtil.stringToDate(detail.getValidityEnd(),DateUtil.ISO_EXPANDED_DATE_FORMAT);
if (null == date1 || null == date2){
detail.setErrorInfo(EmployeeConstants.EMP_VALIDITY_DATE_ERROR);
}else {
if (!"长期".equals(detail.getValidityEnd())
&& !DateUtil.stringToDate(detail.getValidityEnd(),DateUtil.ISO_EXPANDED_DATE_FORMAT)
.after(DateUtil.stringToDate(detail.getValidityStart(),DateUtil.ISO_EXPANDED_DATE_FORMAT))){
detail.setErrorInfo(EmployeeConstants.EMP_VALIDITY_END_START_DATE);
}
}
}
excelList.add(detail);
}
......
......@@ -516,4 +516,30 @@ public class TSettleDomainServiceImpl extends ServiceImpl<TSettleDomainMapper, T
}
}
}
@Override
public R<Boolean> updateProjectCsInfo(List<TDomainUpCsVo> list) {
TSettleDomain domain;
TSettleDomain tSettleDomainInfo;
try {
for (TDomainUpCsVo vo:list) {
domain = new TSettleDomain();
tSettleDomainInfo = baseMapper.selectOne(Wrappers.<TSettleDomain>query().lambda()
.eq(TSettleDomain::getDepartNo,vo.getDepartNo())
.orderByDesc(BaseEntity::getCreateTime)
.last(CommonConstants.LAST_ONE_SQL));
if (Common.isNotNull(tSettleDomainInfo)){
domain.setCsName(vo.getName());
domain.setCsPhone(vo.getPhone());
domain.setCsLoginName(vo.getLoginName());
domain.setId(tSettleDomainInfo.getId());
baseMapper.updateById(domain);
}
}
}catch (Exception e){
log.error("EKP同步前端客服及手机号码异常",e);
return R.failed("EKP同步前端客服及手机号码异常!");
}
return R.ok(Boolean.TRUE,CommonConstants.RESULT_DATA_SUCESS);
}
}
......@@ -17,6 +17,18 @@ spring:
url: jdbc:mysql://192.168.1.65:43306/mvp_archives?characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&allowMultiQueries=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=Asia/Shanghai&rewriteBatchedStatements=true&nullCatalogMeansCurrent=true&allowPublicKeyRetrieval=true
#url: jdbc:mysql://119.96.147.6:43306/mvp_archives?characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&allowMultiQueries=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=Asia/Shanghai&nullCatalogMeansCurrent=true&allowPublicKeyRetrieval=true
# 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
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
......@@ -26,7 +26,7 @@ mybatis-plus:
logic-not-delete-value: 0
configuration:
map-underscore-to-camel-case: true
# log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
# log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
# spring security 配置
security:
......
......@@ -361,6 +361,7 @@
,e.HIGN_EDUCATION field40
,if(e.FIRST_WORK_FLAG is null,'',if(e.FIRST_WORK_FLAG=0,'是','否')) field43
,if(e.HAVE_QUALIFICATION is null,'',if(e.HAVE_QUALIFICATION=0,'是','否')) field51
,e.BANK_NO field73,e.BANK_NAME field74,e.BANK_PROVINCE field75,e.BANK_CITY field76,e.BANK_SUB_NAME field77,e.TAX_MONTH field78
FROM t_complete_monitor a
left join t_employee_project p on a.DEPT_NO=p.DEPT_NO
left join t_employee_info e on p.EMP_ID=e.id
......
<?xml version="1.0" encoding="UTF-8"?>
<!--
~
~ Copyright (c) 2018-2025, lengleng All rights reserved.
~
~ Redistribution and use in source and binary forms, with or without
~ modification, are permitted provided that the following conditions are met:
~
~ Redistributions of source code must retain the above copyright notice,
~ this list of conditions and the following disclaimer.
~ Redistributions in binary form must reproduce the above copyright
~ notice, this list of conditions and the following disclaimer in the
~ documentation and/or other materials provided with the distribution.
~ Neither the name of the yifu4cloud.com developer nor the names of its
~ contributors may be used to endorse or promote products derived from
~ this software without specific prior written permission.
~ Author: lengleng (wangiegie@gmail.com)
~
-->
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.yifu.cloud.plus.v1.yifu.archives.mapper.TCompleteMonitorSetBaseInfoMapper">
<resultMap id="tCompleteMonitorSetBaseInfoMap" type="com.yifu.cloud.plus.v1.yifu.archives.entity.TCompleteMonitorSetBaseInfo">
<id property="id" column="ID"/>
<result property="baseType" column="BASE_TYPE"/>
<result property="baseNum" column="BASE_NUM"/>
<result property="baseName" column="BASE_NAME"/>
<result property="baseRemark" column="BASE_REMARK"/>
<result property="isMonitor" column="IS_MONITOR"/>
<result property="baseColumn" column="BASE_COLUMN"/>
<result property="baseTable" column="BASE_TABLE"/>
<result property="baseField" column="BASE_FIELD"/>
</resultMap>
<!--获取ids对应的所有的配置字段-->
<select id="getBaseInfoByIds" resultMap="tCompleteMonitorSetBaseInfoMap">
SELECT a.BASE_TABLE,GROUP_CONCAT(a.BASE_COLUMN SEPARATOR '*') BASE_COLUMN
FROM t_complete_monitor_set_base_info a
where a.id in (${ids})
GROUP BY a.BASE_TABLE
</select>
<!-- 获取属性字段 -->
<select id="getIdByType" resultType="java.lang.String">
select s.BASE_ID from t_complete_monitor_set s where s.CONTRACT_TYPE_NAME like concat('%', #{typeName},'%') limit 1
</select>
<!-- 获取属性字段 -->
<select id="getIdByOne" resultType="java.lang.String">
select s.BASE_ID from t_complete_monitor_set s where s.id = '1'
</select>
<!-- 获取属性字段 -->
<select id="getBaseFieldByIdArr" resultType="java.lang.String">
SELECT BASE_FIELD
FROM t_complete_monitor_set_base_info a
where a.id in
<foreach item="idStr" index="index" collection="idArr" open="("
separator="," close=")">
#{idStr}
</foreach>
</select>
</mapper>
<?xml version="1.0" encoding="UTF-8"?>
<!--
~
~ Copyright (c) 2018-2025, lengleng All rights reserved.
~
~ Redistribution and use in source and binary forms, with or without
~ modification, are permitted provided that the following conditions are met:
~
~ Redistributions of source code must retain the above copyright notice,
~ this list of conditions and the following disclaimer.
~ Redistributions in binary form must reproduce the above copyright
~ notice, this list of conditions and the following disclaimer in the
~ documentation and/or other materials provided with the distribution.
~ Neither the name of the yifu4cloud.com developer nor the names of its
~ contributors may be used to endorse or promote products derived from
~ this software without specific prior written permission.
~ Author: lengleng (wangiegie@gmail.com)
~
-->
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.yifu.cloud.plus.v1.yifu.archives.mapper.TCompleteMonitorSetMapper">
<resultMap id="tCompleteMonitorSetMap" type="com.yifu.cloud.plus.v1.yifu.archives.entity.TCompleteMonitorSet">
<id property="id" column="ID"/>
<result property="isMonitor" column="IS_MONITOR"/>
<result property="contractType" column="CONTRACT_TYPE"/>
<result property="contractTypeName" column="CONTRACT_TYPE_NAME"/>
<result property="baseId" column="BASE_ID"/>
<result property="createBy" column="CREATE_BY"/>
<result property="updateBy" column="UPDATE_BY"/>
<result property="updateName" column="UPDATE_NAME"/>
<result property="createName" column="CREATE_NAME"/>
<result property="createTime" column="CREATE_TIME"/>
<result property="updateTime" column="UPDATE_TIME"/>
</resultMap>
<sql id="Base_Column_List">
a.ID,
a.IS_MONITOR,
a.CONTRACT_TYPE,
a.CONTRACT_TYPE_NAME,
a.BASE_ID,
a.CREATE_BY,
a.UPDATE_BY,
a.CREATE_NAME,
a.CREATE_TIME,
a.UPDATE_TIME,
a.UPDATE_NAME
</sql>
<sql id="tCompleteMonitorSet_where">
<if test="tCompleteMonitorSet != null">
<if test="tCompleteMonitorSet.id != null and tCompleteMonitorSet.id.trim() != ''">
AND a.ID = #{tCompleteMonitorSet.id}
</if>
<if test="tCompleteMonitorSet.isMonitor != null and tCompleteMonitorSet.isMonitor.trim() != ''">
AND a.IS_MONITOR = #{tCompleteMonitorSet.isMonitor}
</if>
<if test="tCompleteMonitorSet.contractType != null and tCompleteMonitorSet.contractType.trim() != ''">
AND a.CONTRACT_TYPE = #{tCompleteMonitorSet.contractType}
</if>
<if test="tCompleteMonitorSet.contractTypeArray != null and tCompleteMonitorSet.contractTypeArray.length > 0">
AND
<foreach item="idStr" index="index" collection="tCompleteMonitorSet.contractTypeArray" open="("
separator=" or " close=")">
a.CONTRACT_TYPE_NAME like concat('%',#{idStr},'%')
</foreach>
</if>
<if test="tCompleteMonitorSet.baseId != null and tCompleteMonitorSet.baseId.trim() != ''">
AND a.BASE_ID = #{tCompleteMonitorSet.baseId}
</if>
<if test="tCompleteMonitorSet.createBy != null and tCompleteMonitorSet.createBy.trim() != ''">
AND a.CREATE_BY = #{tCompleteMonitorSet.createBy}
</if>
<if test="tCompleteMonitorSet.updateBy != null and tCompleteMonitorSet.updateBy.trim() != ''">
AND a.UPDATE_BY = #{tCompleteMonitorSet.updateBy}
</if>
<if test="tCompleteMonitorSet.createName != null and tCompleteMonitorSet.createName.trim() != ''">
AND a.CREATE_NAME = #{tCompleteMonitorSet.createName}
</if>
<if test="tCompleteMonitorSet.updateName != null and tCompleteMonitorSet.updateName.trim() != ''">
AND a.UPDATE_NAME = #{tCompleteMonitorSet.updateName}
</if>
<if test="tCompleteMonitorSet.createTime != null">
AND a.CREATE_TIME = #{tCompleteMonitorSet.createTime}
</if>
<if test="tCompleteMonitorSet.updateTime != null">
AND a.UPDATE_TIME = #{tCompleteMonitorSet.updateTime}
</if>
</if>
</sql>
<!--tCompleteMonitorSet简单分页查询-->
<select id="getTCompleteMonitorSetPage" resultMap="tCompleteMonitorSetMap">
SELECT
<include refid="Base_Column_List"/>
FROM t_complete_monitor_set a
<where>
1=1
<include refid="tCompleteMonitorSet_where"/>
</where>
</select>
<!-- 获取所有基础配置 -->
<select id="getAllList" resultMap="tCompleteMonitorSetMap">
SELECT
<include refid="Base_Column_List"/>
FROM t_complete_monitor_set a
</select>
<!-- 获取已配置的合同类型,前端使用 -->
<select id="getAllUseContractType" resultType="java.lang.String">
SELECT
GROUP_CONCAT(CONTRACT_TYPE)
FROM t_complete_monitor_set a
where a.id != '1'
<if test="oldId != null and oldId.trim() != ''">
AND a.ID != #{oldId}
</if>
limit 1
</select>
</mapper>
<?xml version="1.0" encoding="UTF-8"?>
<!--
~
~ Copyright (c) 2018-2025, lengleng All rights reserved.
~
~ Redistribution and use in source and binary forms, with or without
~ modification, are permitted provided that the following conditions are met:
~
~ Redistributions of source code must retain the above copyright notice,
~ this list of conditions and the following disclaimer.
~ Redistributions in binary form must reproduce the above copyright
~ notice, this list of conditions and the following disclaimer in the
~ documentation and/or other materials provided with the distribution.
~ Neither the name of the yifu4cloud.com developer nor the names of its
~ contributors may be used to endorse or promote products derived from
~ this software without specific prior written permission.
~ Author: lengleng (wangiegie@gmail.com)
~
-->
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.yifu.cloud.plus.v1.yifu.archives.mapper.TEmployeeProjectBelongDeptMapper">
<resultMap id="tEmployeeProjectBelongDeptMap"
type="com.yifu.cloud.plus.v1.yifu.archives.entity.TEmployeeProjectBelongDept">
<id property="id" column="ID"/>
<result property="empDeptname" column="emp_deptname"/>
<result property="empDeptid" column="emp_deptid"/>
</resultMap>
<sql id="tEmployeeProjectBelongDept_where">
/* 派单审核通过,或其他路径 */
and ((a.PROJECT_SOURCE = '1' and a.STATUS = 1) or a.PROJECT_SOURCE != '1')
<if test="tEmployeeProjectBelongDept != null">
<if test="tEmployeeProjectBelongDept.deptId != null and tEmployeeProjectBelongDept.deptId.trim() != ''">
AND a.DEPT_ID = #{tEmployeeProjectBelongDept.deptId}
</if>
<if test="tEmployeeProjectBelongDept.empDeptId != null and tEmployeeProjectBelongDept.empDeptId.trim() != ''">
<if test="tEmployeeProjectBelongDept.empDeptId.trim() == '-1'">
/* 查询未关联的 */
AND b.id is null
</if>
<if test="tEmployeeProjectBelongDept.empDeptId.trim() == '不查数据'">
/* 不查数据 */
AND b.id = '不查数据'
</if>
</if>
<if test="tEmployeeProjectBelongDept.empName != null and tEmployeeProjectBelongDept.empName.trim() != ''">
AND a.EMP_NAME like concat('%',#{tEmployeeProjectBelongDept.empName},'%')
</if>
<if test="tEmployeeProjectBelongDept.empIdcard != null and tEmployeeProjectBelongDept.empIdcard.trim() != ''">
AND a.EMP_IDCARD like concat('%',#{tEmployeeProjectBelongDept.empIdcard},'%')
</if>
<if test="tEmployeeProjectBelongDept.empPhone != null and tEmployeeProjectBelongDept.empPhone.trim() != ''">
AND e.EMP_PHONE like concat('%',#{tEmployeeProjectBelongDept.empPhone},'%')
</if>
<if test="tEmployeeProjectBelongDept.ids != null and tEmployeeProjectBelongDept.ids.size() > 0">
a.ID in
<foreach collection="tEmployeeProjectBelongDept.ids" item="param" index="index" open="(" close=")"
separator=",">
#{param}
</foreach>
</if>
<if test="tEmployeeProjectBelongDept.empDeptIdArray != null and tEmployeeProjectBelongDept.empDeptIdArray.length > 0">
AND b.emp_deptid in
<foreach item="idStr" index="index" collection="tEmployeeProjectBelongDept.empDeptIdArray" open="("
separator="," close=")">
#{idStr}
</foreach>
</if>
<if test="tEmployeeProjectBelongDept.contractStatusArray != null and tEmployeeProjectBelongDept.contractStatusArray.length > 0">
AND a.CONTRACT_STATUS in
<foreach item="idStr" index="index" collection="tEmployeeProjectBelongDept.contractStatusArray" open="("
separator="," close=")">
#{idStr}
</foreach>
</if>
<if test="tEmployeeProjectBelongDept.insuranceStatusArray != null and tEmployeeProjectBelongDept.insuranceStatusArray.length > 0">
AND a.INSURANCE_STATUS in
<foreach item="idStr" index="index" collection="tEmployeeProjectBelongDept.insuranceStatusArray"
open="("
separator="," close=")">
#{idStr}
</foreach>
</if>
<if test="tEmployeeProjectBelongDept.projectStatusArray != null and tEmployeeProjectBelongDept.projectStatusArray.length > 0">
AND a.PROJECT_STATUS in
<foreach item="idStr" index="index" collection="tEmployeeProjectBelongDept.projectStatusArray" open="("
separator="," close=")">
#{idStr}
</foreach>
</if>
<if test="tEmployeeProjectBelongDept.postArray != null and tEmployeeProjectBelongDept.postArray.length > 0">
AND a.POST in
<foreach item="idStr" index="index" collection="tEmployeeProjectBelongDept.postArray" open="("
separator="," close=")">
#{idStr}
</foreach>
</if>
<if test="tEmployeeProjectBelongDept.enjoinDateAndLeaveTimeStart != null">
and if(a.PROJECT_STATUS=0,a.ENJOIN_DATE,a.LEAVE_TIME) <![CDATA[ >= ]]>
#{tEmployeeProjectBelongDept.enjoinDateAndLeaveTimeStart}
</if>
<if test="tEmployeeProjectBelongDept.enjoinDateAndLeaveTimeEnd != null">
and if(a.PROJECT_STATUS=0,a.ENJOIN_DATE,a.LEAVE_TIME) <![CDATA[ <= ]]>
#{tEmployeeProjectBelongDept.enjoinDateAndLeaveTimeEnd}
</if>
</if>
</sql>
<!--tEmployeeProjectBelongDept简单分页查询-->
<select id="getTEmployeeProjectBelongDeptPage"
resultType="com.yifu.cloud.plus.v1.yifu.archives.vo.EmployeeProjectScpVO">
select
a.EMP_NAME empName
,a.EMP_IDCARD empIdcard
,e.EMP_PHONE empPhone
,b.emp_deptname empDeptname
,a.POST post
,if(a.PROJECT_STATUS=0,'在职','离职') projectStatus
,if(a.PROJECT_STATUS=0,DATE_FORMAT(a.ENJOIN_DATE,'%Y-%m-%d'),DATE_FORMAT(a.LEAVE_TIME,'%Y-%m-%d')) enjoinDateAndLeaveTime
,a.CONTRACT_STATUS contractStatus
,a.INSURANCE_STATUS insuranceStatus
from t_employee_project a
LEFT JOIN t_employee_info e on a.emp_id=e.id
LEFT JOIN t_employee_project_belong_dept b on a.id=b.id
<where>
a.DELETE_FLAG ='0'
<include refid="tEmployeeProjectBelongDept_where"/>
</where>
</select>
<!-- 导出的条数 -->
<select id="getTEmployeeProjectBelongDeptCount" resultType="java.lang.Integer">
select
count(1)
from t_employee_project a
LEFT JOIN t_employee_info e on a.emp_id=e.id
LEFT JOIN t_employee_project_belong_dept b on a.id=b.id
<where>
a.DELETE_FLAG ='0'
<include refid="tEmployeeProjectBelongDept_where"/>
</where>
</select>
<!-- 导出的数据 -->
<select id="getTEmployeeProjectBelongDeptList"
resultType="com.yifu.cloud.plus.v1.yifu.archives.vo.EmployeeProjectScpVO">
select
a.EMP_NAME empName
,a.EMP_IDCARD empIdcard
,e.EMP_PHONE empPhone
,b.emp_deptname empDeptname
,a.POST post
,if(a.PROJECT_STATUS=0,'在职','离职') projectStatus
,if(a.PROJECT_STATUS=0,DATE_FORMAT(a.ENJOIN_DATE,'%Y-%m-%d'),DATE_FORMAT(a.LEAVE_TIME,'%Y-%m-%d'))
enjoinDateAndLeaveTime
,a.CONTRACT_STATUS contractStatus
,a.INSURANCE_STATUS insuranceStatus
from t_employee_project a
LEFT JOIN t_employee_info e on a.emp_id=e.id
LEFT JOIN t_employee_project_belong_dept b on a.id=b.id
<where>
a.DELETE_FLAG ='0'
<include refid="tEmployeeProjectBelongDept_where"/>
</where>
<if test="tEmployeeProjectBelongDept != null">
<if test="tEmployeeProjectBelongDept.limitStart != null">
limit #{tEmployeeProjectBelongDept.limitStart},#{tEmployeeProjectBelongDept.limitEnd}
</if>
</if>
</select>
<!-- 获取部门下花名册总数 -->
<select id="getDeptCount" resultType="java.lang.Integer">
select count(1)
from t_employee_project_belong_dept b
LEFT JOIN t_employee_project a on b.id = a.id
<where>
a.DELETE_FLAG ='0' and ((a.PROJECT_SOURCE = '1' and a.STATUS = 1) or a.PROJECT_SOURCE != '1')
<if test="tEmployeeProjectBelongDept.deptId != null and tEmployeeProjectBelongDept.deptId.trim() != ''">
AND a.DEPT_ID = #{tEmployeeProjectBelongDept.deptId}
</if>
<if test="tEmployeeProjectBelongDept.empDeptId != null and tEmployeeProjectBelongDept.empDeptId.trim() != ''">
AND b.emp_deptid = #{tEmployeeProjectBelongDept.empDeptId}
</if>
</where>
</select>
<!-- 根据权限获取对应部门ID下的花名册总数Map -->
<select id="getDeptCountMap" resultType="com.yifu.cloud.plus.v1.yifu.archives.vo.TEmployeeProjectBelongDeptSearchVo">
select emp_deptid as empDeptId, count(emp_deptid) as empNum
from t_employee_project_belong_dept b
LEFT JOIN t_employee_project a on b.id = a.id
<where>
a.DELETE_FLAG ='0' and ((a.PROJECT_SOURCE = '1' and a.STATUS = 1) or a.PROJECT_SOURCE != '1')
<if test="deptId != null and deptId.trim() != ''">
AND a.DEPT_ID = #{deptId}
</if>
<if test="departIdSet != null and departIdSet.size > 0">
AND b.emp_deptid in
<foreach item="idStr" index="index" collection="departIdSet" open="(" separator=","
close=")">
#{idStr}
</foreach>
</if>
</where>
group by emp_deptid
</select>
<!-- 没有关联部门的花名册总数 -->
<select id="getNoneDeptCount" resultType="java.lang.Integer">
select count(1)
from t_employee_project a
LEFT JOIN t_employee_project_belong_dept b on a.id=b.id
<where>
a.DELETE_FLAG ='0' and ((a.PROJECT_SOURCE = '1' and a.STATUS = 1) or a.PROJECT_SOURCE != '1') and b.id is null
<if test="tEmployeeProjectBelongDept.deptId != null and tEmployeeProjectBelongDept.deptId.trim() != ''">
AND a.DEPT_ID = #{tEmployeeProjectBelongDept.deptId}
</if>
</where>
</select>
</mapper>
......@@ -811,6 +811,13 @@
</if>
</foreach>
</trim>
<trim prefix="LEAVE_USER =case" suffix="end,">
<foreach collection="list" item="i" index="index">
<if test="i.leaveUser!=null">
when ID=#{i.id} then #{i.leaveUser}
</if>
</foreach>
</trim>
<trim prefix="LEAVE_REMARK =case" suffix="end,">
<foreach collection="list" item="i" index="index">
<if test="i.leaveRemark!=null">
......@@ -869,6 +876,23 @@
order by a.CREATE_TIME desc
</select>
<!--tEmployeeInfo简单分页查询-->
<select id="getProjectByDetpNo" resultMap="tEmployeeProjectMap">
SELECT
a.ID,
a.EMP_NAME,
a.EMP_IDCARD,
b.EMP_PHONE
FROM t_employee_project a left join t_employee_info b on a.EMP_ID = b.id
where
a.DELETE_FLAG = '0' and a.DEPT_NO = #{tEmployeeProject.deptNo}
and ((a.PROJECT_SOURCE = '1' and a.STATUS = 1) or a.PROJECT_SOURCE != '1')
<if test="tEmployeeProject.empIdcard != null and tEmployeeProject.empIdcard.trim() != ''">
AND (a.EMP_IDCARD like concat('%',#{tEmployeeProject.empIdcard},'%') or a.EMP_NAME like concat('%',#{tEmployeeProject.empIdcard}))
</if>
order by a.CREATE_TIME desc
</select>
<!--tEmployeeInfo导出查询改造 fxj 2022-11-03-->
<select id="noPageDiy" resultMap="tEmployeeProjectExportMap">
SELECT
......@@ -1132,4 +1156,74 @@
#{item}
</foreach>
</update>
<!-- 批量刷新项目档案的是否完整状态 -->
<update id="batchUpdateEmpProjectCompleteStatusByType">
update
t_employee_project a LEFT JOIN t_employee_info e on a.emp_id=e.id
set a.IS_COMPLETE = '0'
where a.CONTRACT_TYPE = #{contractType}
and a.IS_COMPLETE = '1' and a.DELETE_FLAG ='0' and a.EMP_NATRUE != '2' and a.PROJECT_STATUS = 0
and e.EMP_PHONE is not null
and a.CONTRACT_TYPE != ''
and e.EMP_SEX is not null
and e.EMP_BIRTHDAY is not null
<if test="deptNo != null and deptNo.trim() != ''">
and a.DEPT_NO = #{deptNo}
</if>
</update>
<!-- 员工类型为代理的,默认完整 -->
<update id="updateTrueCompleteByAgent">
update t_employee_project a set a.IS_COMPLETE = '0' where a.EMP_NATRUE = '2' and a.IS_COMPLETE = '1'
</update>
<!-- 基础信息完整,有可能完整的 -->
<select id="getNeedJudgeCompleteType" resultType="java.lang.String" >
select
a.CONTRACT_TYPE
from t_employee_project a
LEFT JOIN t_employee_info e on a.emp_id=e.id
where a.IS_COMPLETE = '1' and a.DELETE_FLAG ='0' and a.EMP_NATRUE != '2' and a.PROJECT_STATUS = 0
and e.EMP_PHONE is not null
and a.CONTRACT_TYPE != ''
and e.EMP_SEX is not null
and e.EMP_BIRTHDAY is not null
<if test="deptNo != null and deptNo.trim() != ''">
and a.DEPT_NO = #{deptNo}
</if>
group by a.CONTRACT_TYPE
</select>
<!-- 基础信息完整,有可能完整的 -->
<select id="getNeedNextJudgeCompleteByColumnAndEmpProjectId" resultType="java.lang.String" >
select
a.id
from t_employee_project a
LEFT JOIN t_employee_info e on a.emp_id=e.id
<if test="tableInfo != null and tableInfo.trim() != ''">
LEFT JOIN ${tableInfo}
</if>
where a.IS_COMPLETE = '1' and a.DELETE_FLAG ='0' and a.EMP_NATRUE != '2' and a.PROJECT_STATUS = 0
and e.EMP_PHONE is not null
and a.CONTRACT_TYPE != ''
and e.EMP_SEX is not null
and e.EMP_BIRTHDAY is not null
<if test="type != null and type.trim() != ''">
and a.CONTRACT_TYPE = #{type}
</if>
<if test="deptNo != null and deptNo.trim() != ''">
and a.DEPT_NO = #{deptNo}
</if>
<if test="columnInfo != null and columnInfo.trim() != ''">
and (${columnInfo}) = 1
</if>
<if test="empProjectIdList != null and empProjectIdList.size > 0">
AND a.ID in
<foreach item="items" index="index" collection="empProjectIdList" open="(" separator="," close=")">
#{items}
</foreach>
</if>
group by a.id
</select>
</mapper>
......@@ -101,6 +101,10 @@
<result property="division" column="DIVISION"/>
<result property="issueStatus" column="ISSUE_STATUS"/>
<result property="csName" column="cs_name"/>
<result property="csPhone" column="cs_phone"/>
<result property="csLoginName" column="cs_login_name"/>
</resultMap>
<resultMap id="tSettleDomainTwoMap" type="com.yifu.cloud.plus.v1.yifu.archives.vo.SecondBelongVo">
......@@ -187,7 +191,10 @@
a.LINE_TYPE,
a.HAS_CONTAIN_RISKS,
a.NEW_LINE,
a.DIVISION
a.DIVISION,
a.cs_name,
a.cs_phone,
a.cs_login_name
</sql>
<resultMap id="tSettleDomainSelectVoMap" type="com.yifu.cloud.plus.v1.yifu.archives.vo.TSettleDomainSelectVo">
......@@ -223,6 +230,10 @@
<result property="hasContainRisks" column="HAS_CONTAIN_RISKS"/>
<result property="newLine" column="NEW_LINE"/>
<result property="division" column="DIVISION"/>
<result property="csName" column="cs_name"/>
<result property="csPhone" column="cs_phone"/>
<result property="csLoginName" column="cs_login_name"/>
</resultMap>
<select id="getPage" resultMap="tSettleDomainMap">
......@@ -420,7 +431,10 @@
a.LINE_TYPE,
if(a.HAS_CONTAIN_RISKS = '是','0',if(a.HAS_CONTAIN_RISKS = '否','1','')) HAS_CONTAIN_RISKS,
a.NEW_LINE,
a.DIVISION
a.DIVISION,
a.cs_name,
a.cs_phone,
a.cs_login_name
FROM
t_settle_domain a
<if test="userId != null and userId.trim() != '-999'">
......
......@@ -117,7 +117,7 @@ public class YifuTokenEndpoint {
CommonConstants.STATUS_NORMAL.equals(user.getLockFlag()),
user.getUserGroup(),authorities, user.getLdapDn(),
info.getClientRoleMap(),info.getSettleIdList(),
user.getType());
user.getType(),info.getCspPermMap());
thisUser.setClientRoleMap(info.getClientRoleMap());
return thisUser;
}
......
......@@ -5,6 +5,8 @@ import cn.hutool.core.util.CharsetUtil;
import cn.hutool.http.HttpStatus;
import com.alibaba.fastjson.JSONObject;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.SerializationFeature;
import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
import com.yifu.cloud.plus.v1.yifu.auth.constants.SecurityConstants;
import com.yifu.cloud.plus.v1.yifu.common.core.constant.CommonConstants;
import com.yifu.cloud.plus.v1.yifu.common.core.util.Common;
......
......@@ -597,7 +597,7 @@ public class TCheckIdCardServiceImpl extends ServiceImpl<TCheckIdCardMapper, TCh
true,
"1", authorities, "1",
null, null,
null);
null,null);
// 调用以前的批量校验
R<List<TCheckIdCard>> returnR = this.checkSalaryIdCard(list, user);
if (returnR != null) {
......
......@@ -209,6 +209,11 @@ public interface CacheConstants {
public static final String WX_JSAPI_TICKET = "WX_JSAPI_TICKET";
// 商险不购买审批流分布式锁key InsuranceUnpurchase
// 商险不购买审批流分布式锁key
public static final String INSURANCEUNPURCHASE_PROCESS_CACHE = ServiceNameConstants.SERVICE_NAME_MVP + "_" + "ProcessCache:InsuranceUnpurchase";
/**
* 项目下用户部门及权限缓存
*/
String PROJECT_USER_PERMISSION = "mvp_project_user_permission:";
}
......@@ -15,4 +15,9 @@ public interface ClientNameConstants {
* MVP
*/
String CLIENT_B = "hrCustomer";
/**
* csp
*/
String CLIENT_CSP = "yifu-csp";
}
......@@ -634,6 +634,8 @@ public interface CommonConstants {
List<String> socialStatus = Stream.of("3","4","6","7","9","11","12").collect(Collectors.toList());
List<String> processStatus = Stream.of("0","1").collect(Collectors.toList());
List<String> socialInfoStatus = Stream.of("1","3","5","7").collect(Collectors.toList());
List<String> deptList = Stream.of("安徽一册档案管理有限公司","安徽顾合企业管理咨询有限公司","安徽赤道线数字传媒科技有限公司","劳务业务中心","易服智享&研究院").collect(Collectors.toList());
......
......@@ -17,6 +17,7 @@ import java.io.InputStream;
import java.io.Serializable;
import java.lang.reflect.Field;
import java.text.DecimalFormat;
import java.time.LocalDateTime;
import java.util.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
......@@ -771,6 +772,9 @@ public class DiyExcelImportUtil implements Serializable {
setStringField(field, cellValueStr, entity);
} else if (Date.class == fieldType && Common.isNotNull(cellValueStr.trim())) {
setDateField(field, cellValueStr, entity);
} else if (LocalDateTime.class == fieldType && Common.isNotNull(cellValueStr.trim())) {
// 1.9.7: 加时间格式转化
setDateTimeField(field, cellValueStr, entity);
} else if ((Integer.TYPE == fieldType) || (Integer.class == fieldType)) {
setIntegerField(field, cellValueStr, entity);
} else {
......@@ -784,6 +788,9 @@ public class DiyExcelImportUtil implements Serializable {
field.set(entity, cellValueStr);
} else if (Date.class == fieldType && Common.isNotNull(cellValueStr.trim())) {
setDateField(field, cellValueStr, entity);
} else if (LocalDateTime.class == fieldType && Common.isNotNull(cellValueStr.trim())) {
// 1.9.7: 加时间格式转化
setDateTimeField(field, cellValueStr, entity);
} else if ((Integer.TYPE == fieldType) || (Integer.class == fieldType)) {
setIntegerField(field, cellValueStr, entity);
} else {
......@@ -817,6 +824,17 @@ public class DiyExcelImportUtil implements Serializable {
field.set(entity, DateUtil.stringDateFormat(cellValueStr.trim(), patten));
}
public static <T> void setDateTimeField(Field field, String cellValueStr, T entity) throws IllegalAccessException {
String patten = DateUtil.ISO_DATE_FORMAT;
if (cellValueStr.contains("-")) {
patten = DateUtil.ISO_EXPANDED_DATE_FORMAT;
} else if (cellValueStr.contains("/")) {
patten = DateUtil.DATETIME_PATTERN_XIEGANG;
}
String pattenTime = patten+" 00:00:00";
field.set(entity, LocalDateTimeUtils.formatTime(cellValueStr.trim(), pattenTime));
}
public static <T> void setIntegerField(Field field, String cellValueStr, T entity) throws IllegalAccessException {
if ("否".equals(cellValueStr)) {
field.set(entity, 0);
......
......@@ -44,6 +44,9 @@ public class IdCardUtil {
Calendar cal = Calendar.getInstance();
// 把出生日期放入Calendar类型的bir对象中,进行Calendar和Date类型进行转换
Calendar bir = Calendar.getInstance();
if (null == birthday) {
return 1;
}
bir.setTime(birthday);
// 如果生日大于当前日期,则抛出异常:出生日期不能大于当前日期
if (cal.before(birthday)) {
......
package com.yifu.cloud.plus.v1.yifu.common.core.vo;
import lombok.Data;
import java.io.Serializable;
import java.util.Map;
import java.util.Set;
/**
* 项目下用户数据权限封装类
* @author chenyuxi
* @date 2025/2/24
* @since 1.9.7
*/
@Data
public class UserPermissionVo implements Serializable {
/**
* 全部权限(默认不是)
*/
private boolean haveAll = false;
/**
* 部门ID集合
*/
private Set<String> departIdSet;
/**
* 账号类型:0 管理员, 1 普通成员
*/
private String userType;
/**
* 用户ID
*/
private String userId;
/**
* 关联项目编码 fxj 2025-02-25
*/
private String projectNo;
/**
* 关联项目名称 fxj 2025-02-25
*/
private String projectName;
/**
* 关联项目ID fxj 2025-02-25
*/
private String projectId;
}
......@@ -92,9 +92,18 @@ public class YifuUser extends User {
@Getter
@Setter
private List<String> settleIdList;
/**
* @Author fxj
* @Description 客户服务平台 项目权限及项目对应的数据权限
* @Date 14:48 2025/2/25
**/
@Getter
@Setter
private List<UserPermissionVo> cspPermMap;
/**
* @Author fxj
* @Description 员工类型
* @Description 员工类型 0 系统用户 1 LDAP用户 2 B端用户 3.微信用户 默认系统用户 4.甲方客户端
**/
@Getter
private String type;
......@@ -104,7 +113,8 @@ public class YifuUser extends User {
boolean credentialsNonExpired, boolean accountNonLocked,
String userGroup, Collection<? extends GrantedAuthority> authorities, String ldapDn,
Map<String, List<Long>> clientRoleMap,
List<String> settleIdList,String type) {
List<String> settleIdList,String type,
List<UserPermissionVo> cspPermMap) {
super(username, password, enabled, accountNonExpired, credentialsNonExpired, accountNonLocked, authorities);
this.id = id;
this.deptId = deptId;
......@@ -117,5 +127,6 @@ public class YifuUser extends User {
this.clientRoleMap=clientRoleMap;
this.settleIdList=settleIdList;
this.type=type;
this.cspPermMap=cspPermMap;
}
}
package com.yifu.cloud.plus.v1.yifu.common.dapr.config;
import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.PropertySource;
import org.springframework.stereotype.Component;
/**
* @Author fxj
* @Description 客户服务平台 dapr 配置
* @Date 11:55 2025/2/25
* @Param
* @return
**/
@Data
@Component
@PropertySource("classpath:daprConfig.properties")
@ConfigurationProperties(value = "dapr.csp", ignoreInvalidFields = false)
public class DaprCspProperties {
/*
* @author fxj
* @date 14:34
* @Description dapr sidercar url 如:http://localhost:3005/v1.0/invoke/
**/
String appUrl;
/*
* @author fxj
* @date 14:35
* @decription app_id 如:"yifu_upms_sider"
**/
String appId;
String appPort;
String httpPort;
String grpcPort;
String metricsPort;
}
......@@ -2,6 +2,7 @@ package com.yifu.cloud.plus.v1.yifu.common.dapr.util;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.TypeReference;
import com.yifu.cloud.plus.v1.yifu.admin.api.vo.SysCspDeptVo;
import com.yifu.cloud.plus.v1.yifu.archives.entity.TBusinessEmployeeExtendInfo;
import com.yifu.cloud.plus.v1.yifu.archives.entity.TEmployeeContractInfo;
import com.yifu.cloud.plus.v1.yifu.archives.entity.TEmployeeInfo;
......@@ -518,4 +519,15 @@ public class ArchivesDaprUtil {
public R<Boolean> selectExitEmpProject(TInsuranceUnpurchasePersonCardVo cardVo) {
return HttpDaprUtil.invokeMethodPost(daprArchivesProperties.getAppUrl(),daprArchivesProperties.getAppId(),"/temployeeproject/inner/selectExitEmpProject", JSON.toJSONString(cardVo), Boolean.class, SecurityConstants.FROM_IN);
}
/**
* @Author huyc
* @Description 新增或者删除项目档案与所属部门的关联表
* @Date 17:07 2025/3/10
* @Param
* @return
**/
public R<Boolean> saveOrDeleteDeptRelation(SysCspDeptVo vo) {
return HttpDaprUtil.invokeMethodPost(daprArchivesProperties.getAppUrl(),daprArchivesProperties.getAppId(),"/temployeeprojectbelongdept/inner/saveOrDeleteDeptRelation", JSON.toJSONString(vo), Boolean.class, SecurityConstants.FROM_IN);
}
}
package com.yifu.cloud.plus.v1.yifu.common.dapr.util;
import com.alibaba.fastjson.JSON;
import com.yifu.cloud.plus.v1.ekp.vo.EkpIncomePushInfoVo;
import com.yifu.cloud.plus.v1.ekp.vo.EkpSocialPushInfoVo;
import com.yifu.cloud.plus.v1.yifu.common.core.constant.SecurityConstants;
import com.yifu.cloud.plus.v1.yifu.common.core.util.R;
import com.yifu.cloud.plus.v1.yifu.common.dapr.config.DaprCspProperties;
import com.yifu.cloud.plus.v1.yifu.common.dapr.config.DaprEkpProperties;
import com.yifu.cloud.plus.v1.yifu.ekp.vo.*;
import lombok.extern.log4j.Log4j2;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import java.util.List;
/**
* @Author fxj
* @Description 客户服务平台 服务间调用工具类
* @Date 11:57 2025/2/25
* @Param
* @return
**/
@Log4j2
@EnableConfigurationProperties(DaprCspProperties.class)
public class CspDaprUtils {
@Autowired
private DaprEkpProperties daprProperties;
}
package com.yifu.cloud.plus.v1.yifu.common.dapr.util;
import com.alibaba.fastjson.JSON;
import com.yifu.cloud.plus.v1.yifu.admin.api.entity.SysUser;
import com.yifu.cloud.plus.v1.yifu.admin.api.vo.*;
import com.yifu.cloud.plus.v1.yifu.common.core.constant.SecurityConstants;
......@@ -129,4 +130,15 @@ public class UpmsDaprUtils {
public R<Boolean> selectExitDeptCompany(String deptId) {
return HttpDaprUtil.invokeMethodPost(daprUpmsProperties.getAppUrl(),daprUpmsProperties.getAppId(),"/user/inner/selectExitDeptCompany", deptId, Boolean.class, SecurityConstants.FROM_IN);
}
/**
* @Author huyc
* @Description 判断部门是否属于分公司
* @Date 10:38 2025/1/20
* @Param
* @return
**/
public R<SysCspDeptVo> selectCspDeptByUserDeptId(SysCspDeptVo vo) {
return HttpDaprUtil.invokeMethodPost(daprUpmsProperties.getAppUrl(),daprUpmsProperties.getAppId(),"/user/inner/selectInnerCspDeptByUserDeptId", vo, SysCspDeptVo.class, SecurityConstants.FROM_IN);
}
}
......@@ -38,3 +38,7 @@ dapr.ekp.appId=yifu-ekp
dapr.process.appUrl=http://127.0.0.1:3500/v1.0/invoke/
dapr.process.appId=yifu-process
#\u751F\u4EA7\u5BA2\u6237\u670D\u52A1\u5E73\u53F0
dapr.csp.appUrl=http://127.0.0.1:3500/v1.0/invoke/
dapr.csp.appId=yifu-csp
\ No newline at end of file
......@@ -94,6 +94,6 @@ public class WxUserDetailService implements UserDetailsService {
user.getPhone(), true, true, true,
StrUtil.equals(user.getLockFlag(), CommonConstants.STATUS_NORMAL),
user.getUserGroup(),authorities, user.getLdapDn(),info.getClientRoleMap(),
info.getSettleIdList(),user.getType());
info.getSettleIdList(),user.getType(),null);
}
}
......@@ -72,7 +72,7 @@ public interface YifuUserDetailsService extends UserDetailsService, Ordered {
user.getPhone(), true, true, true,
StrUtil.equals(user.getLockFlag(), CommonConstants.STATUS_NORMAL),
user.getUserGroup(),authorities, user.getLdapDn(),info.getClientRoleMap(),
info.getSettleIdList(),user.getType());
info.getSettleIdList(),user.getType(),info.getCspPermMap());
}
/**
......
# 忽略匹配下列规则的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-csp</artifactId>
<description>客户服务平台</description>
<packaging>pom</packaging>
<!--项目子模块-->
<modules>
<module>yifu-csp-api</module>
<module>yifu-csp-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-csp-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>
<!--mybatis 依赖-->
<dependency>
<groupId>com.yifu.cloud.plus.v1</groupId>
<artifactId>yifu-common-mybatis</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
</dependency>
</dependencies>
</project>
package com.yifu.cloud.plus.v1.csp.constants;
/**
* @author licancan
* @description 商险常量
* @date 2022-07-18 17:52:59
*/
public class RegistConstants {
public static final String IMPORT_EXIT_CHECK = "模板中已存在该员工的登记信息";
public static final String NO_DATA_TO_HANDLE = "未找到对应未处理状态的数据!";
public static final String IDCARD_FORMAT_ERROR = "身份证格式错误!";
public static final String PHONE_FORMAT_ERROR = "手机号格式错误!";
public static final String REGIST_SAME_CHECK = "该人员入职/离职数据已登记,请勿重复操作";
public static final String EMP_PROJECT_EXIT_CHECK = "未找到该人员对应的在项信息!";
public static final String CONFIRM_SUBMIT = "确认接收";
public static final String BEFORE_IN_PROJECT = "入职登记前已增员";
public static final String BEFORE_OUT_PROJECT = "离职登记前已减员";
public static final String MESSAGE_REGIST = "信息登记";
public static final String MESSAGE_FINISH = "已处理";
}
FROM moxm/java:1.8-full
RUN mkdir -p /yifu-csp-biz
WORKDIR yifu-csp-biz
ARG JAR_FILE=target/yifu-csp-biz.jar
COPY ${JAR_FILE} app.jar
EXPOSE 5077
ENV TZ=Asia/Shanghai JAVA_OPTS="-Xms128m -Xmx256m -Djava.security.egd=file:/dev/./urandom"
CMD sleep 60; java -jar app.jar $JAVA_OPTS
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
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