Commit d4e16df3 by 邓实川

冲突解决

parents 27567a09 7f7bf226
This source diff could not be displayed because it is too large. You can view the blob instead.
package cn.timer.api.aspect;
import java.lang.reflect.Method;
import java.util.List;
import javax.annotation.Resource;
import javax.servlet.http.HttpSession;
import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.Signature;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.aspectj.lang.annotation.Pointcut;
import org.aspectj.lang.reflect.MethodSignature;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.ListUtil;
import cn.hutool.core.lang.Console;
import cn.timer.api.aspect.lang.annotation.BindingResultCtrol;
import cn.timer.api.aspect.lang.annotation.Role;
import cn.timer.api.bean.qyzx.QyzxEmpEntAsso;
import cn.timer.api.bean.qyzx.QyzxEmpLogin;
import cn.timer.api.config.enums.SysRoleType;
import cn.timer.api.dao.qyzx.QyzxEmpEntAssoMapper;
import cn.timer.api.utils.ResultUtil;
/**
* 角色权限 处理
*
* @author Tang
*/
@Aspect
@Component
public class RoleAspect {
// private static final Logger log = LoggerFactory.getLogger(RoleAspect.class);
@Autowired
private QyzxEmpEntAssoMapper qyzxEmpEntAssoMapper;
@Resource
private HttpSession session;
// 配置织入点
@Pointcut("@annotation(cn.timer.api.aspect.lang.annotation.Role)")
public void RolePointCut() {
}
@Around("RolePointCut()")
public Object doAround(ProceedingJoinPoint joinPoint) throws Throwable {
Object retVal;
// 获得注解
Role role = getAnnotationLog(joinPoint);
String httpMethodName = role.httpMethod().name();
List<Integer> sysRoleType = ListUtil.toList();
for (SysRoleType t : role.sysRoleType()) {
sysRoleType.add(t.getType());
}
QyzxEmpLogin eld = BeanUtil.toBean(session.getAttribute("ui"), QyzxEmpLogin.class);
Integer orgCode = eld.getOrgId();
Integer count = new LambdaQueryChainWrapper<QyzxEmpEntAsso>(qyzxEmpEntAssoMapper)
.eq(QyzxEmpEntAsso::getEmpNum, eld.getId())
.eq(QyzxEmpEntAsso::getOrgCode, orgCode)
.in(QyzxEmpEntAsso::getUserType, sysRoleType)
.count();
if (count <= 0) {
switch (httpMethodName) {
case "POST":
retVal = ResultUtil.error("无权限操作");
break;
case "PUT":
retVal = ResultUtil.error("无权限编辑");
break;
case "GET":
retVal = ResultUtil.error("无权限查看");
break;
case "DELETE":
retVal = ResultUtil.error("无权限删除");
break;
default:
retVal = ResultUtil.error("无权限操作");
break;
}
return retVal;
}else {
return retVal = joinPoint.proceed(joinPoint.getArgs());
}
}
/**
* 是否存在注解,如果存在就获取
*/
private Role getAnnotationLog(JoinPoint joinPoint) {
Signature signature = joinPoint.getSignature();
MethodSignature methodSignature = (MethodSignature) signature;
Method method = methodSignature.getMethod();
if (method != null) {
return method.getAnnotation(Role.class);
}
return null;
}
}
package cn.timer.api.aspect.lang.annotation;
import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import cn.timer.api.config.enums.HttpMethod;
import cn.timer.api.config.enums.SysRoleType;
/**
* 自定义 角色 注解
*
* @author Tang
*
*/
@Target({ ElementType.METHOD })
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface Role {
/**
* 操作 类型
*/
public HttpMethod httpMethod() default HttpMethod.POST;
/**
* 角色类型
*/
public SysRoleType[] sysRoleType() default {SysRoleType.U_TYPE_ADMIN,SysRoleType.U_TYPE_C_ADMIN};
}
......@@ -19,7 +19,7 @@ import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @author Tang 2020-05-26
* @author Tang 2020-05-27
*/
@Data
......@@ -37,10 +37,12 @@ public class JxglAppraisal extends Model<JxglAppraisal> {
@Id
@GeneratedValue
@TableId(type = IdType.AUTO)
@ApiModelProperty(value = "编号 编号", example = "10")
private Integer id;
@ApiModelProperty(value = "绩效考核id 绩效考核id", example = "10")
private Integer performanceAppraisalId;
@ApiModelProperty(value = "员工id 员工id", example = "10")
private Integer empNum;
......@@ -48,8 +50,8 @@ public class JxglAppraisal extends Model<JxglAppraisal> {
private String name;
@ApiModelProperty(value = "考核说明", example = "考核说明")
private String appraisalExplain;
private String appraisalExplain;
@TableField(fill = FieldFill.INSERT)
@ApiModelProperty(value = "创建时间", example = "2020-10-10 10:10:10")
private Date createTime;
......@@ -58,7 +60,46 @@ public class JxglAppraisal extends Model<JxglAppraisal> {
@ApiModelProperty(value = "更新时间", example = "2020-10-10 10:10:10")
private Date updateTime;
@ApiModelProperty(value = "状态 0目标填写 1目标确认 2自评 3上级评分 4 结果确认 5考核完成 6终止考核 7归档", example = "10")
@ApiModelProperty(value = "状态 0目标填写 1目标确认 2自评 3上级评分 4 结果确认 5考核完成 6终止考核 7归档", example = "0")
private Integer sts;
// 已归档绩效
@TableField(exist = false)
private Integer archivedPNum;
// 进行中绩效
@TableField(exist = false)
private Integer underwayPNum;
// 最近绩效方案
@TableField(exist = false)
private String recentlyProject;
// 最近绩效评分
@TableField(exist = false)
private Double recentlyScore;
// 最近绩效等级
@TableField(exist = false)
private String recentlyLevel;
@TableField(exist = false)
private String userName;
@TableField(exist = false)
private String phone;
@TableField(exist = false)
private String bmName;
@TableField(exist = false)
private Date rzTime;
@TableField(exist = false)
private String executorName;
@TableField(exist = false)
private Double comprehensiveScore;
@TableField(exist = false)
private String level;
@TableField(exist = false)
private String confirmor;
}
\ No newline at end of file
......@@ -4,6 +4,8 @@ import java.util.Date;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.IdType;
......@@ -11,6 +13,7 @@ import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import cn.timer.api.config.exception.ValidationMsg;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
......@@ -37,10 +40,10 @@ public class JxglAppraisalAssessment extends Model<JxglAppraisalAssessment> {
@Id
@GeneratedValue
@TableId(type = IdType.AUTO)
@ApiModelProperty(value = "编号 编号", example = "10")
private Integer id;
@NotNull(message = ValidationMsg.NOTNULL)
@ApiModelProperty(value = "考核id 考核id", example = "10")
private Integer appraisalId;
......@@ -50,6 +53,7 @@ public class JxglAppraisalAssessment extends Model<JxglAppraisalAssessment> {
@ApiModelProperty(value = "评定人名称", example = "评定人名称")
private String assessorName;
@NotBlank(message = ValidationMsg.NOTBLANK)
@ApiModelProperty(value = "综合评分", example = "综合评分")
private String comprehensiveScore;
......@@ -63,6 +67,7 @@ public class JxglAppraisalAssessment extends Model<JxglAppraisalAssessment> {
@ApiModelProperty(value = "创建时间", example = "2020-10-10 10:10:10")
private Date createTime;
@NotBlank(message = ValidationMsg.NOTBLANK)
@ApiModelProperty(value = "等级", example = "等级")
private String level;
......
package cn.timer.api.bean.jxgl;
import java.util.Date;
import java.util.List;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
......@@ -67,4 +68,9 @@ public class JxglAppraisalIndicators extends Model<JxglAppraisalIndicators> {
@ApiModelProperty(value = "类型 0 非固定 1 固定", example = "0")
private Integer type;
@TableField(exist = false)
private List<JxglAppraisalIndicatorsAssessment> appraisalIndicatorsAssessments;
@TableField(exist = false)
private List<JxglAppraisalItem> appraisalItems;
}
\ No newline at end of file
package cn.timer.api.bean.jxgl;
import java.util.Date;
import java.util.List;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Transient;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.IdType;
......@@ -65,6 +67,10 @@ public class JxglAppraisalIndicatorsT extends Model<JxglAppraisalIndicatorsT> {
private Date updateTime;
@ApiModelProperty(value = "类型", example = "0 非固定 1 固定")
private String type;
private Integer type;
@TableField(exist = false) // 是否转换
@ApiModelProperty(value = "考核项模板", example = "")
private List<JxglAppraisalItemT> appraisalItemTs;
}
\ No newline at end of file
......@@ -34,10 +34,10 @@ public class JxglAppraisalItemT extends Model<JxglAppraisalItemT> {
@GeneratedValue
@TableId(type = IdType.AUTO)
@ApiModelProperty(value = "编号 编号", example = "10")
@ApiModelProperty(value = "编号", example = "10")
private Integer id;
@ApiModelProperty(value = "考核指标id 考核指标id", example = "10")
@ApiModelProperty(value = "考核指标模板id", example = "10")
private Integer appraisalIndicatorsTId;
@ApiModelProperty(value = "标题", example = "标题")
......@@ -46,7 +46,7 @@ public class JxglAppraisalItemT extends Model<JxglAppraisalItemT> {
@ApiModelProperty(value = "内容", example = "内容")
private String content;
@ApiModelProperty(value = "排序 排序", example = "10")
@ApiModelProperty(value = "排序", example = "10")
private Integer ranks;
}
\ No newline at end of file
package cn.timer.api.bean.jxgl;
import java.util.Date;
import java.util.List;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Transient;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.IdType;
......@@ -58,4 +60,7 @@ public class JxglAppraisalT extends Model<JxglAppraisalT> {
@ApiModelProperty(value = "更新时间", example = "2020-10-10 10:10:10")
private Date updateTime;
@TableField(exist = false) // 是否转换
@ApiModelProperty(value = "考核指标模板", example = "")
private List<JxglAppraisalIndicatorsT> appraisalIndicatorsTs;
}
\ No newline at end of file
......@@ -4,6 +4,7 @@ import java.util.Date;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.validation.Valid;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.IdType;
......@@ -11,6 +12,7 @@ import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import cn.timer.api.config.validation.ValidList;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
......@@ -54,5 +56,9 @@ public class JxglBasicSetting extends Model<JxglBasicSetting> {
@ApiModelProperty(value="更新时间 ",example="2020-10-10 10:10:10")
private Date updateTime;
@Valid
@TableField(exist = false) // 是否转换
@ApiModelProperty(value="绩效等级",example="1")
private ValidList<JxglPerformanceRating> performanceRatings;
}
\ No newline at end of file
package cn.timer.api.bean.jxgl;
import java.util.Date;
import java.util.List;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.extension.activerecord.Model;
......@@ -72,4 +75,33 @@ public class JxglPerformanceAppraisal extends Model<JxglPerformanceAppraisal> {
@ApiModelProperty(value="流程节点",example="")
private byte[] processNode;
@ApiModelProperty(value="被考核人员",example="")
private byte[] beingAppraisalPerson;
@TableField(fill = FieldFill.INSERT)
@ApiModelProperty(value = "创建时间", example = "创建时间")
private Date createTime;
@TableField(fill = FieldFill.UPDATE)
@ApiModelProperty(value = "最近处理时间 ", example = "最近处理时间")
private Date updateTime;
@TableField(exist = false)
private Integer targetSeting;
@TableField(exist = false)
private Integer performanceScore;
@TableField(exist = false)
private Integer resultVerification;
@TableField(exist = false)
private Integer performanceArchive;
@TableField(exist = false)
private JxglAppraisal appraisal;
@TableField(exist = false)
private JxglAppraisalAssessment appraisalAssessment;
}
\ No newline at end of file
......@@ -35,26 +35,26 @@ public class JxglPerformanceRating extends Model<JxglPerformanceRating> {
@Id
@GeneratedValue
@TableId(type = IdType.AUTO)
@ApiModelProperty(value = "编号 编号", example = "10")
@ApiModelProperty(value = "编号", example = "10")
private Integer id;
@ApiModelProperty(value = "绩效基础设置id 绩效基础设置id", example = "10")
@ApiModelProperty(value = "绩效基础设置id", example = "10")
private Integer basicSettingId;
@NotBlank(message = "等级名称不能为空")
@NotBlank(message = "等级名称 不能为空")
@ApiModelProperty(value = "等级名称", example = "等级名称")
private String name;
@NotNull(message = "区间最小分数不能为空")
@ApiModelProperty(value = "区间最小分数 区间最小分数", example = "10")
@NotNull(message = "区间最小分数 不能为空")
@ApiModelProperty(value = "区间最小分数", example = "10")
private Integer sectionMinScore;
@NotNull(message = "区间最大分数不能为空")
@ApiModelProperty(value = "区间最大分数 区间最大分数", example = "10")
@NotNull(message = "区间最大分数 不能为空")
@ApiModelProperty(value = "区间最大分数", example = "10")
private Integer sectionMaxScore;
@ApiModelProperty(value = "排序 排序", example = "10")
@NotNull(message = "排序 不能为空")
@ApiModelProperty(value = "排序", example = "10")
private Integer ranks;
}
\ No newline at end of file
......@@ -37,14 +37,13 @@ public class JxglProcessNode extends Model<JxglProcessNode> {
@Id
@GeneratedValue
@TableId(type = IdType.AUTO)
@ApiModelProperty(value = "编号 编号", example = "10")
@ApiModelProperty(value = "编号", example = "10")
private Integer id;
@ApiModelProperty(value = "考核id 考核id", example = "10")
@ApiModelProperty(value = "考核id", example = "10")
private Integer appraisalId;
@ApiModelProperty(value = "执行人id(员工id) 执行人id(员工id)", example = "10")
@ApiModelProperty(value = "执行人id(员工id)", example = "10")
private Integer executorId;
@ApiModelProperty(value = "执行人名称", example = "执行人名称")
......@@ -62,7 +61,7 @@ public class JxglProcessNode extends Model<JxglProcessNode> {
@ApiModelProperty(value = "主管层级 0直属主管 1上上级主管", example = "10")
private Integer leaderTier;
@ApiModelProperty(value = "权重 权重", example = "10")
@ApiModelProperty(value = "权重", example = "10")
private Integer weight;
@ApiModelProperty(value = "状态 0未执行 1执行中 2 已执行", example = "10")
......
......@@ -19,4 +19,5 @@ public class UserAttendanceRel implements Serializable{
private Integer qyid;
private String empnum;
private String empname;
}
\ No newline at end of file
......@@ -114,10 +114,10 @@ public class KqglAssoBcsz extends Model<KqglAssoBcsz> {
private Integer isXiuxi;
@ApiModelProperty(value = "休息开始时间 休息开始时间", example = "101")
private Long startTime;
private String startTime;
@ApiModelProperty(value = "休息结束时间 休息结束时间", example = "101")
private Long endTime;
private String endTime;
@ApiModelProperty(value = "上下班次数(1/2/3 最大值为3)", example = "101")
private Integer sxbcs;
......
......@@ -64,6 +64,7 @@ public class KqglAssoLeaveRules extends Model<KqglAssoLeaveRules> {
@ApiModelProperty(value = "假期余额 0:关(该项余额为“不限余额”);1:开(该项余额为“0”)", example = "101")
private Integer leaveBalance;
@ApiModelProperty(value = "规则类型(1:事假;2:调休;3:病假;4:年假;5:产假;6:陪产假;7:婚假;8:例假;9:丧假;10:哺乳假)", example = "101")
private Integer rulesType;
}
\ No newline at end of file
......@@ -10,6 +10,7 @@ import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import cn.timer.api.bean.yggl.YgglMainEmp;
import cn.timer.api.dto.login.QysDto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
......@@ -63,10 +64,6 @@ public class QyzxEmpLogin extends Model<QyzxEmpLogin> {
@ApiModelProperty(value="注册时间 ",example="注册时间")
private Date regTime;
/*
* @ApiModelProperty(value="到期时间 ",example="到期时间") private Date endTime;
*/
@ApiModelProperty(value="头像地址 ",example="http://asd")
private String headUrl;
......@@ -86,4 +83,6 @@ public class QyzxEmpLogin extends Model<QyzxEmpLogin> {
@Builder.Default
private List<QysDto> qys = new ArrayList<QysDto>();
@TableField(exist = false)
private YgglMainEmp ygglMainEmp;
}
\ No newline at end of file
......@@ -4,6 +4,7 @@ import java.io.Serializable;
import cn.timer.api.bean.qyzx.QyzxEmpLogin;
import cn.timer.api.config.swagger.IgnoreSwaggerParameter;
import cn.timer.api.dto.yggl.UserInfo;
import lombok.*;
@Data
......@@ -29,4 +30,8 @@ public class UserBean implements Serializable {
@IgnoreSwaggerParameter
private String refreshToken;
@IgnoreSwaggerParameter
private UserInfo userInfo;
}
package cn.timer.api.config.enuminterface;
import lombok.Getter;
public interface JxglEnumInterface {
/**
* 考核指标 类型 0员工 1部门
*/
@Getter
enum BeingAppraisalType implements JxglEnumInterface {
EMPLOYEE(0, "员工 "), DEPARTMENT(1, "部门");
private Integer type;
private String name;
BeingAppraisalType(Integer type, String name) {
this.type = type;
this.name = name;
}
}
/**
* 考核指标 状态 0被考核人 1无需被考核人
*/
@Getter
enum BeingAppraisalSts implements JxglEnumInterface {
NEED(0, "被考核人"), NOT_NEED(1, "无需被考核人");
private Integer type;
private String name;
BeingAppraisalSts(Integer type, String name) {
this.type = type;
this.name = name;
}
}
/**
* 考核指标 类型 0 非固定 1 固定
*/
@Getter
enum IndicatorsType implements JxglEnumInterface {
NOT_FIXATION(0, "非固定 "), FIXATION(1, "固定");
private Integer type;
private String name;
IndicatorsType(Integer type, String name) {
this.type = type;
this.name = name;
}
}
/**
* 是否可见 0是 1否。评分及评分结果能否被员工看见
*/
@Getter
enum IsVisible implements JxglEnumInterface {
TRUE(0, "是"), FALSE(1, "否");
private Integer type;
private String name;
IsVisible(Integer type, String name) {
this.type = type;
this.name = name;
}
}
/**
*绩效考核 状态 0目标制定 1绩效评分 2结果确认 3绩效归档 4终止考核
*/
@Getter
enum PerformanceAppraisalSts implements JxglEnumInterface {
TARGET_SETING(0, "目标制定"), PERFORMANCE_SCORE(1, "绩效评分"), RESULT_VERIFICATION(2, "结果确认"), PERFORMANCE_ARCHIVE(3, "绩效归档"), TERMINATION_ASSESSMENT(4, "终止考核");
private Integer type;
private String name;
PerformanceAppraisalSts(Integer type, String name) {
this.type = type;
this.name = name;
}
}
/**
*考核 状态 0目标填写 1目标确认 2自评 3上级评分 4 结果确认 5考核完成 6终止考核 7绩效归档
*/
@Getter
enum AppraisalSts implements JxglEnumInterface {
TARGET_FILL_IN(0, "目标填写"), TARGET_CONFIRMED(1, "目标确认"),
SELF_ASSESSMENT(2, "自评"), SUPERIOR_SCORE(3, "上级评分"),
RESULT_VERIFICATION(4, "结果确认"), ASSESSMENT_COMPLETE(5, "考核完成"),
TERMINATION_ASSESSMENT(6, "终止考核"), PERFORMANCE_ARCHIVE(7, "绩效归档");
private Integer type;
private String name;
AppraisalSts(Integer type, String name) {
this.type = type;
this.name = name;
}
}
/**
*执行人类型 0被考核人 1主管 2指定成员
*/
@Getter
enum ExecuteType implements JxglEnumInterface {
/**
* 0被考核人
*/
BEING_APPRAISAL_PERSON(0, "被考核人"),
/**
* 1主管
*/
LEADER(1, "主管"),
/**
* 2指定成员
*/
SPECIFIED_MEMBER(2, "指定成员");
private Integer type;
private String name;
ExecuteType(Integer type, String name) {
this.type = type;
this.name = name;
}
public static String getName(int index) {
ExecuteType[] executeTypes = ExecuteType.values();
String res = "";
if (executeTypes.length > index) {
res = executeTypes[index].getName();
}
return res;
}
}
/**
*流程类型 0目标填写 1目标确认 2自评 3上级评分 4 结果确认
*/
@Getter
enum ProcessType implements JxglEnumInterface {
TARGET_FILL_IN(0, "目标填写"), TARGET_CONFIRMED(1, "目标确认"), SELF_ASSESSMENT(2, "自评"), SUPERIOR_SCORE(3, "上级评分"), RESULT_VERIFICATION(4, "结果确认");
private Integer type;
private String name;
ProcessType(Integer type, String name) {
this.type = type;
this.name = name;
}
}
/**
*主管层级 0直属主管 1上上级主管
*/
@Getter
enum LeaderTier implements JxglEnumInterface {
FIRST(0, "直属主管"), SECOND(1, "上上级主管");
private Integer type;
private String name;
LeaderTier(Integer type, String name) {
this.type = type;
this.name = name;
}
}
/**
* 节点状态 0未执行 1执行中 2 已执行
*/
@Getter
enum ProcessNodeSts implements JxglEnumInterface {
NON_EXECUTION(0, "未执行"), IN_EXECUTION(1, "执行中"), EXECUTED(2, "已执行 ");
private Integer type;
private String name;
ProcessNodeSts(Integer type, String name) {
this.type = type;
this.name = name;
}
}
/**
* 评定类型 0自评 1上级评价
*/
@Getter
enum AssessmentType implements JxglEnumInterface {
SELF_ASSESSMENT(0, "自评"), SUPERIOR_SCORE(1, "上级评价");
private Integer type;
private String name;
AssessmentType(Integer type, String name) {
this.type = type;
this.name = name;
}
}
/**
*考核记录 类型 0发起考核 1目标填写 2目标确认 3目标驳回 4自评 5评分驳回 6上级评分 7结果确认 8修改评分 9 考核完成 10 终止考核 11绩效归档
*/
@Getter
enum AppraisalLogType implements JxglEnumInterface {
START(0, "发起考核"), TARGET_FILL_IN(1, "目标填写"),
TARGET_CONFIRMED(2, "目标确认"), TARGET_DISMISS(3, "目标驳回"),
SELF_ASSESSMENT(4, "自评"), SCORE_DISMISS(5, "评分驳回"),
SUPERIOR_SCORE(6, "上级评分"), RESULT_VERIFICATION(7, "结果确认"),
UPDATE_SCORE(8, "修改评分"), ASSESSMENT_COMPLETE(9, "考核完成"),
TERMINATION_ASSESSMENT(10, "终止考核"),PERFORMANCE_ARCHIVE(11, "绩效归档");
private Integer type;
private String name;
AppraisalLogType(Integer type, String name) {
this.type = type;
this.name = name;
}
}
}
......@@ -11,22 +11,7 @@ import lombok.Getter;
@Getter
public enum CommonEnum {
NULL_STR(0,""),
/**
* 1 超管理员
*/
U_TYPE_ADMIN(0, "超管理员"),
/**
* 2 子管理
*/
U_TYPE_C_ADMIN(1, "子管理"),
/**
* 3 普通员工
*/
U_TYPE_EMP(2, "普通员工"),
/**
* 0 关闭
......@@ -74,10 +59,6 @@ public enum CommonEnum {
*/
DEPT_TYPE_OFF(1,"关闭"),
/**
* 审批组-其他
*/
SPZ_OTHER(999999,"其他")
;
private Integer type;
......
package cn.timer.api.config.enums;
import lombok.Getter;
/**
* 角色类型
* @author Administrator
*
*/
@Getter
public enum SysRoleType {
/**
* 0 超管理员
*/
U_TYPE_ADMIN(0, "超管理员"),
/**
* 1 子管理
*/
U_TYPE_C_ADMIN(1, "子管理"),
/**
* 2 普通员工
*/
U_TYPE_EMP(2, "普通员工");
private Integer type;
private String desc;
SysRoleType(Integer type, String desc) {
this.type = type;
this.desc = desc;
}
public Integer getType() {
return this.type;
}
}
......@@ -10,10 +10,13 @@ import org.springframework.web.context.request.NativeWebRequest;
import org.springframework.web.method.support.HandlerMethodArgumentResolver;
import org.springframework.web.method.support.ModelAndViewContainer;
import cn.hutool.core.bean.BeanUtil;
import cn.timer.api.bean.qyzx.QyzxEmpLogin;
import cn.timer.api.bean.yggl.YgglMainEmp;
import cn.timer.api.config.annotation.CurrentUser;
import cn.timer.api.config.annotation.UserBean;
import cn.timer.api.controller.dzht.cn.tign.hz.constant.CacheKeyConstant;
import cn.timer.api.dto.yggl.UserInfo;
@Component
public class UserMethodArgumentResolver implements HandlerMethodArgumentResolver {
......@@ -38,19 +41,19 @@ public class UserMethodArgumentResolver implements HandlerMethodArgumentResolver
NativeWebRequest webRequest, WebDataBinderFactory binderFactory) throws Exception {
// String webRequestid = webRequest.getSessionId();
// String sessionid = session.getId();
QyzxEmpLogin eld = (QyzxEmpLogin) session.getAttribute("ui");
String token = (String) session.getAttribute(CacheKeyConstant.TOKEN);
String refreshToken = (String) session.getAttribute(CacheKeyConstant.REFRESH_TOKEN);
QyzxEmpLogin eld = BeanUtil.toBean(session.getAttribute("ui"), QyzxEmpLogin.class);
String token = BeanUtil.toBean(session.getAttribute(CacheKeyConstant.TOKEN), String.class);
String refreshToken = BeanUtil.toBean(session.getAttribute(CacheKeyConstant.REFRESH_TOKEN), String.class);
// Object phone = webRequest.getAttribute(currentUserAnnotation.id(),
// NativeWebRequest.SCOPE_SESSION);
Integer empNum = eld.getId();
Integer orgCode = eld.getOrgId();
// Integer empNum = (Integer) redisTemplate.get("empNum:"+sessionid);
// Integer orgCode = (Integer) redisTemplate.get("orgCode:"+sessionid);
UserBean userBean = UserBean.builder().token(token).refreshToken(refreshToken).empNum(empNum)
.orgCode(orgCode).qyzxEmpLogin(eld).build();
// log.info("webRequest:"+sessionid);
return userBean;
YgglMainEmp mE = eld.getYgglMainEmp();
UserInfo userInfo = UserInfo.builder().name(mE.getName()).phone(mE.getPhone()).bmgwId(mE.getBmgwId()).build();
return UserBean.builder().token(token).refreshToken(refreshToken).empNum(eld.getId())
.orgCode(eld.getOrgId()).userInfo(userInfo).qyzxEmpLogin(eld).build();
}
}
......@@ -21,10 +21,12 @@ import org.springframework.web.bind.annotation.RestController;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper;
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.StrUtil;
import cn.timer.api.aspect.lang.annotation.Log;
......@@ -43,9 +45,11 @@ import cn.timer.api.config.annotation.UserBean;
import cn.timer.api.config.enuminterface.YgEnumInterface;
import cn.timer.api.config.enuminterface.YgEnumInterface.YgJobType;
import cn.timer.api.config.enums.CommonEnum;
import cn.timer.api.config.enums.SysRoleType;
import cn.timer.api.controller.spmk.service.SpmkServiceImpl;
import cn.timer.api.dao.qyzx.QyzxEmpEntAssoMapper;
import cn.timer.api.dao.qyzx.QyzxEmpLoginMapper;
import cn.timer.api.dao.yggl.YgglMainEmpMapper;
import cn.timer.api.dao.zzgl.ZzglBmgwMMapper;
import cn.timer.api.dto.login.QysDto;
import cn.timer.api.dto.qyzx.EntRegisterDto;
......@@ -144,6 +148,9 @@ public class LoginController {
private ZzglBmgwMMapper zzglBmgwMMapper;
@Autowired
private YgglMainEmpMapper ygglMainEmpMapper;
@Autowired
private AliyunSMS aliyunSMS;
// @Autowired
......@@ -254,7 +261,8 @@ public class LoginController {
String phone = entRegisterDto.getPhone();
String code = entRegisterDto.getCode().toString();
// String codeRedis = (String) redisTemplate.get(phone);
String codeRedis = session.getAttribute(phone).toString();
String codeRedis = BeanUtil.toBean(session.getAttribute(phone), String.class);
if (code == null || !code.equals(codeRedis)) {
return ResultUtil.error("验证码不符");
}
......@@ -315,8 +323,8 @@ public class LoginController {
return ResultUtil.error("新密码与原密码相同,请修改后重试!");
}
} else {
Object codeRedis = session.getAttribute(phone);
if (!code.equals(codeRedis.toString())) {
String codeRedis = BeanUtil.toBean(session.getAttribute(phone), String.class);
if (!code.equals(codeRedis)) {
return ResultUtil.error("短信验证码错误");
}
if (Md5.md5(pw).equals(dbPwd)) {
......@@ -343,8 +351,7 @@ public class LoginController {
String code = entRegisterDto.getCode();
if (entRegisterDto.getPwUpdateType() != 2) {
// String codeRedis =redisTemplate.get(phone).toString();
String codeRedis = session.getAttribute(phone).toString();
String codeRedis = BeanUtil.toBean(session.getAttribute(phone), String.class);
if (code == null) {
return ResultUtil.error("请填写验证码");
}
......@@ -404,7 +411,7 @@ public class LoginController {
String phone = entRegisterDto.getPhone();
String code = entRegisterDto.getCode();
// String codeRedis = redisTemplate.get(phone).toString();
String codeRedis = (String) session.getAttribute(phone);
String codeRedis = BeanUtil.toBean(session.getAttribute(phone), String.class);
if (code == null || !code.toString().equals(codeRedis)) {
return ResultUtil.error("验证码不符/失效");
......@@ -457,7 +464,7 @@ public class LoginController {
if (login != null) {
Integer count = new LambdaQueryChainWrapper<QyzxEmpEntAsso>(qyzxEmpEntAssoMapper)
.eq(QyzxEmpEntAsso::getEmpNum, login.getId())
.eq(QyzxEmpEntAsso::getUserType, CommonEnum.U_TYPE_ADMIN.getType()).count();
.eq(QyzxEmpEntAsso::getUserType, SysRoleType.U_TYPE_ADMIN.getType()).count();
if (count > max) {
return ResultUtil.error("已注册过企业");
......@@ -487,7 +494,7 @@ public class LoginController {
}
boolean b4 = YgglMainEmp.builder().orgCode(qyzxEntInfoM.getId()).empNum(login.getId()).rzTime(new Date())
.isManager(CommonEnum.U_TYPE_ADMIN.getType()).name(username).phone(phone)
.isManager(SysRoleType.U_TYPE_ADMIN.getType()).name(username).phone(phone)
.jobType(YgJobType.QUANZHI.getType()).jobStatus(YgEnumInterface.jobStatus.ZHENSHI.getType()).build()
.insert();
if (!b4) {
......@@ -497,7 +504,7 @@ public class LoginController {
// 员工企业关联表
QyzxEmpEntAsso qyzxEmpEntAsso = QyzxEmpEntAsso.builder().empNum(login.getId()).orgCode(qyzxEntInfoM.getId())
.status(1).userType(CommonEnum.U_TYPE_ADMIN.getType()).build();
.status(1).userType(SysRoleType.U_TYPE_ADMIN.getType()).build();
boolean b3 = qyzxEmpEntAsso.insert();
if (!b3) {
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
......@@ -533,10 +540,9 @@ public class LoginController {
String code = entRegisterDto.getCode();
String phone = entRegisterDto.getPhone();
// Object codeRedis = redisTemplate.get(phone);
Integer codeRedis = (Integer) session.getAttribute(phone);
String codeRedis = BeanUtil.toBean(session.getAttribute(phone), String.class);
if (codeRedis == null || !code.equals(codeRedis.toString()))
if (codeRedis == null || !code.equals(codeRedis))
return ResultUtil.error("验证码不符");
QyzxEmpLogin qyzxEmpLogin1 = new LambdaQueryChainWrapper<QyzxEmpLogin>(qyzxEmpLoginMapper)
......@@ -555,10 +561,13 @@ public class LoginController {
} catch (Exception e) {
e.printStackTrace();
}
List<QysDto> qys = qyzxEmpLoginMapper.getQys(qyzxEmpLogin1.getId());
if (qys.size() == 0)
return ResultUtil.error("没有任何公司可以查看!");
qyzxEmpLogin1.setQys(qys);
QysDto ctrl = qys.get(0);
if (qyzxEmpLogin1.getOrgId() != null) {
......@@ -568,22 +577,24 @@ public class LoginController {
}
}
// Stream<QysDto> s = qys.stream()
// .filter(item -> item.getStatus() == 1 && qyzxEmpLogin1.getOrgId().equals(item.getId()));
//
// if (s != null) {
// ctrl = s.findFirst().get();
// }
}
YgglMainEmp userInfo = ygglMainEmpMapper.selectOne(new QueryWrapper<YgglMainEmp>().lambda()
.select(YgglMainEmp::getName,YgglMainEmp::getPhone,YgglMainEmp::getBmgwId)
.eq(YgglMainEmp::getEmpNum, qyzxEmpLogin1.getId())
.eq(YgglMainEmp::getOrgCode, qyzxEmpLogin1.getOrgId()));
if (userInfo == null) {
return ResultUtil.error("账号不存在");
}
qyzxEmpLogin1.setYgglMainEmp(userInfo);
if (ctrl.getStatus() == null || ctrl.getStatus().equals(0)) {
return ResultUtil.error("帐号被禁用");
}
qyzxEmpLogin1.setOrgId(ctrl.getId());
@SuppressWarnings("unused")
String phone = qyzxEmpLogin1.getPhone();
if (CommonEnum.U_TYPE_ADMIN.getType().equals(ctrl.getUserType())
|| CommonEnum.U_TYPE_C_ADMIN.getType().equals(ctrl.getUserType())) {
if (SysRoleType.U_TYPE_ADMIN.getType().equals(ctrl.getUserType())
|| SysRoleType.U_TYPE_C_ADMIN.getType().equals(ctrl.getUserType())) {
} else {
// 获取权限
ArrayList<Integer> list = new ArrayList<Integer>();
......@@ -607,9 +618,7 @@ public class LoginController {
// 需要更新最后一次登陆信息
// 用户信息缓存
session.setAttribute("ui", qyzxEmpLogin1);
// redisTemplate.set("loginUser:" + phone, session.getId());
// redisTemplate.set("empNum:" + session.getId(), qyzxEmpLogin1.getId());
// redisTemplate.set("orgCode:" + session.getId(), qyzxEmpLogin1.getOrgId());
return ResultUtil.data(qyzxEmpLogin1);
}
......
package cn.timer.api.controller.jxgl;
import java.util.List;
import java.util.stream.Collectors;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.collection.ListUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.timer.api.aspect.lang.annotation.Role;
import cn.timer.api.bean.jxgl.JxglAppraisal;
import cn.timer.api.bean.jxgl.JxglAppraisalAssessment;
import cn.timer.api.bean.jxgl.JxglAppraisalIndicators;
import cn.timer.api.bean.jxgl.JxglAppraisalIndicatorsT;
import cn.timer.api.bean.jxgl.JxglAppraisalItem;
import cn.timer.api.bean.jxgl.JxglAppraisalItemT;
import cn.timer.api.bean.jxgl.JxglAppraisalLog;
import cn.timer.api.bean.jxgl.JxglAppraisalT;
import cn.timer.api.bean.jxgl.JxglBasicSetting;
import cn.timer.api.bean.jxgl.JxglPerformanceAppraisal;
import cn.timer.api.bean.jxgl.JxglPerformanceRating;
import cn.timer.api.bean.jxgl.JxglProcessNode;
import cn.timer.api.bean.qyzx.QyzxEmpEntAsso;
import cn.timer.api.bean.spmk.SpmkApproveSummary;
import cn.timer.api.bean.yggl.YgglMainEmp;
import cn.timer.api.config.annotation.CurrentUser;
import cn.timer.api.config.annotation.UserBean;
import cn.timer.api.config.enums.CommonEnum;
import cn.timer.api.config.enuminterface.JxglEnumInterface.AppraisalLogType;
import cn.timer.api.config.enuminterface.JxglEnumInterface.AppraisalSts;
import cn.timer.api.config.enuminterface.JxglEnumInterface.BeingAppraisalSts;
import cn.timer.api.config.enuminterface.JxglEnumInterface.BeingAppraisalType;
import cn.timer.api.config.enuminterface.JxglEnumInterface.ExecuteType;
import cn.timer.api.config.enuminterface.JxglEnumInterface.ProcessNodeSts;
import cn.timer.api.config.enuminterface.JxglEnumInterface.ProcessType;
import cn.timer.api.config.enums.SysRoleType;
import cn.timer.api.config.exception.CustomException;
import cn.timer.api.controller.yggl.service.YgglService;
import cn.timer.api.controller.zzgl.service.ZzglBmgwMService;
import cn.timer.api.dao.jxgl.JxglAppraisalAssessmentMapper;
import cn.timer.api.dao.jxgl.JxglAppraisalIndicatorsMapper;
import cn.timer.api.dao.jxgl.JxglAppraisalIndicatorsTMapper;
import cn.timer.api.dao.jxgl.JxglAppraisalItemMapper;
import cn.timer.api.dao.jxgl.JxglAppraisalItemTMapper;
import cn.timer.api.dao.jxgl.JxglAppraisalLogMapper;
import cn.timer.api.dao.jxgl.JxglAppraisalMapper;
import cn.timer.api.dao.jxgl.JxglAppraisalTMapper;
import cn.timer.api.dao.jxgl.JxglBasicSettingMapper;
import cn.timer.api.dao.jxgl.JxglPerformanceAppraisalMapper;
import cn.timer.api.dao.jxgl.JxglPerformanceRatingMapper;
import cn.timer.api.dao.jxgl.JxglProcessNodeMapper;
import cn.timer.api.dao.qyzx.QyzxEmpEntAssoMapper;
import cn.timer.api.dao.yggl.YgglMainEmpMapper;
import cn.timer.api.dto.jxgl.BasicSettingDto;
import cn.timer.api.dto.jxgl.AppraisalDetail;
import cn.timer.api.dto.jxgl.AppraisalQuery;
import cn.timer.api.dto.jxgl.BeingAppraisalPerson;
import cn.timer.api.dto.jxgl.EmpAppraisalQuery;
import cn.timer.api.dto.jxgl.EmpPerformanceQuery;
import cn.timer.api.dto.jxgl.PerformanceAppraisal;
import cn.timer.api.dto.jxgl.PerformanceAppraisalQuery;
import cn.timer.api.dto.jxgl.ProcessNode;
import cn.timer.api.dto.jxgl.ProcessNodeUpdate;
import cn.timer.api.utils.Result;
import cn.timer.api.utils.ResultUtil;
import cn.timer.api.utils.StreamUtils;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
......@@ -47,6 +100,15 @@ public class JxglController {
@Autowired
private JxglPerformanceRatingMapper jxglPerformanceRatingMapper;
@Autowired
private JxglAppraisalTMapper jxglAppraisalTMapper;
@Autowired
private JxglAppraisalIndicatorsTMapper jxglAppraisalIndicatorsTMapper;
@Autowired
private JxglAppraisalItemTMapper jsxglAppraisalItemTMapper;
//TODO 基础设置
/**
* 新增或编辑-基础设置
......@@ -54,21 +116,23 @@ public class JxglController {
@PostMapping(value = "/save_basic_setting")
@ApiOperation(value = "1.新增或编辑-基础设置", httpMethod = "POST", notes = "新增或编辑-审批模板组")
@ApiOperationSupport(order = 1)
public Result<Object> saveAtg(@CurrentUser UserBean userBean ,@Validated @RequestBody BasicSettingDto basicSettingDto) throws Exception{
@Role
public Result<Object> saveAtg(@CurrentUser UserBean userBean ,@Validated @RequestBody JxglBasicSetting basicSetting) throws Exception{
Integer orgCode = userBean.getOrgCode();
Integer count = new LambdaQueryChainWrapper<QyzxEmpEntAsso>(qyzxEmpEntAssoMapper)
.eq(QyzxEmpEntAsso::getEmpNum, userBean.getEmpNum())
.in(QyzxEmpEntAsso::getUserType, CommonEnum.U_TYPE_ADMIN.getType(),CommonEnum.U_TYPE_C_ADMIN.getType())
.eq(QyzxEmpEntAsso::getOrgCode, orgCode)
.in(QyzxEmpEntAsso::getUserType, SysRoleType.U_TYPE_ADMIN.getType(),SysRoleType.U_TYPE_C_ADMIN.getType())
.count();
if (count <= 0) {
return ResultUtil.error("无权限编辑");
}
List<JxglPerformanceRating> listPr = basicSettingDto.getPerformanceRatings();
List<JxglPerformanceRating> listPr = basicSetting.getPerformanceRatings();
if (listPr != null) {
for (JxglPerformanceRating pr : listPr) {
if (pr.getSectionMaxScore() > basicSettingDto.getMaxScore()) {
if (pr.getSectionMaxScore() > basicSetting.getMaxScore()) {
return ResultUtil.error("区间值不能超过 最高分");
}else if (pr.getSectionMinScore() >= pr.getSectionMaxScore()) {
return ResultUtil.error("区间值 设置不正确");
......@@ -87,20 +151,555 @@ public class JxglController {
.eq(JxglBasicSetting::getOrgCode, orgCode));
}
basicSetting.setOrgCode(orgCode);
basicSetting.insert();
if (listPr != null && listPr.size() > 0) {
listPr.stream().forEach(pr -> pr.setBasicSettingId(basicSetting.getId()));
int i = jxglPerformanceRatingMapper.insertList(listPr);
}
JxglBasicSetting bS2 = JxglBasicSetting.builder().build();
BeanUtil.copyProperties(basicSettingDto, bS2, "performanceRatings");
bS2.setOrgCode(orgCode);
bS2.insert();
if (listPr != null) {
for (JxglPerformanceRating pr : listPr) {
pr.setBasicSettingId(bS2.getId());
jxglPerformanceRatingMapper.insert(pr);
return ResultUtil.success();
}
/**
* 查询-基础设置
*/
@GetMapping(value = "/select_basic_setting")
@ApiOperation(value = "2.查询-基础设置", httpMethod = "GET", notes = "查询-基础设置")
@ApiOperationSupport(order = 2)
@Role
public Result<Object> selectAT(@CurrentUser UserBean userBean){
JxglBasicSetting bS = jxglBasicSettingMapper.selectAll(userBean.getOrgCode());
return ResultUtil.data(bS);
}
//TODO 考核模板
/**
* 新增或编辑-考核模板
*/
@PostMapping(value = "/save_appraisal_t")
@ApiOperation(value = "3.新增或编辑-考核模板", httpMethod = "POST", notes = "新增或编辑-考核模板")
@ApiOperationSupport(order = 3)
@Role
public Result<Object> saveAtg(@CurrentUser UserBean userBean ,@Validated @RequestBody JxglAppraisalT jxglAppraisalT) throws Exception{
if (jxglAppraisalT.getId() != null && jxglAppraisalT.selectCount(new QueryWrapper<JxglAppraisalT>().lambda()
.eq(JxglAppraisalT::getId, jxglAppraisalT.getId())) > 0) {
jxglAppraisalT.updateById();
}else {
jxglAppraisalT.setOrgCode(userBean.getOrgCode());
jxglAppraisalT.insert();
}
LambdaQueryWrapper<JxglAppraisalIndicatorsT> q = new QueryWrapper<JxglAppraisalIndicatorsT>().lambda()
.eq(JxglAppraisalIndicatorsT::getAppraisalTId, jxglAppraisalT.getId());
List<JxglAppraisalIndicatorsT> listAIT = jxglAppraisalIndicatorsTMapper.selectList(q.select(JxglAppraisalIndicatorsT::getId));
List<Integer> listAITId = listAIT != null && listAIT.size() > 0 ? listAIT.stream().map(JxglAppraisalIndicatorsT::getId).collect(Collectors.toList()) : null;
// 删除 原 考核指标模板
jxglAppraisalIndicatorsTMapper.delete(q);
// 删除 原 考核项模板
if (listAITId != null) {
jsxglAppraisalItemTMapper.delete(new QueryWrapper<JxglAppraisalItemT>().lambda()
.in(JxglAppraisalItemT::getAppraisalIndicatorsTId, listAITId));
}
List<JxglAppraisalIndicatorsT> aITs = jxglAppraisalT.getAppraisalIndicatorsTs();
for (JxglAppraisalIndicatorsT aIT : aITs) {
aIT.setAppraisalTId(jxglAppraisalT.getId());
// 新增 考核指标模板
if (aIT.insert()) {
List<JxglAppraisalItemT> aItemTs = aIT.getAppraisalItemTs();
if (aItemTs != null && aItemTs.size() > 0) {
// 批量新增 考核项模板
aItemTs.stream().forEach(aItemT -> aItemT.setAppraisalIndicatorsTId(aIT.getId()));
int c = jsxglAppraisalItemTMapper.insertList(aItemTs);
}
}else {
throw new Exception();
}
}
return ResultUtil.success();
}
/**
* 查询-考核模板-列表
*/
@GetMapping(value = "/selects_appraisal_t")
@ApiOperation(value = "4.查询-考核模板-列表", httpMethod = "GET", notes = "查询-考核模板-列表")
@ApiOperationSupport(order = 4)
@Role
public Result<Object> selectListAT(@CurrentUser UserBean userBean, cn.timer.api.utils.Page page){
IPage<JxglAppraisalT> p = new Page<JxglAppraisalT>(page.getCurrentPage(),page.getTotalPage());
IPage<JxglAppraisalT> pageAT = jxglAppraisalTMapper.selectPage(p, new QueryWrapper<JxglAppraisalT>().lambda()
.eq(JxglAppraisalT::getOrgCode, userBean.getOrgCode()));
List<JxglAppraisalT> listAT = pageAT.getRecords();
return ResultUtil.data(pageAT, listAT);
}
/**
* 查询-考核模板-详情
*/
@GetMapping(value = "/selects_appraisal_t/{id}")
@ApiOperation(value = "5.查询-考核模板-详情", httpMethod = "GET", notes = "查询-考核模板-详情")
@ApiOperationSupport(order = 5)
@Role
public Result<Object> selectAT(@CurrentUser UserBean userBean,@PathVariable Integer id){
JxglAppraisalT aT = jxglAppraisalTMapper.selectDetailById(id);
return ResultUtil.data(aT);
}
/**
* 删除-考核模板
*/
@DeleteMapping(value = "/del_appraisal_t/{id}")
@ApiOperation(value = "6.删除-考核模板", httpMethod = "DELETE", notes = "删除-考核模板")
@ApiOperationSupport(order = 6)
@Role
public Result<Object> delAT(@CurrentUser UserBean userBean,@PathVariable Integer id) throws Exception{
jxglAppraisalTMapper.delete(new QueryWrapper<JxglAppraisalT>().lambda()
.eq(JxglAppraisalT::getId, id)
.eq(JxglAppraisalT::getOrgCode, userBean.getOrgCode()));
return ResultUtil.success();
}
@Autowired
private ZzglBmgwMService zzglBmgwMService;
@Autowired
private YgglService ygglService;
@Autowired
private JxglPerformanceAppraisalMapper jxglPerformanceAppraisalMapper;
@Autowired
private JxglAppraisalMapper jxglAppraisalMapper;
@Autowired
private JxglAppraisalIndicatorsMapper jxglAppraisalIndicatorsMapper;
@Autowired
private JxglAppraisalItemMapper jsxglAppraisalItemMapper;
@Autowired
private JxglAppraisalLogMapper jxglAppraisalLogMapper;
@Autowired
private YgglMainEmpMapper ygglMainEmpMapper;
/**
* 新增-绩效考核
*/
@PostMapping(value = "/save_performance_appraisal")
@ApiOperation(value = "7.新增-绩效考核", httpMethod = "POST", notes = "新增-绩效考核")
@ApiOperationSupport(order = 7)
public Result<Object> savePA(@CurrentUser UserBean userBean,@Validated @RequestBody PerformanceAppraisal performanceAppraisal) throws Exception{
Integer orgCode = userBean.getOrgCode();
JxglPerformanceAppraisal pA = JxglPerformanceAppraisal.builder().build();
BeanUtil.copyProperties(performanceAppraisal, pA, "processNode","beingAppraisalPerson","appraisalTId");
pA.setProcessNode(ObjectUtil.serialize(performanceAppraisal.getProcessNode()));
pA.setBeingAppraisalPerson(ObjectUtil.serialize(performanceAppraisal.getBeingAppraisalPerson()));
System.out.println("新增 绩效考核 :" + pA);
List<ProcessNode> listPN = performanceAppraisal.getProcessNode();
List<BeingAppraisalPerson> listBAP = performanceAppraisal.getBeingAppraisalPerson();
// 被考核人员
List<Integer> listEmpId = listBAP.stream()
.filter(bAP ->
BeingAppraisalType.EMPLOYEE.getType().equals(bAP.getType()) &&
BeingAppraisalSts.NEED.getType().equals(bAP.getSts()))
.map(BeingAppraisalPerson::getId)
.collect(Collectors.toList());
// 被考核部门id
List<Integer> listDeptId = listBAP.stream()
.filter(bAP ->
BeingAppraisalType.DEPARTMENT.getType().equals(bAP.getType()))
.map(BeingAppraisalPerson::getId)
.collect(Collectors.toList());
List<YgglMainEmp> listEmp2 = ListUtil.toList();
for (Integer deptId : listDeptId) {
CollUtil.addAll(listEmp2, zzglBmgwMService.selectOtherlistent(userBean.getOrgCode(), deptId));
}
if (!CollUtil.isEmpty(listEmp2)) {
// 员工信息数据 去重
List<Integer> listEmp2Id = listEmp2.stream()
.filter(StreamUtils.distinctByKey(e -> e.getEmpNum()))
.map(YgglMainEmp::getEmpNum)
.collect(Collectors.toList());
// 合并 集合
CollUtil.addAll(listEmpId, listEmp2Id);
}
// 无需被考核人id
List<Integer> listNotEmpId = listBAP.stream()
.filter(bAP ->
BeingAppraisalType.EMPLOYEE.getType().equals(bAP.getType()) &&
BeingAppraisalSts.NOT_NEED.getType().equals(bAP.getSts()))
.map(BeingAppraisalPerson::getId)
.collect(Collectors.toList());
// 过滤掉 无需被考核人id
listEmpId = listEmpId.stream().filter(e -> !listNotEmpId.contains(e)).collect(Collectors.toList());
pA.setAppraisalPersonNum(listEmpId.size());
// 新增 绩效考核
pA.insert();
// 考核模板
JxglAppraisalT aT = jxglAppraisalTMapper.selectById(performanceAppraisal.getAppraisalTId());
if (aT == null) {
throw new CustomException("考核模板不存在");
}
JxglProcessNode processNode = JxglProcessNode.builder().build();
JxglAppraisal appraisal = JxglAppraisal.builder().build();
JxglAppraisalIndicators appraisalIndicators = JxglAppraisalIndicators.builder().build();
JxglAppraisalItem appraisalItem = JxglAppraisalItem.builder().build();
JxglAppraisalLog appraisalLog = JxglAppraisalLog.builder().build();
System.out.println("listEmpId----"+listEmpId);
for (Integer bAP : listEmpId) {
// 考核
appraisal.setPerformanceAppraisalId(pA.getId());
appraisal.setEmpNum(bAP);
appraisal.setName(aT.getName());
appraisal.setAppraisalExplain(aT.getAppraisalExplain());
appraisal.setSts(AppraisalSts.TARGET_FILL_IN.getType());
// 新增 考核
appraisal.insert();
System.out.println("新增 考核:" + appraisal);
listPN.stream().forEach(pN -> {
Integer executeType = pN.getExecuteType();
// 流程节点
processNode.setAppraisalId(appraisal.getId());
processNode.setExecuteType(executeType);
processNode.setLeaderTier(pN.getLeaderTier());
processNode.setName(ExecuteType.getName(executeType));
Integer processType = pN.getProcessType();
processNode.setProcessType(processType);
if (ProcessType.TARGET_FILL_IN.getType().equals(processType)) {
processNode.setSts(ProcessNodeSts.IN_EXECUTION.getType());
}else {
processNode.setSts(ProcessNodeSts.NON_EXECUTION.getType());
}
processNode.setWeight(pN.getWeight());
if (ExecuteType.BEING_APPRAISAL_PERSON.getType().equals(executeType)) {
processNode.setExecutorId(bAP);
}else if (ExecuteType.LEADER.getType().equals(executeType)) {
processNode.setExecutorId(ygglService.selectLeaderEmpNumById(userBean.getOrgCode(), bAP, pN.getLeaderTier()));
}else if (ExecuteType.SPECIFIED_MEMBER.getType().equals(executeType)) {
processNode.setExecutorId(pN.getExecutorId());
}
// 新增 流程节点
processNode.insert();
System.out.println("新增 流程节点:" + processNode);
});
List<JxglAppraisalIndicatorsT> listAIT = jxglAppraisalIndicatorsTMapper.selectList(new QueryWrapper<JxglAppraisalIndicatorsT>().lambda()
.eq(JxglAppraisalIndicatorsT::getAppraisalTId, aT.getId()));
if (listAIT == null || listAIT.size() <= 0) {
throw new CustomException("考核指标不存在");
}
listAIT.stream().forEach(aIT -> {
// 考核指标
BeanUtil.copyProperties(aIT, appraisalIndicators, "appraisalId", "createTime", "updateTime");
appraisalIndicators.setAppraisalId(appraisal.getId());
// 新增 考核指标
appraisalIndicators.insert();
System.out.println("新增 考核指标:" + appraisalIndicators);
List<JxglAppraisalItemT> listAItemT = jsxglAppraisalItemTMapper.selectList(new QueryWrapper<JxglAppraisalItemT>().lambda()
.eq(JxglAppraisalItemT::getAppraisalIndicatorsTId, aIT.getId()));
if (listAItemT != null && listAItemT.size() > 0) {
listAItemT.stream().forEach(aItemT -> {
BeanUtil.copyProperties(aItemT, appraisalItem, "appraisalIndicatorsTId");
appraisalItem.setAppraisalIndicatorsId(appraisalIndicators.getId());
// 新增 考核项
appraisalItem.insert();
System.out.println("新增 考核项:" + appraisalItem);
});
}
});
YgglMainEmp yME = ygglMainEmpMapper.selectOne(new QueryWrapper<YgglMainEmp>().lambda()
.select(YgglMainEmp::getName)
.eq(YgglMainEmp::getOrgCode, orgCode)
.eq(YgglMainEmp::getEmpNum, bAP));
appraisalLog.setAppraisalId(appraisal.getId());
appraisalLog.setExecutorId(bAP);
appraisalLog.setExecutorName(yME.getName());
appraisalLog.setType(AppraisalLogType.START.getType());
appraisalLog.insert();
}
// System.out.println("listEmpId----"+listEmpId);
// System.out.println(listDeptId);
// System.out.println(listNotEmpId);
return ResultUtil.success();
}
/**
* 查询-绩效考核-列表-归档
*/
@PostMapping(value = "/selects_performance_appraisal_archive")
@ApiOperation(value = "8.查询-绩效考核-列表-非归档", httpMethod = "POST", notes = "查询-绩效考核-列表-非归档")
@ApiOperationSupport(order = 8)
@Role
public Result<Object> selectsPAArchive(@CurrentUser UserBean userBean,@RequestBody PerformanceAppraisalQuery query){
IPage<SpmkApproveSummary> page = new Page<SpmkApproveSummary>(query.getCurrentPage(),query.getTotalPage());
query.setOrgCode(userBean.getOrgCode());
IPage<JxglPerformanceAppraisal> pagePA = jxglPerformanceAppraisalMapper.selectArchiveListByQuery(page, query);
List<JxglPerformanceAppraisal> listPA = pagePA.getRecords();
return ResultUtil.data(pagePA,listPA);
}
/**
* 查询-绩效考核-列表-非归档
*/
@PostMapping(value = "/selects_performance_appraisal")
@ApiOperation(value = "9.查询-绩效考核-列表-归档", httpMethod = "POST", notes = "查询-绩效考核-列表-归档")
@ApiOperationSupport(order = 9)
@Role
public Result<Object> selectsPA(@CurrentUser UserBean userBean,@RequestBody PerformanceAppraisalQuery query){
IPage<SpmkApproveSummary> page = new Page<SpmkApproveSummary>(query.getCurrentPage(),query.getTotalPage());
query.setOrgCode(userBean.getOrgCode());
IPage<JxglPerformanceAppraisal> pagePA = jxglPerformanceAppraisalMapper.selectListByQuery(page, query);
List<JxglPerformanceAppraisal> listPA = pagePA.getRecords();
return ResultUtil.data(pagePA,listPA);
}
/**
* 查询-考核-列表
*/
@PostMapping(value = "/selects_appraisal")
@ApiOperation(value = "10.查询-考核-列表", httpMethod = "POST", notes = "查询-考核-列表")
@ApiOperationSupport(order = 10)
@Role
public Result<Object> selectsA(@CurrentUser UserBean userBean,@RequestBody AppraisalQuery query){
IPage<JxglAppraisal> page = new Page<JxglAppraisal>(query.getCurrentPage(),query.getTotalPage());
query.setOrgCode(userBean.getOrgCode());
IPage<JxglAppraisal> pageA = jxglAppraisalMapper.selectListByQuery(page, query);
List<JxglAppraisal> listPA = pageA.getRecords();
return ResultUtil.data(pageA,listPA);
}
/**
* 查询-考核-详情
*/
@GetMapping(value = "/select_appraisal/{id}")
@ApiOperation(value = "11.查询-考核-详情", httpMethod = "GET", notes = "查询-考核-详情")
@ApiOperationSupport(order = 11)
@Role
public Result<Object> selectA(@CurrentUser UserBean userBean,@PathVariable Integer id){
AppraisalDetail aD = jxglAppraisalMapper.selectDetailById(userBean.getOrgCode(), id);
return ResultUtil.data(aD);
}
/**
* 修改-流程执行人-转派
*/
@PutMapping(value = "/update_process_node")
@ApiOperation(value = "12.修改-流程执行人-转派", httpMethod = "PUT", notes = "修改-流程执行人-转派")
@ApiOperationSupport(order = 12)
@Role
public Result<Object> updatePN(@CurrentUser UserBean userBean,@RequestBody ProcessNodeUpdate processNodeUpdate){
Integer count2 = jxglAppraisalMapper.selectCount(new QueryWrapper<JxglAppraisal>().lambda()
.eq(JxglAppraisal::getId, processNodeUpdate.getAppraisalId())
.in(JxglAppraisal::getSts, AppraisalSts.ASSESSMENT_COMPLETE.getType(),
AppraisalSts.TERMINATION_ASSESSMENT.getType(),
AppraisalSts.PERFORMANCE_ARCHIVE.getType()));
if (count2 > 0) {
return ResultUtil.error("考核已结束");
}
JxglProcessNode pN = JxglProcessNode.builder().build();
BeanUtil.copyProperties(processNodeUpdate, pN);
pN.updateById();
return ResultUtil.data(pN);
}
/**
* 终止-考核
*/
@PutMapping(value = "/termination_assessment")
@ApiOperation(value = "13.终止-考核", httpMethod = "PUT", notes = "终止-考核")
@ApiOperationSupport(order = 13)
@Role
public Result<Object> terminationAssessment(@CurrentUser UserBean userBean,@PathVariable Integer id){
JxglAppraisal.builder().id(id).sts(AppraisalSts.TERMINATION_ASSESSMENT.getType()).build().updateById();
return ResultUtil.success();
}
@Autowired
private JxglAppraisalAssessmentMapper appraisalAssessmentMapper;
@Autowired
private JxglProcessNodeMapper processNodeMapper;
/**
* 新增-考核评定
*/
@PutMapping(value = "/save_appraisal_assessment")
@ApiOperation(value = "13.新增-考核评定", httpMethod = "PUT", notes = "新增-考核评定")
@ApiOperationSupport(order = 13)
public Result<Object> saveAA(@CurrentUser UserBean userBean,@RequestBody JxglAppraisalAssessment appraisalAssessment){
Integer count2 = jxglAppraisalMapper.selectCount(new QueryWrapper<JxglAppraisal>().lambda()
.eq(JxglAppraisal::getId, appraisalAssessment.getAppraisalId())
.in(JxglAppraisal::getSts, AppraisalSts.ASSESSMENT_COMPLETE.getType(),
AppraisalSts.TERMINATION_ASSESSMENT.getType(),
AppraisalSts.PERFORMANCE_ARCHIVE.getType()));
if (count2 > 0) {
return ResultUtil.error("考核已结束");
}
Integer empNum = userBean.getEmpNum();
JxglProcessNode pN = processNodeMapper.selectOne(new QueryWrapper<JxglProcessNode>().lambda()
.in(JxglProcessNode::getProcessType, ProcessType.SELF_ASSESSMENT,ProcessType.SUPERIOR_SCORE));
if (pN == null) {
return ResultUtil.error("在该流程状态 无法评价");
}else if (!empNum.equals(pN.getExecutorId())) {
return ResultUtil.error("无权限 评价");
}
appraisalAssessment.setAssessorName(userBean.getUserInfo().getName());
appraisalAssessment.setAssessorId(userBean.getEmpNum());
appraisalAssessment.insert();
return ResultUtil.data(appraisalAssessment);
}
/**
* 查询-所有员工绩效-汇总
*/
@PostMapping(value = "/selects_emp_performance")
@ApiOperation(value = "14.查询-所有员工绩效-汇总", httpMethod = "POST", notes = "查询-所有员工绩效-汇总")
@ApiOperationSupport(order = 14)
@Role
public Result<Object> selectsEP(@CurrentUser UserBean userBean,@RequestBody EmpPerformanceQuery query){
IPage<JxglAppraisal> page = new Page<JxglAppraisal>(query.getCurrentPage(),query.getTotalPage());
query.setOrgCode(userBean.getOrgCode());
IPage<JxglAppraisal> pageA = jxglAppraisalMapper.selectListEmpByQuery(page, query);
List<JxglAppraisal> listA = pageA.getRecords();
return ResultUtil.data(pageA,listA);
}
/**
* 查询-某员工考核-列表
*/
@PostMapping(value = "/selects_emp_appraisal")
@ApiOperation(value = "15.查询-某员工考核-列表", httpMethod = "POST", notes = "查询-某员工考核-列表")
@ApiOperationSupport(order = 15)
@Role
public Result<Object> selectsEA(@CurrentUser UserBean userBean,@RequestBody EmpAppraisalQuery query){
IPage<JxglPerformanceAppraisal> page = new Page<JxglPerformanceAppraisal>(query.getCurrentPage(),query.getTotalPage());
query.setOrgCode(userBean.getOrgCode());
IPage<JxglPerformanceAppraisal> pagePA = jxglPerformanceAppraisalMapper.selectListEmpByQuery(page, query);
List<JxglPerformanceAppraisal> listPA = pagePA.getRecords();
return ResultUtil.data(pagePA,listPA);
}
/**
* 查询-绩效考核-方案
*/
@GetMapping(value = "/selects_performance_appraisal/{id}")
@ApiOperation(value = "16.查询-绩效考核-方案", httpMethod = "GET", notes = "查询-绩效考核-方案")
@ApiOperationSupport(order = 16)
@Role
public Result<Object> selectPA(@CurrentUser UserBean userBean,@PathVariable Integer id){
JxglPerformanceAppraisal pA = jxglPerformanceAppraisalMapper.selectById(id);
if (pA == null) {
return ResultUtil.error("方案不存在");
}
PerformanceAppraisal paDto = PerformanceAppraisal.builder()
.name(pA.getName())
.period(pA.getPeriod())
.appraisalStartTime(pA.getAppraisalStartTime())
.appraisalEndTime(pA.getAppraisalEndTime())
.isVisible(pA.getIsVisible())
.scope(pA.getScope())
.appraisalTName(pA.getAppraisalTName())
.processNode(ObjectUtil.deserialize(pA.getProcessNode()))
.beingAppraisalPerson(ObjectUtil.deserialize(pA.getBeingAppraisalPerson()))
.build();
return ResultUtil.data(paDto);
}
}
......@@ -12,7 +12,6 @@ import java.util.Date;
import java.util.HashSet;
import java.util.List;
import java.util.Locale;
import java.util.Map;
import java.util.Set;
import org.springframework.beans.factory.annotation.Autowired;
......@@ -32,19 +31,15 @@ import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestClientException;
import org.springframework.web.client.RestTemplate;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.additional.query.impl.LambdaQueryChainWrapper;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
import cn.hutool.json.JSONObject;
import cn.timer.api.bean.kqgl.AttCalendarAlarm;
import cn.timer.api.bean.kqgl.AttClockMethod;
import cn.timer.api.bean.kqgl.AttConditions;
......@@ -75,8 +70,6 @@ import cn.timer.api.bean.kqgl.ShiftDetails;
import cn.timer.api.bean.kqgl.ShiftManagement;
import cn.timer.api.bean.kqgl.SpecialDate;
import cn.timer.api.bean.kqgl.SystemShift;
import cn.timer.api.bean.kqgl.TBlFkcmdTrans;
import cn.timer.api.bean.kqgl.TBlFkcmdTransCmdParam;
import cn.timer.api.bean.kqgl.UserAttendanceRel;
import cn.timer.api.bean.kqgl.UserEquiRelation;
import cn.timer.api.bean.yggl.YgglMainEmp;
......@@ -88,7 +81,6 @@ import cn.timer.api.dao.kqgl.AttendanceGroupMapper;
import cn.timer.api.dao.kqgl.AttendanceMachineMapper;
import cn.timer.api.dao.kqgl.AttendanceWeeklySchMapper;
import cn.timer.api.dao.kqgl.CalendarAlarmMapper;
import cn.timer.api.dao.kqgl.KqglAssoKqjglyMapper;
import cn.timer.api.dao.kqgl.PunchCardAddressMapper;
import cn.timer.api.dao.kqgl.PunchCardDetailsMapper;
import cn.timer.api.dao.kqgl.PunchCardWiFiMapper;
......@@ -98,15 +90,11 @@ import cn.timer.api.dao.kqgl.ShiftManagementMapper;
import cn.timer.api.dao.kqgl.SpecialDateMapper;
import cn.timer.api.dao.kqgl.UserAttendanceRelMapper;
import cn.timer.api.dao.kqgl.UserEquiRelationMapper;
import cn.timer.api.dao.kqjg.KqjgRealtimeEnrollDataMapper;
import cn.timer.api.dao.kqmk.KqglMainKqzMapper;
import cn.timer.api.dao.yggl.YgglMainEmpMapper;
import cn.timer.api.dto.kqgl.AttemacDto;
import cn.timer.api.dto.kqgl.MachinememberDto;
import cn.timer.api.dto.kqmk.AttqueryCriteriaDto;
import cn.timer.api.dto.kqmk.KqglMainKqzDto;
import cn.timer.api.utils.DateUtil;
import cn.timer.api.utils.ResponseResult;
import cn.timer.api.utils.Result;
import cn.timer.api.utils.ResultUtil;
import io.swagger.annotations.Api;
......@@ -156,16 +144,10 @@ public class AttController {
//打卡明细表
@Autowired
private PunchCardDetailsMapper punchcarddetailsservice;
//用户与设备关系表
@Autowired
private UserEquiRelationMapper userequirelationmapper;
@Autowired
private YgglMainEmpMapper ygglmainempmapper;
@Autowired
private SpecialDateMapper specialdateservice;
//日历提醒
......@@ -187,9 +169,7 @@ public class AttController {
@ApiOperationSupport(order = 1)
public Result<PageInfo<ShiftManagement>> getShiftDataList(@CurrentUser UserBean userBean,@ApiParam("当前页") @RequestParam(value = "pageNum", required = false, defaultValue = "1") Integer pageNum,
@ApiParam("每页条数") @RequestParam(value = "pageSize", required = false, defaultValue = "9999") Integer pageSize) {
int qyid = userBean.getOrgCode();//坏小孩【企业id】
PageHelper.startPage(pageNum, pageSize);
List<ShiftManagement> shiftList = shiftmanagementservice.selectByPrimaryByQyid(qyid);
PageInfo<ShiftManagement> pageInfo = new PageInfo<>(shiftList);
......@@ -203,7 +183,6 @@ public class AttController {
@ApiOperation(value = "新增班次信息", httpMethod = "POST", notes = "接口发布说明")
@ApiOperationSupport(order = 2)
public Result<ShiftManagement> ShiftInformation(@CurrentUser UserBean userBean,@RequestBody ShiftManagement shif) {
// int qyid = 2000021;//坏小孩123【企业id】
int qyid = userBean.getOrgCode();//坏小孩【企业id】
int userid = userBean.getEmpNum();//用户id
......@@ -1535,38 +1514,20 @@ public class AttController {
}
userequirelationmapper.insert(uskqj);
}
Integer orgCode = userBean.getOrgCode();
QueryWrapper<YgglMainEmp> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("org_code", orgCode).eq("emp_num", attser[u]);
YgglMainEmp yggluser = YgglMainEmp.builder().build().selectOne(queryWrapper);
user_id=attser[u];//
user_name=yggluser.getName();//
DevId=kqj.getCode();//考勤机--设备编码
if(user_id == null || DevId == null){
try {
throw new Exception("User_ID or DevId is null");
} catch (Exception e) {
e.printStackTrace();
}
}
if(user_name == null){
user_name = "";
}
JSONObject vResultJson = new JSONObject();
vResultJson.put("user_id", user_id);
vResultJson.put("user_name", user_name);
vResultJson.put("user_privilege", "USER");
String sFinal = vResultJson.toString();
String url = StaticVariable.mac_command;
YgglMainEmp yggluser = YgglMainEmp.builder().build().selectOne(new QueryWrapper<YgglMainEmp>().lambda().eq(YgglMainEmp::getOrgCode, userBean.getOrgCode()).eq(YgglMainEmp::getEmpNum, attser[u]));
String url = StaticVariable.mac_command+"/addUserName";
HttpHeaders headers = new HttpHeaders();
MultiValueMap<String, Object> params = new LinkedMultiValueMap<>();
params.add("cmd", "SET_USER_INFO");
params.add("devid", DevId);
params.add("json", sFinal);
params.add("devId", kqj.getCode());
params.add("userId", attser[u]);
params.add("userName", yggluser.getName());
RestTemplate restTemplate = new RestTemplate();
HttpEntity httpEntity = new HttpEntity(params, headers);
ResponseEntity<String> request = restTemplate.postForEntity(url, httpEntity, String.class);
System.out.println("|============修改(新增)=================== |");
System.err.print(request.getBody());
}
/*****************************************************************************/
}
......@@ -5022,53 +4983,53 @@ public class AttController {
/**
* 考勤机一键同步
*/
@GetMapping(value="/synchroni/{id}")
@ApiOperation(value = "考勤机一键同步", httpMethod = "GET", notes = "接口发布说明")
@ApiOperationSupport(order = 54)
public Result<AttemacDto> synchroni(@CurrentUser UserBean userBean,@PathVariable("id") Integer id) {
Integer orgCode = userBean.getOrgCode();
List<UserAttendanceRel> member = userattendancerelservice.selectAttNotMember(id,orgCode);
AttendanceMachine kqj = attendancemachineservice.selectByPrimaryKey(id);//查询考勤机“序列号”
for(UserAttendanceRel usmer:member) {
YgglMainEmp user = new LambdaQueryChainWrapper<YgglMainEmp>(ygglmainempmapper).eq(YgglMainEmp::getEmpNum, usmer.getUserid())
.eq(YgglMainEmp::getOrgCode, orgCode).one();
JSONObject vResultJson = new JSONObject();
vResultJson.put("user_id", usmer.getUserid());
vResultJson.put("user_name", user.getName());
vResultJson.put("user_privilege", "USER");
String sFinal = vResultJson.toString();
String url = StaticVariable.mac_command;
HttpHeaders headers = new HttpHeaders();
MultiValueMap<String, Object> params = new LinkedMultiValueMap<>();
params.add("cmd", "SET_USER_INFO");
params.add("devid", kqj.getCode());
params.add("json", sFinal);
RestTemplate restTemplate = new RestTemplate();
HttpEntity httpEntity = new HttpEntity(params, headers);
ResponseEntity<String> request = restTemplate.postForEntity(url, httpEntity, String.class);
//用户与设备关系(考勤机id-->用户id)
UserEquiRelation uskqj = new UserEquiRelation();
uskqj.setUserId(usmer.getUserid());//用户id
uskqj.setKqjid(kqj.getId());//设备id
uskqj.setType(1);//类型(类型 1:考勤机)
uskqj.setIsGly(0);
userequirelationmapper.insert(uskqj);
}
return ResultUtil.success("成功");
}
// @GetMapping(value="/synchroni/{id}")
// @ApiOperation(value = "考勤机一键同步", httpMethod = "GET", notes = "接口发布说明")
// @ApiOperationSupport(order = 54)
// public Result<AttemacDto> synchroni(@CurrentUser UserBean userBean,@PathVariable("id") Integer id) {
// Integer orgCode = userBean.getOrgCode();
//
// List<UserAttendanceRel> member = userattendancerelservice.selectAttNotMember(id,orgCode);
//
// AttendanceMachine kqj = attendancemachineservice.selectByPrimaryKey(id);//查询考勤机“序列号”
//
// for(UserAttendanceRel usmer:member) {
//
// YgglMainEmp user = new LambdaQueryChainWrapper<YgglMainEmp>(ygglmainempmapper).eq(YgglMainEmp::getEmpNum, usmer.getUserid())
// .eq(YgglMainEmp::getOrgCode, orgCode).one();
//
// JSONObject vResultJson = new JSONObject();
// vResultJson.put("user_id", usmer.getUserid());
// vResultJson.put("user_name", user.getName());
// vResultJson.put("user_privilege", "USER");
// String sFinal = vResultJson.toString();
//
// String url = StaticVariable.mac_command;
// HttpHeaders headers = new HttpHeaders();
// MultiValueMap<String, Object> params = new LinkedMultiValueMap<>();
// params.add("cmd", "SET_USER_INFO");
// params.add("devid", kqj.getCode());
// params.add("json", sFinal);
// RestTemplate restTemplate = new RestTemplate();
// HttpEntity httpEntity = new HttpEntity(params, headers);
// ResponseEntity<String> request = restTemplate.postForEntity(url, httpEntity, String.class);
//
//
//
// //用户与设备关系(考勤机id-->用户id)
// UserEquiRelation uskqj = new UserEquiRelation();
// uskqj.setUserId(usmer.getUserid());//用户id
// uskqj.setKqjid(kqj.getId());//设备id
// uskqj.setType(1);//类型(类型 1:考勤机)
// uskqj.setIsGly(0);
//
// userequirelationmapper.insert(uskqj);
//
// }
//
// return ResultUtil.success("成功");
// }
//
/**
* 获取报表汇总
*/
......
......@@ -18,6 +18,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
import cn.hutool.json.JSONObject;
import cn.timer.api.bean.kqgl.PunchCardDetails;
import cn.timer.api.bean.kqmk.KqglAssoBcsz;
import cn.timer.api.bean.kqmk.KqglAssoDkjl;
import cn.timer.api.bean.kqmk.KqglAssoDkmx;
......@@ -28,6 +29,7 @@ import cn.timer.api.bean.kqmk.KqglAssoZhoupaiban;
import cn.timer.api.bean.kqmk.KqglMainKqz;
import cn.timer.api.bean.yggl.YgglMainEmp;
import cn.timer.api.config.exception.CustomException;
import cn.timer.api.dao.kqmk.KqglAssoDkmxMapper;
import cn.timer.api.dao.kqmk.KqglAssoPbmxMapper;
import cn.timer.api.dao.kqmk.KqglMainKqzMapper;
import cn.timer.api.dto.kqmk.AttLateLate;
......@@ -49,6 +51,10 @@ public class ClockInController {
@Autowired
private KqglMainKqzMapper kqglmainkqzmapper;
//打卡明细表
@Autowired
private KqglAssoDkmxMapper kqglassodkmxmapper;
SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd");
SimpleDateFormat sdf2 = new SimpleDateFormat("EEE");
......@@ -90,7 +96,7 @@ public class ClockInController {
int dkmx = 0;
//查询打卡当天是否有记录
KqglAssoDkmx dkmc = KqglAssoDkmx.builder().build().selectOne(new QueryWrapper<KqglAssoDkmx>().lambda().eq(KqglAssoDkmx::getUserid, userid)
.gt(KqglAssoDkmx::getDksj, startDate).lt(KqglAssoDkmx::getDksj, endDate));
.ge(KqglAssoDkmx::getDksj, startDate).le(KqglAssoDkmx::getDksj, endDate));
AttendanceCardListDto attdate = MethodCall(qyid,userid,putime);
ClockCollectData clockt = new ClockCollectData();
long starttime1 = 0,starttime1ks = 0,starttime1js = 0,endtime1 = 0,endtime1ks = 0,endtime1js = 0,starttime2 = 0,starttime2ks = 0,starttime2js = 0,endtime2 = 0,endtime2ks = 0,endtime2js = 0,starttime3 = 0,starttime3ks = 0,starttime3js = 0,
......@@ -182,21 +188,29 @@ public class ClockInController {
dkmx = pcd.getId();
}else { //*****修改
dkmx = dkmc.getId();
KqglAssoDkmx pcd = KqglAssoDkmx.builder().build();
if((!("").equals(dkmc.getSbdk1()) || dkmc.getSbdk1() != null) && (("").equals(dkmc.getXbdk1()) || dkmc.getXbdk1() == null)){//下班1
int xbdk1jg = 0;
pcd.setId(dkmc.getId());
pcd.setXbdk1(time_);//下班1打卡时间
if(punchcardtime != 0){//有应打卡时间时
Long time = (time_ - punchcardtime)/1000/60;
if(time > 0){}else{xbdk1jg = Math.abs(Integer.valueOf(time.toString()));}//上班1打卡结果
if(time > 0){
pcd.setXbdk1jg(0);// 打卡结果
}else{
pcd.setXbdk1jg(Math.abs(Integer.valueOf(time.toString())));//上班1打卡结果
}
}
double gzsc = 0;
if(dkmc.getSbdk1() != null){
Long time = (time_ - dkmc.getSbdk1())/1000/60;
gzsc = Math.abs(Double.valueOf(time.toString()));//只打一次卡时计算工作时长
pcd.setGzsc(Math.abs(Double.valueOf(time.toString())));//只打一次卡时计算工作时长
}
kqglassodkmxmapper.updateByPrimaryKeySelective(pcd);//修改打卡记录
KqglAssoDkmx.builder().id(dkmc.getId()).xbdk1(time_).xbdk1jg(xbdk1jg).gzsc(gzsc).build().updateById();
}else if((!("").equals(dkmc.getSbdk1()) || dkmc.getSbdk1() != null) && (!("").equals(dkmc.getXbdk1()) || dkmc.getXbdk1() != null)
&& (("").equals(dkmc.getSbdk2()) || dkmc.getSbdk2() == null)){//上班2
int sbdk2jg = 0,yzcdsc = 0,yzcdcs = 0,kgcdcs = 0;
if(punchcardtime != 0){//有应打卡时间时
Long time = (time_ - punchcardtime)/1000/60;
......@@ -207,26 +221,44 @@ public class ClockInController {
yzcdsc = sbdk2jg - yzcd;
}
if(sbdk2jg > kgcdfzs) {kgcdcs++;}
KqglAssoDkmx.builder().id(dkmc.getId()).sbdk2(time_).sbdk2jg(sbdk2jg).yzcdcs(yzcdcs).yzcdsc(Double.valueOf(yzcdsc)).kgcdfzs(kgcdcs).build().updateById();
pcd.setId(dkmc.getId());
pcd.setSbdk2(time_);//上班1打卡时间
pcd.setSbdk2jg(sbdk2jg);
pcd.setYzcdcs(yzcdcs);
pcd.setYzcdsc(Double.valueOf(yzcdsc));
pcd.setKgcdfzs(kgcdcs);
kqglassodkmxmapper.updateByPrimaryKeySelective(pcd);//修改打卡记录
}else if((!("").equals(dkmc.getSbdk1()) || dkmc.getSbdk1() != null) && (!("").equals(dkmc.getXbdk1()) || dkmc.getXbdk1() != null)
&& (!("").equals(dkmc.getSbdk2()) || dkmc.getSbdk2() != null) && (("").equals(dkmc.getXbdk2()) || dkmc.getXbdk2() == null)){//下班2
int xbdk2jg = 0;
pcd.setId(dkmc.getId());
pcd.setXbdk2(time_);//下班1打卡时间
if(punchcardtime != 0){//有应打卡时间时
Long time = (time_ - punchcardtime)/1000/60;
if(time > 0){}else{xbdk2jg = Math.abs(Integer.valueOf(time.toString()));}
if(time > 0){
pcd.setXbdk2jg(0);// 打卡结果
}else{
pcd.setXbdk2jg(Math.abs(Integer.valueOf(time.toString())));
}
}
//班次为4次时,计算工作时长
double worktime = 0;
if(dkmc.getSbdk2() != null){
Long time = (time_ - dkmc.getSbdk2())/1000/60;
BigDecimal om = new BigDecimal(dkmc.getGzsc());
BigDecimal on = new BigDecimal(time);
worktime = Math.abs(om.add(on).doubleValue());
double worktime = Math.abs(om.add(on).doubleValue());
pcd.setGzsc(worktime);
}
KqglAssoDkmx.builder().id(dkmc.getId()).xbdk2(time_).xbdk2jg(xbdk2jg).gzsc(worktime).build().updateById();
kqglassodkmxmapper.updateByPrimaryKeySelective(pcd);//修改打卡记录
}else if((!("").equals(dkmc.getSbdk1()) || dkmc.getSbdk1() != null) && (!("").equals(dkmc.getXbdk1()) || dkmc.getXbdk1() != null)
&& (!("").equals(dkmc.getSbdk2()) || dkmc.getSbdk2() != null) && (!("").equals(dkmc.getXbdk2()) || dkmc.getXbdk2() != null)
&& (("").equals(dkmc.getSbdk3()) || dkmc.getSbdk3() == null)){//上班3
int sbdk3jg = 0,yzcdsc = 0,yzcdcs = 0,kgcdcs = 0;
if(punchcardtime != 0){//有应打卡时间时
Long time = (time_ - punchcardtime)/1000/60;
......@@ -237,27 +269,44 @@ public class ClockInController {
yzcdsc = sbdk3jg - yzcd;
}
if(sbdk3jg > kgcdfzs) {kgcdcs++;}
KqglAssoDkmx.builder().id(dkmc.getId()).sbdk3(time_).sbdk3jg(sbdk3jg).yzcdcs(yzcdcs).yzcdsc(Double.valueOf(yzcdsc)).kgcdfzs(kgcdcs).build().updateById();
pcd.setId(dkmc.getId());
pcd.setSbdk3(time_);//上班1打卡时间
pcd.setSbdk3jg(sbdk3jg);
pcd.setYzcdcs(yzcdcs);
pcd.setYzcdsc(Double.valueOf(yzcdsc));
pcd.setKgcdfzs(kgcdcs);
kqglassodkmxmapper.updateByPrimaryKeySelective(pcd);//修改打卡记录
}else if((!("").equals(dkmc.getSbdk1()) || dkmc.getSbdk1() != null) && (!("").equals(dkmc.getXbdk1()) || dkmc.getXbdk1() != null)
&& (!("").equals(dkmc.getSbdk2()) || dkmc.getSbdk2() != null) && (!("").equals(dkmc.getXbdk2()) || dkmc.getXbdk2() != null)
&& (!("").equals(dkmc.getSbdk3()) || dkmc.getSbdk3() != null) && (("").equals(dkmc.getXbdk3()) || dkmc.getXbdk3() == null)){//下班3
int xbdk3jg = 0;
pcd.setId(dkmc.getId());
pcd.setXbdk3(time_);//下班1打卡时间
if(punchcardtime != 0){//有应打卡时间时
Long time = (time_ - punchcardtime)/1000/60;
if(time > 0){}else{xbdk3jg = Math.abs(Integer.valueOf(time.toString()));}
if(time > 0){
pcd.setXbdk3jg(0);// 打卡结果
}else{
pcd.setXbdk3jg(Math.abs(Integer.valueOf(time.toString())));
}
}
//班次为6次时,计算工作时长
double worktime = 0;
if(dkmc.getSbdk3() != null){
Long time = (time_ - dkmc.getSbdk3())/1000/60;
BigDecimal om = new BigDecimal(dkmc.getGzsc());//第二次
BigDecimal on = new BigDecimal(time);
worktime = Math.abs(om.add(on).doubleValue());
double worktime = Math.abs(om.add(on).doubleValue());
pcd.setGzsc(worktime);
}
KqglAssoDkmx.builder().id(dkmc.getId()).xbdk3(time_).xbdk3jg(xbdk3jg).gzsc(worktime).build().updateById();
}
pcd.setId(dkmc.getId());
if(atttype <= 6){
KqglAssoDkmx.builder().id(dkmc.getId()).build().updateById();
int update = kqglassodkmxmapper.updateByPrimaryKeySelective(pcd);//修改打卡记录
}
}
......@@ -295,7 +344,8 @@ public class ClockInController {
}
String attdate_ = new SimpleDateFormat("yy-MM-dd").format(Double.valueOf(startDate));//转换打卡时间格式
long attime;
if(punchcardtime == 0 && !isRange){attime = new Date().getTime();}else{attime = punchcardtime;}// 考勤时间(应打卡时间)
// if(punchcardtime == 0 && !isRange){attime = new Date().getTime();}else{attime = punchcardtime;}// 考勤时间(应打卡时间)
if(punchcardtime == 0){attime = new Date().getTime();}else{attime = punchcardtime;}// 考勤时间(应打卡时间)
String remarks = "";
if(("1").equals(asVerifyMode)) {remarks = "考勤机指纹打卡";}else if(("20").equals(asVerifyMode)) {remarks = "考勤机人脸打卡";}else if(("40").equals(asVerifyMode)) {remarks = "考勤机掌纹打卡";}else if(("60").equals(asVerifyMode)) {remarks = "考勤机密码打卡";}
//cardtype--1:GPS,2:WIFI,3:考勤机
......
......@@ -36,8 +36,6 @@ import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.lang.Console;
import cn.timer.api.bean.kqgl.AttGroupBinPunchMode;
import cn.timer.api.bean.kqgl.AttendanceMachine;
import cn.timer.api.bean.kqgl.PunchCardDetails;
import cn.timer.api.bean.kqgl.PunchRecord;
import cn.timer.api.bean.kqgl.UserAttendanceRel;
......@@ -88,7 +86,6 @@ import cn.timer.api.dao.kqmk.KqglAssoYhkqzMapper;
import cn.timer.api.dao.kqmk.KqglAssoYhsbMapper;
import cn.timer.api.dao.kqmk.KqglAssoZhoupaibanMapper;
import cn.timer.api.dao.kqmk.KqglMainKqzMapper;
import cn.timer.api.dto.kqgl.AttemacDto;
import cn.timer.api.dto.kqmk.AttSchedulingDto;
import cn.timer.api.dto.kqmk.AttendanceAssistantDto;
import cn.timer.api.dto.kqmk.AttqueryCriteriaDto;
......@@ -98,10 +95,13 @@ import cn.timer.api.dto.kqmk.IndividualOvertimeRuleDto;
import cn.timer.api.dto.kqmk.KqglAssoLeaveRulesDto;
import cn.timer.api.dto.kqmk.KqglAssoOvertimeRulesDto;
import cn.timer.api.dto.kqmk.KqglAssoPbmxDto;
import cn.timer.api.dto.kqmk.KqglAssoRulesViceDto;
import cn.timer.api.dto.kqmk.KqglMainKqzDto;
import cn.timer.api.dto.kqmk.KqzAttendanceGroupSearchDto;
import cn.timer.api.dto.kqmk.LeaveTypeDto;
import cn.timer.api.dto.kqmk.MachinememberDto;
import cn.timer.api.dto.kqmk.ModifyEmployeeBalanceDto;
import cn.timer.api.dto.kqmk.OriginalRecordDto;
import cn.timer.api.dto.kqmk.SetConditionsDto;
import cn.timer.api.dto.kqmk.StartTimeRestDto;
import cn.timer.api.dto.kqmk.VacationInformationDto;
......@@ -111,7 +111,6 @@ import cn.timer.api.utils.Result;
import cn.timer.api.utils.ResultUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import net.sf.json.JSONObject;
@Api(tags = "3.0[1]考勤模块")
@RestController
......@@ -125,6 +124,10 @@ public class TimeCardController {
@Autowired
private KqglAssOvertimeViceMapper kqglassovertimevicemapper;
//用户和考勤组关系
@Autowired
private UserAttendanceRelMapper userattendancerelmapper;
/**
* 查询列表-获取班次数据-分页
*/
......@@ -356,7 +359,7 @@ public class TimeCardController {
for(KqglAssoLeaveRules rul : ruless){
KqglAssoLeaveRules vice = KqglAssoLeaveRules.builder().name(rul.getName()).company(rul.getCompany()).leaveType(rul.getLeaveType())
.apply(rul.getApply()).createTime(new Date().getTime()).createUserid(userBean.getEmpNum()).orgCode(userBean.getOrgCode())
.isOpen(rul.getIsOpen()).leaveBalance(rul.getLeaveBalance()).build();
.isOpen(rul.getIsOpen()).leaveBalance(rul.getLeaveBalance()).rulesType(rul.getRulesType()).build();
rullist.add(vice);
}
if(rullist.size() > 0) {
......@@ -392,13 +395,18 @@ public class TimeCardController {
KqglAssoLeaveBalance.builder().build().delete(new QueryWrapper<KqglAssoLeaveBalance>().lambda().eq(KqglAssoLeaveBalance::getLeaveRulesId, id)
.eq(KqglAssoLeaveBalance :: getOrgCode, userBean.getOrgCode()));
List<YgglMainEmp> yggl = YgglMainEmp.builder().build().selectList(new QueryWrapper<YgglMainEmp>().lambda().eq(YgglMainEmp::getOrgCode, userBean.getOrgCode()));
if(leaverules.getLeaveBalance() == 1) {//假期余额 0:关(该项余额为“不限余额”);1:开(该项余额为“0”)
//该项公司员工余额为“0”
List<YgglMainEmp> yggl = YgglMainEmp.builder().build().selectList(new QueryWrapper<YgglMainEmp>().lambda().eq(YgglMainEmp::getOrgCode, userBean.getOrgCode()));
for(YgglMainEmp ye:yggl) {
KqglAssoLeaveBalance.builder().leaveRulesId(id).userid(ye.getEmpNum()).modifyAction(1).balanceDays("+0")
.reason("系统按照规则自动").modifyUserid(userBean.getEmpNum()).modifyTimer(new Date().getTime()).orgCode(userBean.getOrgCode()).isAutomatic(1).modifyNumber(1).build().insert();//员工假期余额
}
}else {
for(YgglMainEmp ye:yggl) {
KqglAssoLeaveBalance.builder().leaveRulesId(id).userid(ye.getEmpNum()).modifyAction(1).balanceDays("-1-1")
.reason("不限制余额").modifyUserid(userBean.getEmpNum()).modifyTimer(new Date().getTime()).orgCode(userBean.getOrgCode()).isAutomatic(1).modifyNumber(1).build().insert();//员工假期余额
}
}
List<KqglAssoRulesVice> vices = new ArrayList<KqglAssoRulesVice>();
String[] rest = leaverules.getRange();
......@@ -445,7 +453,8 @@ public class TimeCardController {
VacationInformationDto overrule = VacationInformationDto.builder().build();
KqglAssoLeaveRules rules = KqglAssoLeaveRules.builder().id(id).build().selectById();
overrule.setRules(rules);
List<KqglAssoRulesVice> vice = new LambdaQueryChainWrapper<KqglAssoRulesVice>(kqglassorulesvicemapper).eq(KqglAssoRulesVice::getLeaveRulesId, id).list();
List<KqglAssoRulesViceDto> vice = kqglassorulesvicemapper.leaveRulesIdload(id);
overrule.setRange(vice);
return ResultUtil.data(overrule,"操作成功!");
}
......@@ -472,18 +481,15 @@ public class TimeCardController {
@ApiOperation(value = "考勤机一键同步", httpMethod = "GET", notes = "接口发布说明")
public Result<Object> SynchronizationTime(@CurrentUser UserBean userBean,@PathVariable("code") String code) {
JSONObject vResultJson = new JSONObject();
vResultJson.put("devId", code);
String sFinal = vResultJson.toString();
String url = StaticVariable.mac_command+"/setTime";
HttpHeaders headers = new HttpHeaders();
MultiValueMap<String, Object> params = new LinkedMultiValueMap<>();
params.add("json", sFinal);
params.add("devId", code);
RestTemplate restTemplate = new RestTemplate();
HttpEntity httpEntity = new HttpEntity(params, headers);
try {
ResponseEntity<String> request = restTemplate.postForEntity(url, httpEntity, String.class);
System.err.print(request.getBody());
} catch (RestClientException e) {
System.err.println("提示:考勤机服务出错");
return ResultUtil.success("失败");
......@@ -502,20 +508,17 @@ public class TimeCardController {
KqglAssoKqj kqj = KqglAssoKqj.builder().id(kqjid).build().selectById();//查询考勤机“序列号”
for(int a=0;a<xgyh.length;a++){
JSONObject vResultJson = new JSONObject();
vResultJson.put("devId", kqj.getCode());
vResultJson.put("userId", xgyh[a]);
vResultJson.put("privilege", 1);
String sFinal = vResultJson.toString();
String url = StaticVariable.mac_command+"/addUserPrivilege";
HttpHeaders headers = new HttpHeaders();
MultiValueMap<String, Object> params = new LinkedMultiValueMap<>();
params.add("json", sFinal);
params.add("devId", kqj.getCode());
params.add("userId", xgyh[a]);
params.add("privilege", 1);
RestTemplate restTemplate = new RestTemplate();
HttpEntity httpEntity = new HttpEntity(params, headers);
try {
ResponseEntity<String> request = restTemplate.postForEntity(url, httpEntity, String.class);
System.err.print(request.getBody());
} catch (RestClientException e) {
System.err.println("提示:考勤机服务出错");
return ResultUtil.success("失败");
......@@ -535,20 +538,18 @@ public class TimeCardController {
for(int a=0;a<xgyh.length;a++){
JSONObject vResultJson = new JSONObject();
vResultJson.put("devId", kqj.getCode());
vResultJson.put("userId", xgyh[a]);
vResultJson.put("privilege", 2);
String sFinal = vResultJson.toString();
String url = StaticVariable.mac_command+"/addUserPrivilege";
HttpHeaders headers = new HttpHeaders();
MultiValueMap<String, Object> params = new LinkedMultiValueMap<>();
params.add("json", sFinal);
params.add("devId", kqj.getCode());
params.add("userId", xgyh[a]);
params.add("privilege", 2);
RestTemplate restTemplate = new RestTemplate();
HttpEntity httpEntity = new HttpEntity(params, headers);
try {
ResponseEntity<String> request = restTemplate.postForEntity(url, httpEntity, String.class);
System.err.print(request.getBody());
} catch (RestClientException e) {
System.err.println("提示:考勤机服务出错");
return ResultUtil.success("失败");
......@@ -579,19 +580,16 @@ public class TimeCardController {
if(!kqglassokqj.insert())
return ResultUtil.error("操作失败--新增考勤机");
JSONObject vResultJson = new JSONObject();
vResultJson.put("devId", kqglassokqj.getCode());
vResultJson.put("orgCode", userBean.getOrgCode());
String sFinal = vResultJson.toString();
String url = StaticVariable.mac_command+"/addDev";
HttpHeaders headers = new HttpHeaders();
MultiValueMap<String, Object> params = new LinkedMultiValueMap<>();
params.add("json", sFinal);
params.add("orgCode", kqglassokqj.getType());
params.add("devId", kqglassokqj.getCode());
RestTemplate restTemplate = new RestTemplate();
HttpEntity httpEntity = new HttpEntity(params, headers);
try {
ResponseEntity<String> request = restTemplate.postForEntity(url, httpEntity, String.class);
System.err.print(request.getBody());
} catch (RestClientException e) {
System.err.println("提示:考勤机服务出错");
return ResultUtil.success("失败");
......@@ -776,8 +774,9 @@ public class TimeCardController {
@ApiOperation(value = "29:根据 组织机构代码获取员工假期余额表头", httpMethod = "GET", notes = "接口发布说明")
@ApiOperationSupport(order = 29)
public Result<Object> BalanceHeader(@CurrentUser UserBean userBean) {
List<KqglAssoLeaveRules> balheas = new LambdaQueryChainWrapper<KqglAssoLeaveRules>(kqglassoleaverulesmapper).eq(KqglAssoLeaveRules :: getOrgCode,userBean.getOrgCode())
.eq(KqglAssoLeaveRules :: getLeaveType, 2).or().eq(KqglAssoLeaveRules :: getIsOpen, 1).list();
// List<KqglAssoLeaveRules> balheas = new LambdaQueryChainWrapper<KqglAssoLeaveRules>(kqglassoleaverulesmapper).eq(KqglAssoLeaveRules :: getOrgCode,userBean.getOrgCode())
// .eq(KqglAssoLeaveRules :: getLeaveType, 2).or().eq(KqglAssoLeaveRules :: getIsOpen, 1).list();
List<KqglAssoLeaveRules> balheas = kqglassoleaverulesmapper.selHeaderdata(userBean.getOrgCode(), 2, 1);
return ResultUtil.data(balheas, "操作成功!");
}
......@@ -939,29 +938,28 @@ public class TimeCardController {
@ApiOperationSupport(order = 39)
public Result<Integer> DelAttendanceGroup(@CurrentUser UserBean userBean,@PathVariable("id") Integer id) {
if(KqglMainKqz.builder().id(id).build().deleteById()) {
// List<UserAttendanceRel> attusers = userattendancerelservice.selectAttendanceOfficerByKqzid(id, userBean.getOrgCode());//该考勤组人数
// //该考勤组所绑定的考勤机
// List<KqglAssoKqzdkfs> kqjs = kqglassokqzdkfsmapper.selectList(new QueryWrapper<KqglAssoKqzdkfs>().lambda().eq(KqglAssoKqzdkfs::getKqzId, id).eq(KqglAssoKqzdkfs::getType, 1));
// String DevId = "";
// for(KqglAssoKqzdkfs abp:kqjs) {
// KqglAssoKqj kqj = KqglAssoKqj.builder().id(abp.getDkfsid()).build().selectById();//查询考勤机“序列号”
// DevId = kqj.getCode();
// for(UserAttendanceRel user:attusers) {
// String user_id = user.getEmpnum();//"1692";//要删除的考勤组里面用户ID
// JSONObject vResultJson = new JSONObject();
// vResultJson.put("devId", DevId);
// vResultJson.put("userId", user_id);
// String sFinal = vResultJson.toString();
// String url = StaticVariable.mac_command+"/deleteUser";
// HttpHeaders headers = new HttpHeaders();
// MultiValueMap<String, Object> params = new LinkedMultiValueMap<>();
// params.add("json", sFinal);
// RestTemplate restTemplate = new RestTemplate();
// HttpEntity httpEntity = new HttpEntity(params, headers);
// ResponseEntity<String> request = restTemplate.postForEntity(url, httpEntity, String.class);
// }
// }
// userequirelationmapper.deleteBykqzid(id);
List<UserAttendanceRel> attusers = userattendancerelmapper.selectAttendanceOfficerByKqzid(id, userBean.getOrgCode());//该考勤组人数
//该考勤组所绑定的考勤机
List<KqglAssoKqzdkfs> kqjs = kqglassokqzdkfsmapper.selectList(new QueryWrapper<KqglAssoKqzdkfs>().lambda().eq(KqglAssoKqzdkfs::getKqzId, id).eq(KqglAssoKqzdkfs::getType, 1));
String DevId = "";
for(KqglAssoKqzdkfs abp:kqjs) {
KqglAssoKqj kqj = KqglAssoKqj.builder().id(abp.getDkfsid()).build().selectById();//查询考勤机“序列号”
DevId = kqj.getCode();
for(UserAttendanceRel user:attusers) {
String user_id = user.getEmpnum();//"1692";//要删除的考勤组里面用户ID
String url = StaticVariable.mac_command+"/deleteUser";
HttpHeaders headers = new HttpHeaders();
MultiValueMap<String, Object> params = new LinkedMultiValueMap<>();
params.add("devId", DevId);
params.add("userId", user_id);
RestTemplate restTemplate = new RestTemplate();
HttpEntity httpEntity = new HttpEntity(params, headers);
ResponseEntity<String> request = restTemplate.postForEntity(url, httpEntity, String.class);
System.err.print(request.getBody());
}
}
userequirelationmapper.deleteBykqzid(id);
//删除考勤组绑定的打卡方式
KqglAssoKqzdkfs.builder().build().delete(new QueryWrapper<KqglAssoKqzdkfs>().lambda().eq(KqglAssoKqzdkfs::getKqzId, id));
......@@ -1007,6 +1005,7 @@ public class TimeCardController {
.isDqtx(attass.getAttRemind()).txry(String.join(",",attass.getAttRemindUserids())).txfs(attass.getAdvanceDays()).txxhts(attass.getRemCycleDays())
.txsjTime(attass.getReminderTime()).tsfs(String.join(",",attass.getPromptingMode())).isWpbsdk(attass.getAttRemind()).kqkssjTime(attass.getNewAttTime())
.zsgzsc(attass.getLeastworkTime()).zcgzsc(attass.getNormalWorkTime()).jbzdsc(attass.getMaxOvertimeTime()).overtimeRulesId(attass.getOvertimeRulesId()).build();
// if (!attgro.insertOrUpdate())
if (!attgro.insert())
return ResultUtil.error("操作失败--新增考勤组");
......@@ -1014,6 +1013,9 @@ public class TimeCardController {
Integer attid = attgro.getId();
Console.log("新增--考勤组id: " + attid);
//添加加班规则
KqglAssoOvertimeRange.builder().overtimeRulesId(attass.getOvertimeRulesId()).attgroupId(attid).build().insert();
List<KqglAssoKqzdkfs> kqzdkfslist = new ArrayList<KqglAssoKqzdkfs>();
String[] attmac = attass.getAttmachines();//考勤机
if(attmac.length>0){
......@@ -1057,24 +1059,30 @@ public class TimeCardController {
KqglAssoKqj kqj = KqglAssoKqj.builder().id(abp.getDkfsid()).build().selectById();
KqglAssoYhsb kqjry = KqglAssoYhsb.builder().build().selectOne(new QueryWrapper<KqglAssoYhsb>().lambda().eq(KqglAssoYhsb::getUserId, Integer.valueOf(attser[u])).eq(KqglAssoYhsb::getKqjid, kqj.getId()));
if(kqjry == null) {
KqglAssoYhsb uskqj = KqglAssoYhsb.builder().userId(Integer.valueOf(attser[u])).kqjid(kqj.getId()).type(1).isGly(kqjry.getIsGly()).build();
KqglAssoYhsb uskqj = KqglAssoYhsb.builder().userId(Integer.valueOf(attser[u])).kqjid(kqj.getId()).type(1).build();
UserEquiRelation isgly = userequirelationmapper.selectByuserId(Integer.valueOf(attser[u]));
if(isgly != null) {
uskqj.setIsGly(isgly.getIsGly());
}else {
uskqj.setIsGly(0);
}
if (!uskqj.insert())
return ResultUtil.error("操作失败--新增用户与设备关系");
YgglMainEmp yggluser = YgglMainEmp.builder().build().selectOne(new QueryWrapper<YgglMainEmp>().lambda().eq(YgglMainEmp::getOrgCode, userBean.getOrgCode()).eq(YgglMainEmp::getEmpNum, attser[u]));
JSONObject vResultJson = new JSONObject();
vResultJson.put("devId", kqj.getCode());
vResultJson.put("userId", attser[u]);
vResultJson.put("userName", yggluser.getName());
String sFinal = vResultJson.toString();
String url = StaticVariable.mac_command+"/addUserName";
HttpHeaders headers = new HttpHeaders();
MultiValueMap<String, Object> params = new LinkedMultiValueMap<>();
params.add("json", sFinal);
params.add("devId", kqj.getCode());
params.add("userId", attser[u]);
params.add("userName", yggluser.getName());
RestTemplate restTemplate = new RestTemplate();
HttpEntity httpEntity = new HttpEntity(params, headers);
ResponseEntity<String> request = restTemplate.postForEntity(url, httpEntity, String.class);
System.err.print(request.getBody());
}
}
}
......@@ -1187,7 +1195,7 @@ public class TimeCardController {
//打卡记录
@Autowired
private PunchRecordMapper punchrecordservice;
private PunchRecordMapper punchrecordmapper;
//打卡明细表
@Autowired
private PunchCardDetailsMapper punchcarddetailsservice;
......@@ -1313,7 +1321,7 @@ public class TimeCardController {
String[] str= new String[3];
for(int y=0;y<mapucalist.size();y++){
if(y == 0){//上班
PunchRecord mindata = punchrecordservice.selectByPrimaryKey(minAttid.getId());//上班
PunchRecord mindata = punchrecordmapper.selectByPrimaryKey(minAttid.getId());//上班
PunchRecord record = new PunchRecord();
record.setId(mapucalist.get(y).getId());
Long time = (mindata.getDktime() - sbdk1)/1000/60;
......@@ -1326,7 +1334,7 @@ public class TimeCardController {
}
record.setAttime(sbdk1);
record.setBcid(banci.getId());//班次id
punchrecordservice.updateByPrimaryKeySelective(record);
punchrecordmapper.updateByPrimaryKeySelective(record);
}
if(y == 1 || y == 2){
PunchRecord record = new PunchRecord();
......@@ -1356,9 +1364,9 @@ public class TimeCardController {
str[1] = String.valueOf(mapucalist.get(y).getId());
}
record.setBcid(banci.getId());//班次id
punchrecordservice.updateByPrimaryKeySelective(record);
punchrecordmapper.updateByPrimaryKeySelective(record);
}
PunchRecord maxdata = punchrecordservice.selectByPrimaryKey(maxAttid.getId());//下班
PunchRecord maxdata = punchrecordmapper.selectByPrimaryKey(maxAttid.getId());//下班
if(mapucalist.get(y).getId() == maxdata.getId()){//下班
PunchRecord record = new PunchRecord();
record.setId(maxdata.getId());
......@@ -1374,7 +1382,7 @@ public class TimeCardController {
record.setSort(4);
record.setAttime(xbdk2);
record.setBcid(banci.getId());//班次id
punchrecordservice.updateByPrimaryKeySelective(record);
punchrecordmapper.updateByPrimaryKeySelective(record);
str[2] = String.valueOf(maxdata.getId());
}
......@@ -1386,11 +1394,11 @@ public class TimeCardController {
record.setResults(0);// 打卡结果
record.setAttime(mapucalist.get(y).getDktime());//上班应打卡时间
record.setBcid(banci.getId());//班次id
punchrecordservice.updateByPrimaryKeySelective(record);
punchrecordmapper.updateByPrimaryKeySelective(record);
}
}
//修改打卡明细
PunchRecord mindata = punchrecordservice.selectByPrimaryKey(minAttid.getId());//上班
PunchRecord mindata = punchrecordmapper.selectByPrimaryKey(minAttid.getId());//上班
PunchCardDetails record = new PunchCardDetails();
record.setId(dkmxid);//需修改的明细id
record.setSbdk1(mindata.getDktime());
......@@ -1409,7 +1417,7 @@ public class TimeCardController {
record.setGzsc(Double.valueOf("0"));
punchcarddetailsservice.ModifyPunchDetails(record);
for(int t=0;t<str.length;t++){
PunchRecord dtdkmx = punchrecordservice.selectByPrimaryKey(Integer.valueOf(str[t]));//单条打卡明细
PunchRecord dtdkmx = punchrecordmapper.selectByPrimaryKey(Integer.valueOf(str[t]));//单条打卡明细
PunchCardDetails dkmx = new PunchCardDetails();
dkmx.setId(dkmxid);//需修改的明细id
......@@ -1443,8 +1451,8 @@ public class TimeCardController {
}
record.setAttime(sbdk1);//当天应打卡时间
record.setBcid(banci.getId());//班次id
punchrecordservice.updateByPrimaryKeySelective(record);
mindataone = punchrecordservice.selectByPrimaryKey(minAttid.getId());//上班
punchrecordmapper.updateByPrimaryKeySelective(record);
mindataone = punchrecordmapper.selectByPrimaryKey(minAttid.getId());//上班
PunchCardDetails dan = new PunchCardDetails();
dan.setId(dkmxid);//需修改的明细id
dan.setSbdk1(mindataone.getDktime());
......@@ -1468,8 +1476,8 @@ public class TimeCardController {
}
record.setAttime(xbdk1);//当天应打卡时间
record.setBcid(banci.getId());//班次id
punchrecordservice.updateByPrimaryKeySelective(record);
PunchRecord dtdkmx = punchrecordservice.selectByPrimaryKey(mapucalist.get(1).getId());//单条打卡明细
punchrecordmapper.updateByPrimaryKeySelective(record);
PunchRecord dtdkmx = punchrecordmapper.selectByPrimaryKey(mapucalist.get(1).getId());//单条打卡明细
pcd.setXbdk1(dtdkmx.getDktime());
pcd.setXbdk1jg(dtdkmx.getResults());
}
......@@ -1487,8 +1495,8 @@ public class TimeCardController {
}
record.setAttime(sbdk2);//当天应打卡时间
record.setBcid(banci.getId());//班次id
punchrecordservice.updateByPrimaryKeySelective(record);
PunchRecord dtdkmx = punchrecordservice.selectByPrimaryKey(mapucalist.get(2).getId());//单条打卡明细
punchrecordmapper.updateByPrimaryKeySelective(record);
PunchRecord dtdkmx = punchrecordmapper.selectByPrimaryKey(mapucalist.get(2).getId());//单条打卡明细
pcd.setSbdk2(dtdkmx.getDktime());
pcd.setSbdk2jg(dtdkmx.getResults());
}
......@@ -1506,8 +1514,8 @@ public class TimeCardController {
}
record.setAttime(xbdk2);//当天应打卡时间
record.setBcid(banci.getId());//班次id
punchrecordservice.updateByPrimaryKeySelective(record);
PunchRecord dtdkmx = punchrecordservice.selectByPrimaryKey(maxAttid.getId());//单条打卡明细
punchrecordmapper.updateByPrimaryKeySelective(record);
PunchRecord dtdkmx = punchrecordmapper.selectByPrimaryKey(maxAttid.getId());//单条打卡明细
pcd.setXbdk2(dtdkmx.getDktime());
pcd.setXbdk2jg(dtdkmx.getResults());
}
......@@ -1519,7 +1527,7 @@ public class TimeCardController {
String[] str= new String[5];
for(int y=0;y<mapucalist.size();y++){
if(y == 0){//上班
PunchRecord mindata = punchrecordservice.selectByPrimaryKey(minAttid.getId());//上班
PunchRecord mindata = punchrecordmapper.selectByPrimaryKey(minAttid.getId());//上班
PunchRecord record = new PunchRecord();
record.setId(mapucalist.get(y).getId());
Long time = (mindata.getDktime() - sbdk1)/1000/60;
......@@ -1532,7 +1540,7 @@ public class TimeCardController {
}
record.setAttime(sbdk1);
record.setBcid(banci.getId());//班次id
punchrecordservice.updateByPrimaryKeySelective(record);
punchrecordmapper.updateByPrimaryKeySelective(record);
}
if(y == 1 || y == 2 || y == 3 || y == 4){
PunchRecord record = new PunchRecord();
......@@ -1589,9 +1597,9 @@ public class TimeCardController {
}
}
record.setBcid(banci.getId());//班次id
punchrecordservice.updateByPrimaryKeySelective(record);
punchrecordmapper.updateByPrimaryKeySelective(record);
}
PunchRecord maxdata = punchrecordservice.selectByPrimaryKey(maxAttid.getId());//下班
PunchRecord maxdata = punchrecordmapper.selectByPrimaryKey(maxAttid.getId());//下班
if(mapucalist.get(y).getId() == maxdata.getId()){//下班
PunchRecord record = new PunchRecord();
record.setId(maxdata.getId());
......@@ -1607,7 +1615,7 @@ public class TimeCardController {
record.setSort(6);
record.setAttime(xbdk3);
record.setBcid(banci.getId());//班次id
punchrecordservice.updateByPrimaryKeySelective(record);
punchrecordmapper.updateByPrimaryKeySelective(record);
str[4] = String.valueOf(maxdata.getId());
}
......@@ -1619,11 +1627,11 @@ public class TimeCardController {
record.setResults(0);// 打卡结果
record.setAttime(mapucalist.get(y).getDktime());//上班应打卡时间
record.setBcid(banci.getId());//班次id
punchrecordservice.updateByPrimaryKeySelective(record);
punchrecordmapper.updateByPrimaryKeySelective(record);
}
}
//修改打卡明细
PunchRecord mindata = punchrecordservice.selectByPrimaryKey(minAttid.getId());//上班
PunchRecord mindata = punchrecordmapper.selectByPrimaryKey(minAttid.getId());//上班
PunchCardDetails record = new PunchCardDetails();
record.setId(dkmxid);//需修改的明细id
record.setSbdk1(mindata.getDktime());
......@@ -1642,7 +1650,7 @@ public class TimeCardController {
record.setGzsc(Double.valueOf("0"));
punchcarddetailsservice.ModifyPunchDetails(record);
for(int t=0;t<str.length;t++){
PunchRecord dtdkmx = punchrecordservice.selectByPrimaryKey(Integer.valueOf(str[t]));//单条打卡明细
PunchRecord dtdkmx = punchrecordmapper.selectByPrimaryKey(Integer.valueOf(str[t]));//单条打卡明细
PunchCardDetails dkmx = new PunchCardDetails();
dkmx.setId(dkmxid);//需修改的明细id
if(t == 0){
......@@ -1681,8 +1689,8 @@ public class TimeCardController {
}
record.setAttime(sbdk1);//当天应打卡时间
record.setBcid(banci.getId());//班次id
punchrecordservice.updateByPrimaryKeySelective(record);
mindataone = punchrecordservice.selectByPrimaryKey(minAttid.getId());//上班
punchrecordmapper.updateByPrimaryKeySelective(record);
mindataone = punchrecordmapper.selectByPrimaryKey(minAttid.getId());//上班
PunchCardDetails dan = new PunchCardDetails();
dan.setId(dkmxid);//需修改的明细id
dan.setSbdk1(mindataone.getDktime());
......@@ -1706,8 +1714,8 @@ public class TimeCardController {
}
record.setAttime(xbdk1);//当天应打卡时间
record.setBcid(banci.getId());//班次id
punchrecordservice.updateByPrimaryKeySelective(record);
PunchRecord dtdkmx = punchrecordservice.selectByPrimaryKey(mapucalist.get(1).getId());//单条打卡明细
punchrecordmapper.updateByPrimaryKeySelective(record);
PunchRecord dtdkmx = punchrecordmapper.selectByPrimaryKey(mapucalist.get(1).getId());//单条打卡明细
pcd.setXbdk1(dtdkmx.getDktime());
pcd.setXbdk1jg(dtdkmx.getResults());
}
......@@ -1725,8 +1733,8 @@ public class TimeCardController {
}
record.setAttime(sbdk2);//当天应打卡时间
record.setBcid(banci.getId());//班次id
punchrecordservice.updateByPrimaryKeySelective(record);
PunchRecord dtdkmx = punchrecordservice.selectByPrimaryKey(mapucalist.get(2).getId());//单条打卡明细
punchrecordmapper.updateByPrimaryKeySelective(record);
PunchRecord dtdkmx = punchrecordmapper.selectByPrimaryKey(mapucalist.get(2).getId());//单条打卡明细
pcd.setSbdk2(dtdkmx.getDktime());
pcd.setSbdk2jg(dtdkmx.getResults());
}
......@@ -1744,8 +1752,8 @@ public class TimeCardController {
}
record.setAttime(xbdk2);//当天应打卡时间
record.setBcid(banci.getId());//班次id
punchrecordservice.updateByPrimaryKeySelective(record);
PunchRecord dtdkmx = punchrecordservice.selectByPrimaryKey(mapucalist.get(3).getId());//单条打卡明细
punchrecordmapper.updateByPrimaryKeySelective(record);
PunchRecord dtdkmx = punchrecordmapper.selectByPrimaryKey(mapucalist.get(3).getId());//单条打卡明细
pcd.setXbdk2(dtdkmx.getDktime());
pcd.setXbdk2jg(dtdkmx.getResults());
}
......@@ -1763,8 +1771,8 @@ public class TimeCardController {
}
record.setAttime(sbdk3);//当天应打卡时间
record.setBcid(banci.getId());//班次id
punchrecordservice.updateByPrimaryKeySelective(record);
PunchRecord dtdkmx = punchrecordservice.selectByPrimaryKey(mapucalist.get(4).getId());//单条打卡明细
punchrecordmapper.updateByPrimaryKeySelective(record);
PunchRecord dtdkmx = punchrecordmapper.selectByPrimaryKey(mapucalist.get(4).getId());//单条打卡明细
pcd.setSbdk3(dtdkmx.getDktime());
pcd.setSbdk3jg(dtdkmx.getResults());
......@@ -1783,8 +1791,8 @@ public class TimeCardController {
}
record.setAttime(xbdk3);//当天应打卡时间
record.setBcid(banci.getId());//班次id
punchrecordservice.updateByPrimaryKeySelective(record);
PunchRecord dtdkmx = punchrecordservice.selectByPrimaryKey(maxAttid.getId());//单条打卡明细
punchrecordmapper.updateByPrimaryKeySelective(record);
PunchRecord dtdkmx = punchrecordmapper.selectByPrimaryKey(maxAttid.getId());//单条打卡明细
pcd.setXbdk3(dtdkmx.getDktime());
pcd.setXbdk3jg(dtdkmx.getResults());
}
......@@ -1849,6 +1857,60 @@ public class TimeCardController {
return ResultUtil.data(pageAs, listAs, "操作成功!");
}
/**
* 根据用户id和假期id查询余额具体数据
*/
@PostMapping(value = "/modify_employee_balance")
@ApiOperation(value = "根据用户id和假期id查询余额具体数据", httpMethod = "POST", notes = "接口发布说明")
// @ApiOperationSupport(order = 45)
public Result<Object> ModifyEmployeeBalance(@RequestBody ModifyEmployeeBalanceDto bala) {
List<KqglAssoLeaveBalance> ballist = kqglassoleavebalancemapper.selectList(new QueryWrapper<KqglAssoLeaveBalance>().lambda().eq(KqglAssoLeaveBalance::getLeaveRulesId, bala.getLeaverulesid()).eq(KqglAssoLeaveBalance::getUserid, bala.getEmpnum()));
return ResultUtil.data(ballist,"操作成功!");
}
/**
* 考勤原始记录-根据 模糊 + 高級查詢-分页
*/
@PostMapping(value = "/attendancecalendar")
@ApiOperation(value = "考勤原始记录-根据 模糊 + 高級查詢-分页", httpMethod = "POST", notes = "接口发布说明")
@ApiOperationSupport(order = 34)
public Result<Object> AttendanceCalendar(@CurrentUser UserBean userBean, @Validated @RequestBody OriginalRecordDto originalrecorddto){
IPage<PunchRecord> page = new Page<PunchRecord>(
originalrecorddto.getCurrentPage() == null ? 1 : originalrecorddto.getCurrentPage(),
originalrecorddto.getTotalPage() == null ? 10 : originalrecorddto.getTotalPage());
originalrecorddto.setQyid(userBean.getOrgCode());
IPage<PunchRecord> pageAs = punchrecordmapper.QueryOriginalRecord(page, originalrecorddto);
List<PunchRecord> listAs = pageAs.getRecords();
return ResultUtil.data(pageAs, listAs, "操作成功!");
}
/**
* 获取考勤组所需加班规则
*/
@GetMapping(value="/attovertimerules")
@ApiOperation(value = "获取考勤组所需加班规则", httpMethod = "GET", notes = "接口发布说明")
@ApiOperationSupport(order = 15)
public Result<Object> getAttOvertimeRules(@CurrentUser UserBean userBean){
List<KqglAssoOvertimeRules> attoverrul = new LambdaQueryChainWrapper<KqglAssoOvertimeRules>(kqglassoovertimerulesmapper).eq(KqglAssoOvertimeRules::getOrgCode, userBean.getOrgCode()).list();
return ResultUtil.data(attoverrul,"操作成功!");
}
// @GetMapping(value = "/summary_report")
// @ApiOperation(value = "考勤汇总报表(暂时不用)", httpMethod = "GET", notes = "接口发布说明")
// public Result<Object> attendance_summary_report() {
// Map<String, Object> map = new HashMap<String, Object>();
//
// return ResultUtil.data(map);
// }
/**************************/
/**
* 查询列表-加班补偿方式
......
......@@ -51,13 +51,13 @@ import cn.timer.api.utils.DateUtil;
/**
* @author lal
*
* 考勤报表汇总数据
*/
@Component
@Lazy
public class AttendanceTaskTiming implements SchedulingConfigurer {
private static final SimpleDateFormat dateFormat = new SimpleDateFormat("HH:mm:ss");
// private static final SimpleDateFormat dateFormat = new SimpleDateFormat("HH:mm:ss");
static String tablename = null;
@Autowired
......@@ -125,7 +125,7 @@ public class AttendanceTaskTiming implements SchedulingConfigurer {
//逻辑
if(implement) {
System.err.println("当前时间:" + dateFormat.format(new Date()));
// System.err.println("时间:" + dateFormat.format(new Date()));
Calendar c = Calendar.getInstance();
c.add(Calendar.MONTH, 0);
......@@ -148,8 +148,8 @@ public class AttendanceTaskTiming implements SchedulingConfigurer {
KqglAssoMonthPunchSummary.builder().build().delete(new QueryWrapper<KqglAssoMonthPunchSummary>().lambda().eq(KqglAssoMonthPunchSummary::getBelongYear, year).eq(KqglAssoMonthPunchSummary::getBelongMonth, month));
// for(int t = 0;t<orgcodelist.size();t++){
int org_code = 117;//orgcodelist.get(t).getId();//企业组织代码
for(int t = 0;t<orgcodelist.size();t++){
int org_code = orgcodelist.get(t).getId();//企业组织代码
List<AdditionalDto> userlist = kqglassoleavebalancemapper.selectAdditionalList(org_code);
for(AdditionalDto user : userlist) {
double traveltotal = 0,egresstotal = 0,overtimetotal = 0;
......@@ -193,7 +193,6 @@ public class AttendanceTaskTiming implements SchedulingConfigurer {
//具体打卡时间入汇总表(打卡成功才会录入汇总表)
// KqglAssoMonthPunchSummary isyessum = KqglAssoMonthPunchSummary.builder().build().selectOne(new QueryWrapper<KqglAssoMonthPunchSummary>().lambda()
// .eq(KqglAssoMonthPunchSummary::getNum, user.getEmpnum()).eq(KqglAssoMonthPunchSummary::getOrgCode, org_code));
String[] ycqts = new String[31];//应上班的具体天数(yyyy-MM-dd)
String[] xxts = new String[31];//休息的具体天数(yyyy-MM-dd)
List<String> rowData = new ArrayList<String>();
......@@ -204,16 +203,12 @@ public class AttendanceTaskTiming implements SchedulingConfigurer {
double workinghours = 0,seriouslatetimes = 0,seriouslatehours = 0,absenlatetimes = 0;
// 迟到次数 迟到时长 早退次数 早退时长
int latenum = 0,latehours = 0,leanum = 0,leahours = 0;// 迟到次数
double workingturncompenleave = 0;//工作日(转调休)
double restturncompenleave = 0;//休息日(转调休)
double holidayturncompenleave = 0;//节假日(转调休)
double workingtransferovertime = 0;//工作日(转加班费)
double resttransferovertime = 0;//休息日(转加班费)
double holidaytransferovertime = 0;//节假日(转加班费)
int answer =0;//班次ID
//工作日(转调休)、休息日(转调休)、节假日(转调休)
double workingturncompenleave = 0,restturncompenleave = 0,holidayturncompenleave = 0;//工作日(转调休)
//工作日(转加班费)、休息日(转加班费)、节假日(转加班费)
double workingtransferovertime = 0,resttransferovertime = 0,holidaytransferovertime = 0;
int attgroid = 0;
if(attgro != null){//该员工是否加入到考勤组 排班方式 1:固定排班;2:自由排班;3:自由工时 计算出应出勤,实际出勤,休息天数
attgroid = attgro.getId();
// KqglAssoBcsz shif = KqglAssoBcsz.builder().build();
......@@ -221,7 +216,6 @@ public class AttendanceTaskTiming implements SchedulingConfigurer {
// double daysOff = 0,daysOnDuty = 0;//,actualAttDays = 0;
// int zjgzts = 0;//目前为止应该出勤的天数
if(attgro.getPbfs() == 1){ //固定排班
List<KqglAssoTeshu> bxdklist = kqglassoteshumapper.ShouldSpecialDatessetByKqzid(attgro.getId(), ttstr,1);//当前月 必须打卡日期
int bxdk = bxdklist.size();
String[] bxdkss = new String[bxdk];////特殊-必须打卡天数(工作日)
......@@ -237,8 +231,6 @@ public class AttendanceTaskTiming implements SchedulingConfigurer {
appmaps[d1] = spe.getTsrq();
d1++;
}
List<AttendanceWeeklySch> atwek = attendanceweeklyschmapper.selectAttendanceMadeByUserid(user.getEmpnum());
String[] week= new String[atwek.size()];
String[] needfig = new String[atwek.size()];//应打卡周期时间
......@@ -296,7 +288,6 @@ public class AttendanceTaskTiming implements SchedulingConfigurer {
}
}else if(attgro.getPbfs() == 2){ //自由排班
DateFormat df = new SimpleDateFormat("EEE MMM dd HH:mm:ss zzz yyyy", Locale.US);
List<Schedule> ycqs = schedulemapper.getAttendanceShouldList(user.getEmpnum(),startDate,endDate);
int xiuxi = 0,shangban = 0,z=0;
String[] ziyoupb = new String[ycqs.size()];
......@@ -445,9 +436,7 @@ public class AttendanceTaskTiming implements SchedulingConfigurer {
//排查请假是否在最后一次打卡范围内
List<KqglAssoRelationSummary> leainv = kqglassorelationsummarymapper.LeaveInvestigation(user.getEmpnum(), 2, ttstr);
KqglAssoBcsz shif = KqglAssoBcsz.builder().build();
String beginTime = sdf1.format(new Date());
// List<String> rowData = new ArrayList<String>();
//遍历目前为止所有日期 结合该用户发起的审批进行结合
......@@ -479,7 +468,6 @@ public class AttendanceTaskTiming implements SchedulingConfigurer {
}
}
rowData.add(lea.getStartTime() +"到"+ lea.getEndTime()+"请"+leavetype+lea.getDuration()+company);
}else if(Arrays.binarySearch(ClockInTool.doChinFilters(ClockInTool.replaceNull(travels),"null"), num) >= 0) {//出差
KqglAssoRelationSummary lea = KqglAssoRelationSummary.builder().build().selectOne(new QueryWrapper<KqglAssoRelationSummary>().lambda().eq(KqglAssoRelationSummary::getUserId, user.getEmpnum()).eq(KqglAssoRelationSummary::getAppTime, num).eq(KqglAssoRelationSummary::getApprovalType, 3));
rowData.add(lea.getStartTime() +"到"+ lea.getEndTime()+"出差"+lea.getDuration()+"天");
......@@ -490,7 +478,6 @@ public class AttendanceTaskTiming implements SchedulingConfigurer {
KqglAssoRelationSummary lea = KqglAssoRelationSummary.builder().build().selectOne(new QueryWrapper<KqglAssoRelationSummary>().lambda().eq(KqglAssoRelationSummary::getUserId, user.getEmpnum()).eq(KqglAssoRelationSummary::getAppTime, num).eq(KqglAssoRelationSummary::getApprovalType, 5));
rowData.add("已补卡:"+lea.getStartTime());
}else if(Arrays.binarySearch(ClockInTool.doChinFilters(ClockInTool.replaceNull(overtimes),"null"), num) >= 0) {//加班
KqglAssoRelationSummary lea = KqglAssoRelationSummary.builder().build().selectOne(new QueryWrapper<KqglAssoRelationSummary>().lambda().eq(KqglAssoRelationSummary::getUserId, user.getEmpnum()).eq(KqglAssoRelationSummary::getAppTime, num).eq(KqglAssoRelationSummary::getApprovalType, 1));
String company = "未知",method = "无";//加班单位、加班补偿方式
//最小加班单位 1:按分钟加班、2:按半小时加班、3:按小时加班、4:按半天加班、5:按天加班
......@@ -550,8 +537,6 @@ public class AttendanceTaskTiming implements SchedulingConfigurer {
}
}
/****************************************/
if(attgro.getPbfs() == 1){
int several = Integer.valueOf(ClockInTool.dateToWeek(num));//
KqglAssoTeshu tesu = KqglAssoTeshu.builder().build().selectOne(new QueryWrapper<KqglAssoTeshu>().lambda().eq(KqglAssoTeshu::getKqzid, attgro.getId()).eq(KqglAssoTeshu::getTsrq, num));
......@@ -580,8 +565,7 @@ public class AttendanceTaskTiming implements SchedulingConfigurer {
if(shif != null && shif.getSxbcs() != null) {
System.out.println(shif.getSxbcs());
int answer = shif.getSxbcs();//1=2次 2=4次 3=6次
answer = shif.getSxbcs();//1=2次 2=4次 3=6次
//未打最后一次卡的时候 判断最后一次打卡时间是否在请假范围内 相对应减少下班缺卡次数
//最后一次应打卡时间
String latimeclock = "";
......@@ -611,7 +595,6 @@ public class AttendanceTaskTiming implements SchedulingConfigurer {
System.err.print("该员工未加入考勤组");
}
String[] range1=ClockInTool.listToString(rowData).split(";");
String[] noticesArray=range1[0].split(",");
noticesArray = ClockInTool.arrycopy(noticesArray);
......@@ -630,8 +613,7 @@ public class AttendanceTaskTiming implements SchedulingConfigurer {
}
KqglAssoMonthPunchSummary summary = KqglAssoMonthPunchSummary.builder().name(user.getEmpname()).num(user.getEmpnum()).dept(department)
.post(position).attGroup(attgroid).build();
.post(position).attGroup(attgroid).shift(answer).build();
summary.setDaysOnDuty(daysOnDuty);//应出勤天数
summary.setActualAttDays(Double.valueOf(dkjl));//实际出勤天数
summary.setDaysOff(daysOff);//休息天数
......@@ -663,7 +645,6 @@ public class AttendanceTaskTiming implements SchedulingConfigurer {
summary.setWorkingTransferOvertime(workingtransferovertime);//工作日(转加班费)
summary.setRestTransferOvertime(resttransferovertime);//休息日(转加班费)
summary.setHolidayTransferOvertime(holidaytransferovertime);//节假日(转加班费)
summary.setDay1(noticesArray[0]);
summary.setDay2(noticesArray[1]);
summary.setDay3(noticesArray[2]);
......@@ -697,8 +678,7 @@ public class AttendanceTaskTiming implements SchedulingConfigurer {
summary.setDay31(noticesArray[30]);
summary.insert();
}
// }
}
// KqglTaskTiming.builder().task("AttendanceTask").id(sockid).executionStatus(0).lastExecutionTime(new Date().getTime()).build().updateById();
return new Exception().getStackTrace()[0].getMethodName();
......
......@@ -5,8 +5,8 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import cn.timer.api.bean.kqmk.AttendanceSocks;
public class AttendanceUtil {
// 默认cron 5秒一次
private static String cron = "0/5 * * * * ?";
// 默认cron 5秒一次 0/5 * * * * ?
private static String cron = "0 0 19 * * ?";//下午七点
// 数据库cron
public static String getCron(String tablename) {
......
......@@ -9,6 +9,7 @@ import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import cn.timer.api.bean.kqmk.KqglAssoLeaveBalance;
import cn.timer.api.bean.kqmk.KqglAssoLeaveRules;
import cn.timer.api.bean.kqmk.KqglAssoRelationSummary;
import cn.timer.api.bean.yggl.YgglMainEmp;
import cn.timer.api.controller.kqgl.ClockInTool;
......@@ -43,6 +44,7 @@ public class KqglServiceImpl implements KqglService {
.endTime(new SimpleDateFormat("yyyy-MM-dd' 'HH:mm:ss").format(leaveappr.getEndtime())).build().insert();
}
YgglMainEmp emp = YgglMainEmp.builder().build().selectOne(new QueryWrapper<YgglMainEmp>().lambda().eq(YgglMainEmp::getEmpNum, leaveappr.getUserid()));
int modifynumber = 1;
KqglAssoLeaveBalance balan = kqglassoleavebalancemapper.selectOne(new QueryWrapper<KqglAssoLeaveBalance>().lambda().eq(KqglAssoLeaveBalance::getUserid, leaveappr.getUserid())
.orderByDesc(KqglAssoLeaveBalance :: getModifyNumber).last("LIMIT 1"));
......@@ -69,6 +71,25 @@ public class KqglServiceImpl implements KqglService {
.overtimeTypeId(overappr.getOvertimetype()).compensateId(overappr.getCompensate()).startTime(new SimpleDateFormat("yyyy-MM-dd' 'HH:mm:ss").format(overappr.getStarttime()))
.endTime(new SimpleDateFormat("yyyy-MM-dd' 'HH:mm:ss").format(overappr.getEndtime())).build().insert();
}
YgglMainEmp emp = YgglMainEmp.builder().build().selectOne(new QueryWrapper<YgglMainEmp>().lambda().eq(YgglMainEmp::getEmpNum, overappr.getUserid()));
//查询当前公司调休的id
KqglAssoLeaveRules learul = KqglAssoLeaveRules.builder().build().selectOne(new QueryWrapper<KqglAssoLeaveRules>().lambda().eq(KqglAssoLeaveRules::getOrgCode, emp.getOrgCode()).eq(KqglAssoLeaveRules::getRulesType, 2));
if(overappr.getCompensate() == 1) {
int modifynumber = 1;
KqglAssoLeaveBalance balan = kqglassoleavebalancemapper.selectOne(new QueryWrapper<KqglAssoLeaveBalance>().lambda().eq(KqglAssoLeaveBalance::getUserid, overappr.getUserid())
.orderByDesc(KqglAssoLeaveBalance :: getModifyNumber).last("LIMIT 1"));
if(balan != null) {
modifynumber = balan.getModifyNumber()+1;
}
KqglAssoLeaveBalance.builder().leaveRulesId(learul.getId()).userid(overappr.getUserid()).modifyAction(2).balanceDays("+"+overappr.getDuration())
.reason("系统按照规则自动(加班)").modifyUserid(emp.getEmpNum()).modifyTimer(new Date().getTime()).orgCode(emp.getOrgCode()).isAutomatic(1).modifyNumber(modifynumber).build().insert();//员工假期余额
}
return true;
}
......
......@@ -40,6 +40,7 @@ import cn.timer.api.bean.zzgl.ZzglBmgwM;
import cn.timer.api.config.annotation.CurrentUser;
import cn.timer.api.config.annotation.UserBean;
import cn.timer.api.config.enums.CommonEnum;
import cn.timer.api.config.enums.SysRoleType;
import cn.timer.api.dao.qyzx.QyzxEmpEntAssoMapper;
import cn.timer.api.dao.qyzx.QyzxEmpLoginMapper;
import cn.timer.api.dao.qyzx.QyzxEntInfoMMapper;
......@@ -277,8 +278,8 @@ public class QyzxController {
return ResultUtil.data(menus, "你不是该企业的用户!");
}
if (CommonEnum.U_TYPE_ADMIN.getType().equals(ctrl.getUserType())
|| CommonEnum.U_TYPE_C_ADMIN.getType().equals(ctrl.getUserType())) {
if (SysRoleType.U_TYPE_ADMIN.getType().equals(ctrl.getUserType())
|| SysRoleType.U_TYPE_C_ADMIN.getType().equals(ctrl.getUserType())) {
} else {
// 获取权限
ArrayList<Integer> list = new ArrayList<Integer>();
......
......@@ -80,9 +80,11 @@ import cn.timer.api.config.annotation.UserBean;
import cn.timer.api.config.enuminterface.YgEnumInterface;
import cn.timer.api.config.enuminterface.YgEnumInterface.jobStatus;
import cn.timer.api.config.enums.CommonEnum;
import cn.timer.api.config.enums.SysRoleType;
import cn.timer.api.config.exception.Regular;
import cn.timer.api.config.validation.ValidList;
import cn.timer.api.dao.clazz.CommonAreaMapper;
import cn.timer.api.dao.qyzx.QyzxEmpEntAssoMapper;
import cn.timer.api.dao.qyzx.QyzxEmpLoginMapper;
import cn.timer.api.dao.yggl.YgMzDtoMapper;
import cn.timer.api.dao.yggl.YgglMainEmpMapper;
......@@ -126,6 +128,9 @@ public class YgglController {
private YgglMainEmpMapper ygglMainEmpMapper;
@Autowired
private QyzxEmpEntAssoMapper qyzxEmpEntAssoMapper;
@Autowired
private QyzxEmpLoginMapper qyzxEmpLoginMapper;
@Autowired
......@@ -272,7 +277,7 @@ public class YgglController {
if (ygglMainEmp == null) {
QyzxEmpEntAsso.builder()
.empNum(login.getId()).orgCode(orgCode).userType(CommonEnum.U_TYPE_EMP.getType()).status(CommonEnum.U_STS_ON.getType())
.empNum(login.getId()).orgCode(orgCode).userType(SysRoleType.U_TYPE_EMP.getType()).status(CommonEnum.U_STS_ON.getType())
.build()
.insert();
ygglMainEmp = YgglMainEmp.builder()
......@@ -449,7 +454,7 @@ public class YgglController {
}
QyzxEmpEntAsso.builder().empNum(login.getId()).orgCode(orgCode)
.userType(CommonEnum.U_TYPE_EMP.getType()).status(CommonEnum.U_STS_ON.getType()).build().insert();// usertype2普通员工 status1正常
.userType(SysRoleType.U_TYPE_EMP.getType()).status(CommonEnum.U_STS_ON.getType()).build().insert();// usertype2普通员工 status1正常
yme = YgglMainEmp.builder()
.name(name).phone(phone).zjType(zjType).zjNum(zjNum).jobType(jobType)
.jobStatus(YgEnumInterface.jobStatus.SHIYONG.getType()).rzTime(rzTime)
......@@ -1298,14 +1303,21 @@ public class YgglController {
YgglMainLzb.builder().empNum(empNum).jobStatus(YgEnumInterface.jobStatus.YILIZHI.getType()).sjlzTime(new Date())
.build().update(new UpdateWrapper<YgglMainLzb>().lambda().eq(YgglMainLzb::getEmpNum, empNum));
LambdaQueryWrapper<QyzxEmpEntAsso> queryWrapper = new QueryWrapper<QyzxEmpEntAsso>().lambda().eq(QyzxEmpEntAsso::getEmpNum, empNum);
// 确认离职 删除员工关联表
QyzxEmpEntAsso.builder().empNum(lzygQueryDto.getEmpNum()).build()
.delete(new QueryWrapper<QyzxEmpEntAsso>().lambda().eq(QyzxEmpEntAsso::getEmpNum, empNum));
qyzxEmpEntAssoMapper.delete(queryWrapper);
// 初始化 部门主管
zzglBmgwMMapper.update(ZzglBmgwM.builder().leader(null).build(),
new UpdateWrapper<ZzglBmgwM>().lambda().eq(ZzglBmgwM::getLeader, empNum));
// 更新当前企业
List<QyzxEmpEntAsso> listEEA = qyzxEmpEntAssoMapper.selectList(queryWrapper);
if (listEEA != null && listEEA.size() > 0) {
QyzxEmpLogin.builder().id(empNum).orgId(CollUtil.getFirst(listEEA).getOrgCode()).build().updateById();
}
return ResultUtil.success("确认离职员工成功");
}
......
......@@ -8,4 +8,9 @@ public interface YgglService {
void applicationResignation(LzygQueryDto lzygQueryDto);
void applicationRegularization(YgzzDto ygzzDto);
/*
* 根据 员工ID 和 主管层级 查询 主管
*/
Integer selectLeaderEmpNumById(Integer orgCode, Integer id, Integer leave);
}
package cn.timer.api.controller.yggl.service;
import java.util.Date;
import java.util.List;
import java.util.stream.Collectors;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.collection.ListUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.timer.api.bean.yggl.YgglMainEmp;
import cn.timer.api.bean.yggl.YgglMainLzb;
import cn.timer.api.bean.zzgl.ZzglBmgwM;
import cn.timer.api.config.enuminterface.YgEnumInterface;
import cn.timer.api.dao.yggl.YgglMainEmpMapper;
import cn.timer.api.dao.zzgl.ZzglBmgwMMapper;
import cn.timer.api.dto.yggl.LzygQueryDto;
import cn.timer.api.dto.yggl.YgzzDto;
@Service
public class YgglServiceImpl implements YgglService {
@Autowired
private YgglMainEmpMapper ygglMainEmpMapper;
@Autowired
private ZzglBmgwMMapper zzglBmgwMMapper;
@Override
public void applicationResignation(LzygQueryDto lzygQueryDto) {
// TODO Auto-generated method stub
......@@ -50,4 +65,50 @@ public class YgglServiceImpl implements YgglService {
.build().update(new UpdateWrapper<YgglMainEmp>().lambda().eq(YgglMainEmp::getEmpNum, ygzzDto.getEmpNum()));
}
@Override
public Integer selectLeaderEmpNumById(Integer orgCode, Integer id, Integer leave) {
// TODO Auto-generated method stub
YgglMainEmp mainEmp = ygglMainEmpMapper.selectOne(new QueryWrapper<YgglMainEmp>().lambda()
.select(YgglMainEmp::getBmgwId)
.eq(YgglMainEmp::getEmpNum, id));
Integer gWId = mainEmp != null ? mainEmp.getBmgwId() : null;
// 企业所有部门岗位
List<ZzglBmgwM> listBM = zzglBmgwMMapper.selectList(new QueryWrapper<ZzglBmgwM>().lambda()
.eq(ZzglBmgwM::getOrgCode, orgCode));
// 岗位
ZzglBmgwM gW = CollUtil.getFirst(listBM.stream().filter(bM -> bM.getId().equals(gWId)).collect(Collectors.toList()));
// 岗位id
Integer baseBmgwId = gW != null ? gW.getUpId() : null;
// 部门列表
// List<ZzglBmgwM> listbM = ListUtil.toList();
// 指定 主管id
Integer leaderId = null;
for (int i = 0,n = leave; i < n; i++) {
ZzglBmgwM bmgwM = getLeaderEmp(listBM, baseBmgwId);
baseBmgwId = bmgwM != null ? bmgwM.getId() : null;
if (i == n-1) {
// listbM.add(bmgwM);
leaderId = baseBmgwId;
}
}
return leaderId;
}
private ZzglBmgwM getLeaderEmp(List<ZzglBmgwM> listBM, Integer baseBmgwId) {
ZzglBmgwM zzglBmgwM = baseBmgwId != null ?
CollUtil.getFirst(listBM.stream()
.filter(bM -> bM.getId().equals(baseBmgwId)).collect(Collectors.toList()))
: null;
return zzglBmgwM;
}
}
......@@ -2,6 +2,7 @@ package cn.timer.api.controller.zzgl.service;
import java.util.List;
import cn.timer.api.bean.yggl.YgglMainEmp;
import cn.timer.api.dto.zzgl.UpEmpDeptDto;
/**
......@@ -17,4 +18,6 @@ public interface ZzglBmgwMService {
List<Integer> selectMenuByPostId(Integer id);
public List<YgglMainEmp> selectOtherlistent(Integer orgCode, Integer id);
}
......@@ -9,6 +9,8 @@ import java.util.stream.Collectors;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper;
......@@ -101,4 +103,26 @@ public class ZzglBmgwMServiceImpl implements ZzglBmgwMService {
return menuList;
}
@Override
public List<YgglMainEmp> selectOtherlistent(Integer orgCode, Integer id){
ArrayList<Integer> list = new ArrayList<Integer>();
List<ZzglBmgwM> zzglBmgwMs = ZzglBmgwM.builder().build().selectList(new QueryWrapper<ZzglBmgwM>().lambda()
.eq(ZzglBmgwM::getOrgCode, orgCode));
list.add(id);
ZzglBmgwM.getDepts(list, id, zzglBmgwMs);
if (list == null || list.size() == 0) {
return null;
} else {
LambdaQueryWrapper<YgglMainEmp> ygglMainEmpsLambdaQueryWrapper = new LambdaQueryWrapper<>();
ygglMainEmpsLambdaQueryWrapper
.select(YgglMainEmp::getId, YgglMainEmp::getEmpNum, YgglMainEmp::getName, YgglMainEmp::getPhone,
YgglMainEmp::getBmgwId)
.eq(YgglMainEmp::getOrgCode, orgCode).and(i -> i.in(YgglMainEmp::getBmgwId, list.toArray()));
List<YgglMainEmp> ygglMainEmps = YgglMainEmp.builder().build().selectList(ygglMainEmpsLambdaQueryWrapper);
return ygglMainEmps;
}
}
}
package cn.timer.api.dao.jxgl;
import java.util.List;
import org.springframework.stereotype.Repository;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
......@@ -12,6 +14,4 @@ import cn.timer.api.bean.jxgl.JxglAppraisalIndicatorsT;
@Repository
public interface JxglAppraisalIndicatorsTMapper extends BaseMapper<JxglAppraisalIndicatorsT> {
}
package cn.timer.api.dao.jxgl;
import java.util.List;
import org.springframework.stereotype.Repository;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
......@@ -12,6 +14,8 @@ import cn.timer.api.bean.jxgl.JxglAppraisalItemT;
@Repository
public interface JxglAppraisalItemTMapper extends BaseMapper<JxglAppraisalItemT> {
int insertList(List<JxglAppraisalItemT> aItemTs);
}
package cn.timer.api.dao.jxgl;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import cn.timer.api.bean.jxgl.JxglAppraisal;
import cn.timer.api.dto.jxgl.AppraisalDetail;
import cn.timer.api.dto.jxgl.AppraisalQuery;
import cn.timer.api.dto.jxgl.EmpPerformanceQuery;
/**
* 考核
......@@ -12,6 +17,10 @@ import cn.timer.api.bean.jxgl.JxglAppraisal;
@Repository
public interface JxglAppraisalMapper extends BaseMapper<JxglAppraisal> {
IPage<JxglAppraisal> selectListByQuery(IPage<JxglAppraisal> page,@Param("param") AppraisalQuery query);
AppraisalDetail selectDetailById(Integer orgCode, Integer id);
IPage<JxglAppraisal> selectListEmpByQuery(IPage<JxglAppraisal> page,@Param("param") EmpPerformanceQuery query);
}
......@@ -12,6 +12,8 @@ import cn.timer.api.bean.jxgl.JxglAppraisalT;
@Repository
public interface JxglAppraisalTMapper extends BaseMapper<JxglAppraisalT> {
JxglAppraisalT selectDetailById(Integer id);
}
......@@ -12,6 +12,8 @@ import cn.timer.api.bean.jxgl.JxglBasicSetting;
@Repository
public interface JxglBasicSettingMapper extends BaseMapper<JxglBasicSetting> {
JxglBasicSetting selectAll(Integer orgCode);
}
package cn.timer.api.dao.jxgl;
import java.util.List;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import cn.timer.api.bean.jxgl.JxglPerformanceAppraisal;
import cn.timer.api.bean.spmk.SpmkApproveSummary;
import cn.timer.api.dto.jxgl.EmpAppraisalQuery;
import cn.timer.api.dto.jxgl.PerformanceAppraisalQuery;
/**
* 绩效考核
......@@ -12,6 +19,13 @@ import cn.timer.api.bean.jxgl.JxglPerformanceAppraisal;
@Repository
public interface JxglPerformanceAppraisalMapper extends BaseMapper<JxglPerformanceAppraisal> {
IPage<JxglPerformanceAppraisal> selectListByQuery(IPage<SpmkApproveSummary> page, @Param("param") PerformanceAppraisalQuery param);
IPage<JxglPerformanceAppraisal> selectListEmpByQuery(IPage<JxglPerformanceAppraisal> page,@Param("param") EmpAppraisalQuery query);
IPage<JxglPerformanceAppraisal> selectArchiveListByQuery(IPage<SpmkApproveSummary> page,@Param("param")
PerformanceAppraisalQuery query);
}
package cn.timer.api.dao.jxgl;
import java.util.List;
import org.springframework.stereotype.Repository;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
......@@ -12,6 +14,6 @@ import cn.timer.api.bean.jxgl.JxglPerformanceRating;
@Repository
public interface JxglPerformanceRatingMapper extends BaseMapper<JxglPerformanceRating> {
int insertList(List<JxglPerformanceRating> list);
}
......@@ -2,8 +2,13 @@ package cn.timer.api.dao.kqgl;
import java.util.List;
import org.apache.ibatis.annotations.Param;
import com.baomidou.mybatisplus.core.metadata.IPage;
import cn.timer.api.bean.kqgl.AttendanceDetails;
import cn.timer.api.bean.kqgl.PunchRecord;
import cn.timer.api.dto.kqmk.OriginalRecordDto;
public interface PunchRecordMapper {
int deleteByPrimaryKey(Integer id);
......@@ -31,4 +36,8 @@ public interface PunchRecordMapper {
List<PunchRecord> getMaintenancePunchCardList(Long start,Long end,Integer userId);
List<PunchRecord> selFuzzyOriginalAttendance(AttendanceDetails attendancedetails);
IPage<PunchRecord> QueryOriginalRecord(IPage<PunchRecord> page,@Param("param") OriginalRecordDto originalrecorddto);
}
\ No newline at end of file
......@@ -16,4 +16,6 @@ import cn.timer.api.dto.kqmk.AttSubsidiaryDto;
public interface KqglAssoDkmxMapper extends BaseMapper<KqglAssoDkmx> {
AttSubsidiaryDto subsidiary(int userid, String data);
int updateByPrimaryKeySelective(KqglAssoDkmx kqglassodkmx);
}
......@@ -17,4 +17,6 @@ import cn.timer.api.bean.kqmk.KqglAssoLeaveRules;
public interface KqglAssoLeaveRulesMapper extends BaseMapper<KqglAssoLeaveRules> {
int insertleaverulesList(List<KqglAssoLeaveRules> kqglassoleaverules);
List<KqglAssoLeaveRules> selHeaderdata(int orgcode,int leavetype,int isopen);
}
......@@ -6,6 +6,7 @@ import org.springframework.stereotype.Repository;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import cn.timer.api.bean.kqmk.KqglAssoRulesVice;
import cn.timer.api.dto.kqmk.KqglAssoRulesViceDto;
/**
......@@ -17,4 +18,6 @@ public interface KqglAssoRulesViceMapper extends BaseMapper<KqglAssoRulesVice> {
int insertrulesviceList(List<KqglAssoRulesVice> kqglassorulesvice);
List<KqglAssoRulesViceDto> leaveRulesIdload(int leaverulesid);
}
package cn.timer.api.dto.jxgl;
import java.io.Serializable;
import java.util.Date;
import java.util.List;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import cn.timer.api.bean.jxgl.JxglAppraisalAssessment;
import cn.timer.api.bean.jxgl.JxglAppraisalIndicators;
import cn.timer.api.bean.jxgl.JxglAppraisalLog;
import cn.timer.api.bean.jxgl.JxglProcessNode;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class AppraisalDetail implements Serializable{
/**
*
*/
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue
@TableId(type = IdType.AUTO)
@ApiModelProperty(value = "编号 编号", example = "10")
private Integer id;
@ApiModelProperty(value = "绩效考核id 绩效考核id", example = "10")
private Integer performanceAppraisalId;
@ApiModelProperty(value = "员工id 员工id", example = "10")
private Integer empNum;
@ApiModelProperty(value = "名称", example = "名称")
private String name;
@ApiModelProperty(value = "考核说明", example = "考核说明")
private String appraisalExplain;
@TableField(fill = FieldFill.INSERT)
@ApiModelProperty(value = "创建时间", example = "2020-10-10 10:10:10")
private Date createTime;
@TableField(fill = FieldFill.UPDATE)
@ApiModelProperty(value = "更新时间", example = "2020-10-10 10:10:10")
private Date updateTime;
@ApiModelProperty(value = "状态 0目标填写 1目标确认 2自评 3上级评分 4 结果确认 5考核完成 6终止考核 7归档", example = "0")
private Integer sts;
private List<JxglProcessNode> processNodes;
private List<JxglAppraisalAssessment> appraisalAssessments;
private List<JxglAppraisalLog> appraisalLogs;
private List<JxglAppraisalIndicators> appraisalIndicators;
}
package cn.timer.api.dto.jxgl;
import javax.validation.constraints.Max;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotNull;
import cn.timer.api.config.exception.ValidationMsg;
import cn.timer.api.utils.Page;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class AppraisalQuery extends Page{
@NotNull(message = ValidationMsg.NOTNULL)
@ApiModelProperty(value = "绩效考核id", example = "")
private Integer id;
@ApiModelProperty(value = "企业id", example = "")
private Integer orgCode;
@ApiModelProperty(value = "姓名、手机号", example = "")
private String query;
@Max(value = 4,message = ValidationMsg.MAX+" 只能为 0目标填写 1目标确认 2自评 3上级评分 4 结果确认 5考核完成 6终止考核 7绩效归档")
@Min(value = 0,message = ValidationMsg.MIN+" 只能为 0目标填写 1目标确认 2自评 3上级评分 4 结果确认 5考核完成 6终止考核 7绩效归档")
@ApiModelProperty(value = "状态 0目标填写 1目标确认 2自评 3上级评分 4 结果确认 5考核完成 6终止考核 7绩效归档", example = "0")
private Integer sts;
@ApiModelProperty(value = "部门id", example = "")
private Integer bmId;
}
package cn.timer.api.dto.jxgl;
import java.io.Serializable;
import javax.validation.constraints.Max;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotNull;
import cn.timer.api.config.exception.ValidationMsg;
import cn.timer.api.dto.spmk.User;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class BeingAppraisalPerson implements Serializable{
/**
*
*/
private static final long serialVersionUID = 1L;
@NotNull(message = ValidationMsg.NOTNULL)
@ApiModelProperty(value = "id", example = "10")
private Integer id;
/**
* 0员工 1部门
*/
@NotNull(message = ValidationMsg.NOTNULL)
@Min(value = 0,message = ValidationMsg.MIN)
@Max(value = 1,message = ValidationMsg.MAX)
@ApiModelProperty(value = "类型 0员工 1部门", example = "0")
private Integer type;
/**
* 0被考核人 1无需考核人
*/
@NotNull(message = ValidationMsg.NOTNULL)
@Min(value = 0,message = ValidationMsg.MIN)
@Max(value = 1,message = ValidationMsg.MAX)
@ApiModelProperty(value = "状态 0被考核人 1无需考核人", example = "0")
private Integer sts;
}
package cn.timer.api.dto.jxgl;
import java.util.Date;
import javax.validation.Valid;
import javax.validation.constraints.NotNull;
import cn.timer.api.bean.jxgl.JxglPerformanceRating;
import cn.timer.api.config.exception.ValidationMsg;
import cn.timer.api.config.validation.ValidList;
import cn.timer.api.utils.Page;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
......@@ -18,26 +14,12 @@ import lombok.NoArgsConstructor;
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class BasicSettingDto {
public class EmpAppraisalQuery extends Page {
@ApiModelProperty(value="编号",example="10")
@NotNull(message = ValidationMsg.NOTNULL)
@ApiModelProperty(value = "员工id", example = "")
private Integer id;
@ApiModelProperty(value="企业id",example="10")
@ApiModelProperty(value = "企业id", example = "")
private Integer orgCode;
@NotNull(message = ValidationMsg.NOTNULL)
@ApiModelProperty(value="最高分",example="100")
private Integer maxScore;
@ApiModelProperty(value="创建时间",example="2020-10-10 10:10:10")
private Date createTime;
@ApiModelProperty(value="更新时间",example="2020-10-10 10:10:10")
private Date updateTime;
@Valid
@ApiModelProperty(value="绩效等级",example="1")
private ValidList<JxglPerformanceRating> performanceRatings;
}
package cn.timer.api.dto.jxgl;
import javax.validation.constraints.NotNull;
import cn.timer.api.config.exception.ValidationMsg;
import cn.timer.api.utils.Page;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class EmpPerformanceQuery extends Page {
@NotNull(message = ValidationMsg.NOTNULL)
@ApiModelProperty(value = "绩效考核id", example = "")
private Integer id;
@ApiModelProperty(value = "企业id", example = "")
private Integer orgCode;
@ApiModelProperty(value = "姓名、手机号", example = "")
private String query;
@ApiModelProperty(value = "部门id", example = "")
private Integer bmId;
}
package cn.timer.api.dto.jxgl;
import java.io.Serializable;
import java.util.Date;
import java.util.List;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.validation.Valid;
import javax.validation.constraints.Max;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.google.gson.JsonObject;
import cn.timer.api.config.exception.ValidationMsg;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class PerformanceAppraisal implements Serializable{
/**
*
*/
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue
@TableId (type = IdType.AUTO)
@ApiModelProperty(value="编号 编号",example="10")
private Integer id;
@ApiModelProperty(value="企业id 企业id",example="10")
private Integer orgCode;
@NotBlank(message = ValidationMsg.NOTBLANK)
@ApiModelProperty(value="名称",example="名称")
private String name;
@NotNull(message = ValidationMsg.NOTNULL)
@ApiModelProperty(value="周期 0月 1季 2年 3半年",example="10")
private Integer period;
@NotNull(message = ValidationMsg.NOTNULL)
@ApiModelProperty(value="开始时间",example="2020-10-10 10:10:10")
private Date appraisalStartTime;
@NotNull(message = ValidationMsg.NOTNULL)
@ApiModelProperty(value="结束时间",example="2020-10-10 10:10:10")
private Date appraisalEndTime;
@NotNull(message = ValidationMsg.NOTNULL)
@Min(value = 0,message = ValidationMsg.MIN)
@Max(value = 1,message = ValidationMsg.MAX)
@ApiModelProperty(value="是否可见 0是 1否。评分及评分结果能否被员工看见",example="1")
private Integer isVisible;
@NotNull(message = ValidationMsg.NOTNULL)
@Min(value = 0,message = ValidationMsg.MIN)
@Max(value = 4,message = ValidationMsg.MAX)
@ApiModelProperty(value="状态 0目标制定 1绩效评分 2结果确认 3绩效归档 4终止考核",example="10")
private Integer sts;
@ApiModelProperty(value="范围",example="部门名称、被考核人名称")
private String scope;
@NotBlank(message = ValidationMsg.NOTBLANK)
@ApiModelProperty(value="考核模板名称",example="考核模板名称")
private String appraisalTName;
@NotNull(message = ValidationMsg.NOTNULL)
@ApiModelProperty(value="考核模板id",example="1")
private Integer appraisalTId;
@ApiModelProperty(value="考核人数 考核人数",example="10")
private Integer appraisalPersonNum;
@NotNull(message = ValidationMsg.NOTNULL)
@ApiModelProperty(value="流程节点",example="")
private List<ProcessNode> processNode;
@Valid
@NotNull(message = ValidationMsg.NOTNULL)
@ApiModelProperty(value="被考核人员",example="")
private List<BeingAppraisalPerson> beingAppraisalPerson;
}
package cn.timer.api.dto.jxgl;
import javax.validation.constraints.Max;
import javax.validation.constraints.Min;
import cn.timer.api.config.exception.ValidationMsg;
import cn.timer.api.utils.Page;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class PerformanceAppraisalQuery extends Page{
@ApiModelProperty(value = "企业id", example = "")
private Integer orgCode;
@ApiModelProperty(value = "考核名称", example = "")
private String query;
@Max(value = 4,message = ValidationMsg.MAX+" 只能为 0目标制定 1绩效评分 2结果确认 3绩效归档 4终止考核")
@Min(value = 0,message = ValidationMsg.MIN+" 只能为 0目标制定 1绩效评分 2结果确认 3绩效归档 4终止考核")
@ApiModelProperty(value = "状态 0目标制定 1绩效评分 2结果确认 3绩效归档 4终止考核", example = "0")
private Integer sts;
@ApiModelProperty(value = "开始时间 ", example = "2000-10-10 10:10:10")
private String startTime;
@ApiModelProperty(value = "结束时间 ", example = "2020-10-10 10:10:10")
private String endTime;
}
package cn.timer.api.dto.jxgl;
import java.io.Serializable;
import javax.validation.constraints.Max;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotNull;
import cn.timer.api.config.exception.ValidationMsg;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class ProcessNode implements Serializable {
/**
*
*/
private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "执行人id(员工id)", example = "10")
private Integer executorId;
@NotNull(message = ValidationMsg.NOTNULL)
@Min(value = 0,message = ValidationMsg.MIN)
@Max(value = 2,message = ValidationMsg.MAX)
@ApiModelProperty(value = "执行人类型 0被考核人 1主管 2指定成员", example = "10")
private Integer executeType;
@NotNull(message = ValidationMsg.NOTNULL)
@Min(value = 0,message = ValidationMsg.MIN)
@Max(value = 4,message = ValidationMsg.MAX)
@ApiModelProperty(value = "类型 0目标填写 1目标确认 2自评 3上级评分 4 结果确认", example = "10")
private Integer processType;
@Min(value = 0,message = ValidationMsg.MIN)
@Max(value = 1,message = ValidationMsg.MAX)
@ApiModelProperty(value = "主管层级 0直属主管 1上上级主管", example = "10")
private Integer leaderTier;
@Min(value = 0,message = ValidationMsg.MIN)
@Max(value = 100,message = ValidationMsg.MAX)
@ApiModelProperty(value = "权重", example = "10")
private Integer weight;
}
package cn.timer.api.dto.jxgl;
import java.io.Serializable;
import java.util.Date;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import cn.timer.api.bean.jxgl.JxglProcessNode;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class ProcessNodeUpdate implements Serializable{
/**
*
*/
private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "编号", example = "10")
private Integer id;
@ApiModelProperty(value = "考核id", example = "10")
private Integer appraisalId;
@ApiModelProperty(value = "执行人id(员工id)", example = "10")
private Integer executorId;
@ApiModelProperty(value = "执行人名称", example = "执行人名称")
private String executorName;
}
......@@ -45,6 +45,9 @@ public class KqglAssoLeaveRulesDto {
@ApiModelProperty(value = "假期余额 0:关(该项余额为“不限余额”);1:开(该项余额为“0”)", example = "101")
private Integer leaveBalance;
@ApiModelProperty(value = "规则类型(1:事假;2:调休;3:病假;4:年假;5:产假;6:陪产假;7:婚假;8:例假;9:丧假;10:哺乳假)", example = "101")
private Integer rulesType;
@ApiModelProperty(value = "适用范围集合", example = "101")
private String[] range;
......
package cn.timer.api.dto.kqmk;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class KqglAssoRulesViceDto {
@ApiModelProperty(value = "假期规则id 假期规则id", example = "101")
private Integer leaveRulesId;
}
package cn.timer.api.dto.kqmk;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class ModifyEmployeeBalanceDto {
private Integer empnum;
private Integer leaverulesid;
}
package cn.timer.api.dto.kqmk;
import cn.timer.api.utils.Page;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class OriginalRecordDto extends Page {
private Integer qyid;
private String start;
private String end;
private String text;
}
......@@ -20,6 +20,6 @@ public class VacationInformationDto {
KqglAssoLeaveRules rules;
@ApiModelProperty(value = "假期规则-适用范围 ", example = "字段说明")
List<KqglAssoRulesVice> range;
List<KqglAssoRulesViceDto> range;
}
package cn.timer.api.dto.yggl;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class UserInfo {
private String name;
private String phone;
private Integer bmgwId;
}
......@@ -7,10 +7,28 @@ import lombok.Data;
*
*/
@Data
public class Page {
//当前页
private Integer currentPage;
//当前页总条数
private Integer totalPage;
public Integer getCurrentPage() {
return currentPage == null || currentPage <= 0 ? 1 : currentPage;
}
public void setCurrentPage(Integer currentPage) {
this.currentPage = currentPage;
}
public Integer getTotalPage() {
return totalPage == null || totalPage <= 0 ? 10 : totalPage;
}
public void setTotalPage(Integer totalPage) {
this.totalPage = totalPage;
}
}
package cn.timer.api.utils;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
import java.util.function.Function;
import java.util.function.Predicate;
public class StreamUtils {
public static <T> Predicate<T> distinctByKey(Function<? super T, ?> keyExtractor) {
Map<Object,Boolean> seen = new ConcurrentHashMap<>();
return t -> seen.putIfAbsent(keyExtractor.apply(t), Boolean.TRUE) == null;
}
}
......@@ -148,8 +148,6 @@ public class RouterUtils {
List<YgglMainEmp> listYgglMainEmp = selectOtherlistent(Integer.parseInt(obj.get("orgCode",FromData.class).getValue().trim()), Integer.valueOf(listRelations.get(i).getDepartmentId().trim()));
System.out.println(listYgglMainEmp);
if (listYgglMainEmp != null && listYgglMainEmp.size() > 0) {
List<User> listUsers = new ArrayList<User>();
for (YgglMainEmp emp : listYgglMainEmp) {
......
......@@ -27,6 +27,17 @@
ranks JxglAppraisalItemT_ranks
</sql>
<insert id="insertList" useGeneratedKeys="true" keyColumn="id" parameterType="list">
INSERT INTO jxgl_appraisal_item_t
(appraisal_indicators_t_id,title,content,ranks)
values
<foreach item="item" index="index" collection="list" open="" separator="," close="">
(
#{item.appraisalIndicatorsTId},#{item.title},#{item.content},#{item.ranks}
)
</foreach>
</insert>
<!--
<insert id="insert" useGeneratedKeys="true" keyColumn="id" parameterType="cn.timer.api.bean.jxgl.JxglAppraisalItemT">
......
......@@ -5,6 +5,7 @@
<resultMap id="BaseResultMap" type="cn.timer.api.bean.jxgl.JxglAppraisal" >
<id column="id" property="id" />
<result column="performance_appraisal_id" property="performanceAppraisalId" />
<result column="emp_num" property="empNum" />
<result column="name" property="name" />
<result column="appraisal_explain" property="appraisalExplain" />
......@@ -13,8 +14,91 @@
<result column="sts" property="sts" />
</resultMap>
<resultMap id="BaseResultMap_All" type="cn.timer.api.bean.jxgl.JxglAppraisal" >
<id column="id" property="id" />
<result column="performance_appraisal_id" property="performanceAppraisalId" />
<result column="emp_num" property="empNum" />
<result column="name" property="name" />
<result column="appraisal_explain" property="appraisalExplain" />
<result column="create_time" property="createTime" />
<result column="update_time" property="updateTime" />
<result column="sts" property="sts" />
<result column="user_name" property="userName" />
<result column="phone" property="phone" />
<result column="bm_name" property="bmName" />
<result column="executor_name" property="executorName" />
<result column="comprehensive_score" property="comprehensiveScore" />
<result column="level" property="level" />
<result column="confirmor" property="confirmor" />
</resultMap>
<resultMap id="BaseResultMap_Emp" type="cn.timer.api.bean.jxgl.JxglAppraisal" >
<id column="id" property="id" />
<result column="performance_appraisal_id" property="performanceAppraisalId" />
<result column="emp_num" property="empNum" />
<result column="name" property="name" />
<result column="appraisal_explain" property="appraisalExplain" />
<result column="create_time" property="createTime" />
<result column="update_time" property="updateTime" />
<result column="sts" property="sts" />
<result column="user_name" property="userName" />
<result column="phone" property="phone" />
<result column="bm_name" property="bmName" />
<result column="rz_time" property="rzTime" />
<result column="archivedPNum" property="archivedPNum" />
<result column="underwayPNum" property="underwayPNum" />
<result column="recentlyProject" property="recentlyProject" />
<result column="recentlyScore" property="recentlyScore" />
<result column="recentlyLevel" property="recentlyLevel" />
</resultMap>
<resultMap id="BaseResultMap_e" type="cn.timer.api.bean.jxgl.JxglAppraisalIndicators" >
<id column="id" property="id" />
<result column="appraisal_id" property="appraisalId" />
<result column="title" property="title" />
<result column="weight" property="weight" />
<result column="is_edit" property="isEdit" />
<result column="is_set_weight" property="isSetWeight" />
<result column="create_time" property="createTime" />
<result column="update_time" property="updateTime" />
<result column="type" property="type" />
<collection column="JxglAppraisalIndicatorsAssessment_id" property="appraisalIndicatorsAssessments" ofType="cn.timer.api.bean.jxgl.JxglAppraisalIndicatorsAssessment"
resultMap="cn.timer.api.dao.jxgl.JxglAppraisalIndicatorsAssessmentMapper.BaseResultMap" columnPrefix="JxglAppraisalIndicatorsAssessment_">
</collection>
<collection column="JxglAppraisalItem_id" property="appraisalItems" ofType="cn.timer.api.bean.jxgl.JxglAppraisalItem"
resultMap="cn.timer.api.dao.jxgl.JxglAppraisalItemMapper.BaseResultMap" columnPrefix="JxglAppraisalItem_">
</collection>
</resultMap>
<resultMap id="BaseResultMap_Detail" type="cn.timer.api.dto.jxgl.AppraisalDetail" >
<id column="id" property="id" />
<result column="performance_appraisal_id" property="performanceAppraisalId" />
<result column="emp_num" property="empNum" />
<result column="name" property="name" />
<result column="appraisal_explain" property="appraisalExplain" />
<result column="create_time" property="createTime" />
<result column="update_time" property="updateTime" />
<result column="sts" property="sts" />
<collection column="JxglProcessNode_id" property="processNodes" ofType="cn.timer.api.bean.jxgl.JxglProcessNode"
resultMap="cn.timer.api.dao.jxgl.JxglProcessNodeMapper.BaseResultMap" columnPrefix="JxglProcessNode_">
</collection>
<collection column="JxglAppraisalAssessment_id" property="appraisalAssessments" ofType="cn.timer.api.bean.jxgl.JxglAppraisalAssessment"
resultMap="cn.timer.api.dao.jxgl.JxglAppraisalAssessmentMapper.BaseResultMap" columnPrefix="JxglAppraisalAssessment_">
</collection>
<collection column="JxglAppraisalLog_id" property="appraisalLogs" ofType="cn.timer.api.bean.jxgl.JxglAppraisalLog"
resultMap="cn.timer.api.dao.jxgl.JxglAppraisalLogMapper.BaseResultMap" columnPrefix="JxglAppraisalLog_">
</collection>
<collection column="e_id" property="appraisalIndicators" ofType="cn.timer.api.bean.jxgl.JxglAppraisalIndicators"
resultMap="cn.timer.api.dao.jxgl.JxglAppraisalMapper.BaseResultMap_e" columnPrefix="e_">
</collection>
</resultMap>
<sql id="Base_Column_List">
id,
performance_appraisal_id,
emp_num,
name,
appraisal_explain,
......@@ -23,8 +107,88 @@
sts
</sql>
<sql id="Base_Column_List_a">
a.id,
a.performance_appraisal_id,
a.emp_num,
a.name,
a.appraisal_explain,
a.create_time,
a.update_time,
a.sts
</sql>
<sql id="Base_Column_List_Alias_b">
b.id JxglProcessNode_id,
b.appraisal_id JxglProcessNode_appraisal_id,
b.executor_id JxglProcessNode_executor_id,
b.executor_name JxglProcessNode_executor_name,
b.execute_type JxglProcessNode_execute_type,
b.process_type JxglProcessNode_process_type,
b.name JxglProcessNode_name,
b.leader_tier JxglProcessNode_leader_tier,
b.weight JxglProcessNode_weight,
b.sts JxglProcessNode_sts,
b.update_time JxglProcessNode_update_time
</sql>
<sql id="Base_Column_List_Alias_c">
c.id JxglAppraisalAssessment_id,
c.appraisal_id JxglAppraisalAssessment_appraisal_id,
c.assessor_id JxglAppraisalAssessment_assessor_id,
c.assessor_name JxglAppraisalAssessment_assessor_name,
c.comprehensive_score JxglAppraisalAssessment_comprehensive_score,
c.remarks JxglAppraisalAssessment_remarks,
c.type JxglAppraisalAssessment_type,
c.create_time JxglAppraisalAssessment_create_time,
c.level JxglAppraisalAssessment_level
</sql>
<sql id="Base_Column_List_Alias_d">
d.id JxglAppraisalLog_id,
d.appraisal_id JxglAppraisalLog_appraisal_id,
d.executor_id JxglAppraisalLog_executor_id,
d.executor_name JxglAppraisalLog_executor_name,
d.title JxglAppraisalLog_title,
d.remarks JxglAppraisalLog_remarks,
d.create_time JxglAppraisalLog_create_time,
d.type JxglAppraisalLog_type
</sql>
<sql id="Base_Column_List_Alias_e">
e.id e_id,
e.appraisal_id e_id,
e.title e_title,
e.weight e_weight,
e.is_edit e_is_edit,
e.is_set_weight e_is_set_weight,
e.create_time e_create_time,
e.update_time e_update_time,
e.type e_type
</sql>
<sql id="Base_Column_List_Alias_f">
f.id e_JxglAppraisalIndicatorsAssessment_id,
f.appraisal_indicators_id e_JxglAppraisalIndicatorsAssessment_appraisal_indicators_id,
f.assessor_id e_JxglAppraisalIndicatorsAssessment_assessor_id,
f.assessor_name e_JxglAppraisalIndicatorsAssessment_assessor_name,
f.score e_JxglAppraisalIndicatorsAssessment_score,
f.remarks e_JxglAppraisalIndicatorsAssessment_remarks,
f.type e_JxglAppraisalIndicatorsAssessment_type,
f.create_time e_JxglAppraisalIndicatorsAssessment_create_time
</sql>
<sql id="Base_Column_List_Alias_g">
g.id e_JxglAppraisalItem_id,
g.appraisal_indicators_id e_JxglAppraisalItem_appraisal_indicators_id,
g.title e_JxglAppraisalItem_title,
g.content e_JxglAppraisalItem_content,
g.ranks e_JxglAppraisalItem_ranks
</sql>
<sql id="Base_Column_List_Alias">
id JxglAppraisal_id,
performance_appraisal_id JxglAppraisal_performance_appraisal_id,
emp_num JxglAppraisal_emp_num,
name JxglAppraisal_name,
appraisal_explain JxglAppraisal_appraisal_explain,
......@@ -33,11 +197,89 @@
sts JxglAppraisal_sts
</sql>
<select id="selectListByQuery" resultMap="BaseResultMap_All" >
SELECT
<include refid="Base_Column_List_a" />,
b.name user_name, b.phone,
(SELECT name FROM zzgl_bmgw_m WHERE id = (SELECT up_id FROM zzgl_bmgw_m WHERE id = b.bmgw_id limit 1) limit 1) as bm_name,
(SELECT name FROM yggl_main_emp WHERE emp_num = c.executor_id AND org_code = #{param.orgCode}) as executor_name,
(SELECT executor_name FROM jxgl_process_node WHERE process_type = 4 AND sts = 2 LIMIT 1) as confirmor,
d.comprehensive_score ,d.level
FROM jxgl_appraisal a
LEFT JOIN yggl_main_emp b ON a.emp_num = b.emp_num AND b.org_code = #{param.orgCode}
LEFT JOIN jxgl_process_node c ON a.id = c.appraisal_id AND c.sts = 1
LEFT JOIN jxgl_appraisal_assessment d ON a.id = d.appraisal_id AND d.type = 1
<!-- 缺部门 搜索 -->
WHERE a.performance_appraisal_id = #{param.id}
<if test="param.query != null and param.query != ''">
and (
b.name like CONCAT('%',#{param.query},'%') or
b.phone like CONCAT('%',#{param.query},'%')
)
</if>
<if test="param.sts != null">
and a.sts = #{param.sts}
</if>
ORDER BY a.id DESC
</select>
<select id="selectListEmpByQuery" resultMap="BaseResultMap_Emp" >
SELECT
a.emp_num,
b.name user_name, b.phone,b.rz_time,
(SELECT name FROM zzgl_bmgw_m WHERE id = (SELECT up_id FROM zzgl_bmgw_m WHERE id = b.bmgw_id limit 1) limit 1) as bm_name,
SUM((CASE WHEN c.sts = 3 THEN 1 ELSE 0 END)) AS archivedPNum,
SUM((CASE WHEN c.sts in (0,1,2) THEN 1 ELSE 0 END)) AS underwayPNum,
(SELECT name FROM jxgl_performance_appraisal WHERE id = a.performance_appraisal_id ORDER BY create_time DESC LIMIT 1 ) recentlyProject,
(SELECT comprehensive_score FROM jxgl_appraisal_assessment WHERE type = 1 AND appraisal_id in (SELECT id FROM jxgl_appraisal WHERE emp_num = a.emp_num) ORDER BY create_time DESC LIMIT 1 ) recentlyScore,
(SELECT level FROM jxgl_appraisal_assessment WHERE type = 1 AND appraisal_id in (SELECT id FROM jxgl_appraisal WHERE emp_num = a.emp_num) ORDER BY create_time DESC LIMIT 1 ) recentlyLevel
FROM jxgl_appraisal a
LEFT JOIN yggl_main_emp b ON a.emp_num = b.emp_num AND b.org_code = #{param.orgCode}
LEFT JOIN jxgl_performance_appraisal c ON a.performance_appraisal_id = c.id
<!-- 缺部门 搜索 -->
<where>
<if test="param.query != null and param.query != ''">
and (
b.name like CONCAT('%',#{param.query},'%') or
b.phone like CONCAT('%',#{param.query},'%')
)
</if>
</where>
GROUP BY a.emp_num
ORDER BY a.id DESC
</select>
<select id="selectDetailById" resultMap="BaseResultMap_Detail">
SELECT
<include refid="Base_Column_List_a" />,
<include refid="Base_Column_List_Alias_b" />,
<include refid="Base_Column_List_Alias_c" />,
<include refid="Base_Column_List_Alias_d" />,
<include refid="Base_Column_List_Alias_e" />,
<include refid="Base_Column_List_Alias_f" />,
<include refid="Base_Column_List_Alias_g" />
FROM
jxgl_appraisal a
LEFT JOIN jxgl_process_node b ON a.id = b.appraisal_id
LEFT JOIN jxgl_appraisal_assessment c ON a.id = c.appraisal_id
LEFT JOIN jxgl_appraisal_log d ON a.id = d.appraisal_id
LEFT JOIN jxgl_appraisal_indicators e ON a.id = e.appraisal_id
LEFT JOIN jxgl_appraisal_indicators_assessment f ON e.id = f.appraisal_indicators_id
LEFT JOIN jxgl_appraisal_item g ON e.id = g.appraisal_indicators_id
WHERE a.id = #{id}
</select>
<!--
<insert id="insert" useGeneratedKeys="true" keyColumn="id" parameterType="cn.timer.api.bean.jxgl.JxglAppraisal">
INSERT INTO jxgl_appraisal
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test ='null != performanceAppraisalId'>
performance_appraisal_id,
</if>
<if test ='null != empNum'>
emp_num,
</if>
......@@ -58,6 +300,9 @@
</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test ='null != performanceAppraisalId'>
#{performanceAppraisalId},
</if>
<if test ='null != empNum'>
#{empNum},
</if>
......@@ -87,6 +332,7 @@
<update id="update" parameterType="cn.timer.api.bean.jxgl.JxglAppraisal">
UPDATE jxgl_appraisal
<set>
<if test ='null != performanceAppraisalId'>performance_appraisal_id = #{performanceAppraisalId},</if>
<if test ='null != empNum'>emp_num = #{empNum},</if>
<if test ='null != name'>name = #{name},</if>
<if test ='null != appraisalExplain'>appraisal_explain = #{appraisalExplain},</if>
......
......@@ -12,6 +12,33 @@
<result column="update_time" property="updateTime" />
</resultMap>
<resultMap id="BaseResultMap_b" type="cn.timer.api.bean.jxgl.JxglAppraisalIndicatorsT" >
<id column="id" property="id" />
<result column="appraisal_t_id" property="appraisalTId" />
<result column="title" property="title" />
<result column="weight" property="weight" />
<result column="is_edit" property="isEdit" />
<result column="is_set_weight" property="isSetWeight" />
<result column="create_time" property="createTime" />
<result column="update_time" property="updateTime" />
<result column="type" property="type" />
<collection column="JxglAppraisalItemT_id" property="appraisalItemTs" ofType="cn.timer.api.bean.jxgl.JxglAppraisalItemT"
resultMap="cn.timer.api.dao.jxgl.JxglAppraisalItemTMapper.BaseResultMap" columnPrefix="JxglAppraisalItemT_">
</collection>
</resultMap>
<resultMap id="BaseResultMap_All" type="cn.timer.api.bean.jxgl.JxglAppraisalT" >
<id column="id" property="id" />
<result column="org_code" property="orgCode" />
<result column="name" property="name" />
<result column="appraisal_explain" property="appraisalExplain" />
<result column="create_time" property="createTime" />
<result column="update_time" property="updateTime" />
<collection column="JxglAppraisalIndicatorsT_id" property="appraisalIndicatorsTs" ofType="cn.timer.api.bean.jxgl.JxglAppraisalIndicatorsT"
resultMap="cn.timer.api.dao.jxgl.JxglAppraisalTMapper.BaseResultMap_b" columnPrefix="JxglAppraisalIndicatorsT_">
</collection>
</resultMap>
<sql id="Base_Column_List">
id,
org_code,
......@@ -30,6 +57,48 @@
update_time JxglAppraisalT_update_time
</sql>
<sql id="Base_Column_List_a">
a.id,
a.org_code,
a.name,
a.appraisal_explain,
a.create_time,
a.update_time
</sql>
<sql id="Base_Column_List_Alias_b">
b.id JxglAppraisalIndicatorsT_id,
b.appraisal_t_id JxglAppraisalIndicatorsT_appraisal_t_id,
b.title JxglAppraisalIndicatorsT_title,
b.weight JxglAppraisalIndicatorsT_weight,
b.is_edit JxglAppraisalIndicatorsT_is_edit,
b.is_set_weight JxglAppraisalIndicatorsT_is_set_weight,
b.create_time JxglAppraisalIndicatorsT_create_time,
b.update_time JxglAppraisalIndicatorsT_update_time,
b.type JxglAppraisalIndicatorsT_type
</sql>
<sql id="Base_Column_List_Alias_c">
c.id JxglAppraisalIndicatorsT_JxglAppraisalItemT_id,
c.appraisal_indicators_t_id JxglAppraisalIndicatorsT_JxglAppraisalItemT_appraisal_indicators_t_id,
c.title JxglAppraisalIndicatorsT_JxglAppraisalItemT_title,
c.content JxglAppraisalIndicatorsT_JxglAppraisalItemT_content,
c.ranks JxglAppraisalIndicatorsT_JxglAppraisalItemT_ranks
</sql>
<select id="selectDetailById" resultMap="BaseResultMap_All">
SELECT
<include refid="Base_Column_List_a" />,
<include refid="Base_Column_List_Alias_b" />,
<include refid="Base_Column_List_Alias_c" />
FROM jxgl_appraisal_t a
LEFT JOIN jxgl_appraisal_indicators_t b ON a.id = b.appraisal_t_id
LEFT JOIN jxgl_appraisal_item_t c ON b.id = c.appraisal_indicators_t_id
WHERE a.id = #{id}
</select>
<!--
<insert id="insert" useGeneratedKeys="true" keyColumn="id" parameterType="cn.timer.api.bean.jxgl.JxglAppraisalT">
......
......@@ -11,6 +11,17 @@
<result column="update_time" property="updateTime" />
</resultMap>
<resultMap id="BaseResultMap_All" type="cn.timer.api.bean.jxgl.JxglBasicSetting" >
<id column="id" property="id" />
<result column="org_code" property="orgCode" />
<result column="max_score" property="maxScore" />
<result column="create_time" property="createTime" />
<result column="update_time" property="updateTime" />
<collection column="JxglPerformanceRating_id" property="performanceRatings" ofType="cn.timer.api.bean.jxgl.JxglPerformanceRating"
resultMap="cn.timer.api.dao.jxgl.JxglPerformanceRatingMapper.BaseResultMap" columnPrefix="JxglPerformanceRating_">
</collection>
</resultMap>
<sql id="Base_Column_List">
id,
org_code,
......@@ -27,6 +38,32 @@
update_time JxglBasicSetting_update_time
</sql>
<sql id="Base_Column_List_a">
a.id,
a.org_code,
a.max_score,
a.create_time,
a.update_time
</sql>
<sql id="Base_Column_List_Alias_b">
b.id JxglPerformanceRating_id,
b.basic_setting_id JxglPerformanceRating_basic_setting_id,
b.name JxglPerformanceRating_name,
b.section_min_score JxglPerformanceRating_section_min_score,
b.section_max_score JxglPerformanceRating_section_max_score,
b.ranks JxglPerformanceRating_ranks
</sql>
<select id="selectAll" resultMap="BaseResultMap_All">
SELECT
<include refid="Base_Column_List_a" />,
<include refid="Base_Column_List_Alias_b" />
FROM jxgl_basic_setting a
LEFT JOIN jxgl_performance_rating b ON a.id = b.basic_setting_id
WHERE a.org_code = #{orgCode}
</select>
<!--
<insert id="insert" useGeneratedKeys="true" keyColumn="id" parameterType="cn.timer.api.bean.jxgl.JxglBasicSetting">
......
......@@ -16,6 +16,37 @@
<result column="appraisal_t_name" property="appraisalTName" />
<result column="appraisal_person_num" property="appraisalPersonNum" />
<result column="process_node" property="processNode" />
<result column="being_appraisal_person" property="beingAppraisalPerson" />
<result column="create_time" property="createTime" />
<result column="update_time" property="updateTime" />
</resultMap>
<resultMap id="BaseResultMap_ALl" type="cn.timer.api.bean.jxgl.JxglPerformanceAppraisal" >
<id column="id" property="id" />
<result column="org_code" property="orgCode" />
<result column="name" property="name" />
<result column="period" property="period" />
<result column="appraisal_start_time" property="appraisalStartTime" />
<result column="appraisal_end_time" property="appraisalEndTime" />
<result column="is_visible" property="isVisible" />
<result column="sts" property="sts" />
<result column="scope" property="scope" />
<result column="appraisal_t_name" property="appraisalTName" />
<result column="appraisal_person_num" property="appraisalPersonNum" />
<result column="process_node" property="processNode" />
<result column="being_appraisal_person" property="beingAppraisalPerson" />
<result column="create_time" property="createTime" />
<result column="update_time" property="updateTime" />
<result column="target_seting" property="targetSeting" />
<result column="performance_score" property="performanceScore" />
<result column="result_verification" property="resultVerification" />
<result column="performance_archive" property="performanceArchive" />
<association property="appraisal" column="b_id" javaType="cn.timer.api.bean.jxgl.JxglAppraisal" columnPrefix="b_"
resultMap="cn.timer.api.dao.jxgl.JxglAppraisalMapper.BaseResultMap" />
<association property="appraisalAssessment" column="c_id" javaType="cn.timer.api.bean.jxgl.JxglAppraisalAssessment" columnPrefix="c_"
resultMap="cn.timer.api.dao.jxgl.JxglAppraisalAssessmentMapper.BaseResultMap" />
</resultMap>
<sql id="Base_Column_List">
......@@ -30,7 +61,51 @@
scope,
appraisal_t_name,
appraisal_person_num,
process_node
process_node,
being_appraisal_person,
create_time,
update_time
</sql>
<sql id="Base_Column_List_a">
a.id,
a.org_code,
a.name,
a.period,
a.appraisal_start_time,
a.appraisal_end_time,
a.is_visible,
a.sts,
a.scope,
a.appraisal_t_name,
a.appraisal_person_num,
<!-- a.process_node,
a.being_appraisal_person, -->
a.create_time,
a.update_time
</sql>
<sql id="Base_Column_List_b">
b.id b_id,
b.performance_appraisal_id b_performance_appraisal_id,
b.emp_num b_emp_num,
b.name b_name,
b.appraisal_explain b_appraisal_explain,
b.create_time b_create_time,
b.update_time b_update_time,
b.sts b_sts
</sql>
<sql id="Base_Column_List_c">
c.id c_id,
c.appraisal_id c_appraisal_id,
c.assessor_id c_assessor_id,
c.assessor_name c_assessor_name,
c.comprehensive_score c_comprehensive_score,
c.remarks c_remarks,
c.type c_type,
c.create_time c_create_time,
c.level c_level
</sql>
<sql id="Base_Column_List_Alias">
......@@ -45,9 +120,79 @@
scope JxglPerformanceAppraisal_scope,
appraisal_t_name JxglPerformanceAppraisal_appraisal_t_name,
appraisal_person_num JxglPerformanceAppraisal_appraisal_person_num,
process_node JxglPerformanceAppraisal_process_node
process_node JxglPerformanceAppraisal_process_node,
being_appraisal_person JxglPerformanceAppraisal_being_appraisal_person,
create_time JxglPerformanceAppraisal_create_time,
update_time JxglPerformanceAppraisal_update_time
</sql>
<select id="selectListByQuery" resultMap="BaseResultMap_ALl" >
SELECT
<include refid="Base_Column_List_a" />,
SUM((CASE WHEN b.sts in (0,1) THEN 1 ELSE 0 END)) AS target_seting,
SUM((CASE WHEN b.sts in (2,3) THEN 1 ELSE 0 END)) AS performance_score,
SUM((CASE WHEN b.sts in (4,5) THEN 1 ELSE 0 END)) AS result_verification,
SUM((CASE WHEN b.sts = 7 THEN 1 ELSE 0 END)) AS performance_archive
FROM jxgl_performance_appraisal a
LEFT JOIN jxgl_appraisal b ON a.id = b.performance_appraisal_id
WHERE a.org_code = #{param.orgCode} AND a.sts != 3
<if test="param.query != null and param.query != ''">
and (
a.name like CONCAT('%',#{param.query},'%')
)
</if>
<if test="param.sts != null">
and a.sts = #{param.sts}
</if>
<if test="param.startTime != null and param.startTime != ''">
and a.create_time <![CDATA[ >= ]]> #{param.startTime}
</if>
<if test="param.endTime != null and param.endTime != ''">
and a.create_time <![CDATA[ <= ]]> #{param.endTime}
</if>
GROUP BY a.id
ORDER BY a.id DESC
</select>
<select id="selectArchiveListByQuery" resultMap="BaseResultMap_ALl" >
SELECT
<include refid="Base_Column_List_a" />,
SUM((CASE WHEN b.sts in (0,1) THEN 1 ELSE 0 END)) AS target_seting,
SUM((CASE WHEN b.sts in (2,3) THEN 1 ELSE 0 END)) AS performance_score,
SUM((CASE WHEN b.sts in (4,5) THEN 1 ELSE 0 END)) AS result_verification,
SUM((CASE WHEN b.sts = 7 THEN 1 ELSE 0 END)) AS performance_archive
FROM jxgl_performance_appraisal a
LEFT JOIN jxgl_appraisal b ON a.id = b.performance_appraisal_id
WHERE a.org_code = #{param.orgCode} AND a.sts = 3
<if test="param.query != null and param.query != ''">
and (
a.name like CONCAT('%',#{param.query},'%')
)
</if>
<if test="param.startTime != null and param.startTime != ''">
and a.create_time <![CDATA[ >= ]]> #{param.startTime}
</if>
<if test="param.endTime != null and param.endTime != ''">
and a.create_time <![CDATA[ <= ]]> #{param.endTime}
</if>
GROUP BY a.id
ORDER BY a.id DESC
</select>
<select id="selectListEmpByQuery" resultMap="BaseResultMap_ALl" >
SELECT
a.name,a.appraisal_start_time,a.appraisal_end_time,
b.sts b_sts,
c.comprehensive_score c_comprehensive_score,
c.level c_level
FROM jxgl_performance_appraisal a
LEFT JOIN jxgl_appraisal b ON b.performance_appraisal_id = a.id
LEFT JOIN jxgl_appraisal_assessment c ON b.id = c.appraisal_id
WHERE a.org_code = #{param.orgCode} AND b.emp_num = #{param.id} AND c.type = 1
</select>
<!--
<insert id="insert" useGeneratedKeys="true" keyColumn="id" parameterType="cn.timer.api.bean.jxgl.JxglPerformanceAppraisal">
......@@ -84,7 +229,16 @@
appraisal_person_num,
</if>
<if test ='null != processNode'>
process_node
process_node,
</if>
<if test ='null != beingAppraisalPerson'>
being_appraisal_person,
</if>
<if test ='null != createTime'>
create_time,
</if>
<if test ='null != updateTime'>
update_time
</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
......@@ -119,7 +273,16 @@
#{appraisalPersonNum},
</if>
<if test ='null != processNode'>
#{processNode}
#{processNode},
</if>
<if test ='null != beingAppraisalPerson'>
#{beingAppraisalPerson},
</if>
<if test ='null != createTime'>
#{createTime},
</if>
<if test ='null != updateTime'>
#{updateTime}
</if>
</trim>
</insert>
......@@ -142,7 +305,10 @@
<if test ='null != scope'>scope = #{scope},</if>
<if test ='null != appraisalTName'>appraisal_t_name = #{appraisalTName},</if>
<if test ='null != appraisalPersonNum'>appraisal_person_num = #{appraisalPersonNum},</if>
<if test ='null != processNode'>process_node = #{processNode}</if>
<if test ='null != processNode'>process_node = #{processNode},</if>
<if test ='null != beingAppraisalPerson'>being_appraisal_person = #{beingAppraisalPerson},</if>
<if test ='null != createTime'>create_time = #{createTime},</if>
<if test ='null != updateTime'>update_time = #{updateTime}</if>
</set>
WHERE id = #{id}
</update>
......
......@@ -30,6 +30,17 @@
ranks JxglPerformanceRating_ranks
</sql>
<insert id="insertList" useGeneratedKeys="true" keyColumn="id" parameterType="list">
INSERT INTO jxgl_performance_rating
(basic_setting_id,name,section_min_score,section_max_score,ranks)
values
<foreach item="item" index="index" collection="list" open="" separator="," close="">
(
#{item.basicSettingId},#{item.name},#{item.sectionMinScore},#{item.sectionMaxScore},#{item.ranks}
)
</foreach>
</insert>
<!--
<insert id="insert" useGeneratedKeys="true" keyColumn="id" parameterType="cn.timer.api.bean.jxgl.JxglPerformanceRating">
......
......@@ -313,7 +313,7 @@
bmgw.post,
dkmx.*
from kqgl_asso_dkmx dkmx
LEFT JOIN yggl_main_emp as info on info.emp_num = dkmx.userid
LEFT JOIN yggl_main_emp as info on info.emp_num = dkmx.userid and info.org_code = #{qyid,jdbcType=INTEGER}
LEFT JOIN (select m.name as post,um.name as dept,m.id as mid
from zzgl_bmgw_m m
left join zzgl_bmgw_m um on um.id = m.up_id
......@@ -339,7 +339,7 @@
bmgw.post,
dkmx.*
from kqgl_asso_dkmx dkmx
LEFT JOIN yggl_main_emp as info on info.emp_num = dkmx.userid
LEFT JOIN yggl_main_emp as info on info.emp_num = dkmx.userid and info.org_code = #{qyid,jdbcType=INTEGER}
LEFT JOIN (select m.name as post,um.name as dept,m.id as mid
from zzgl_bmgw_m m
left join zzgl_bmgw_m um on um.id = m.up_id
......
......@@ -32,6 +32,32 @@
id, dktime, lon, lat, address, results, user_id, type, status, sort, card_type, macname,
mac, qyid, attdate, attime, dkmxid,bcid,remarks,punchmode,punchequipment
</sql>
<select id="QueryOriginalRecord" resultMap="BaseResultMap">
select dkjl.*,
bmgw.dept,
bmgw.post,
info.`name` username
from kqgl_asso_dkjl dkjl
LEFT JOIN yggl_main_emp as info on info.emp_num = dkjl.user_id and info.org_code = #{param.qyid}
LEFT JOIN (select m.name as post,um.name as dept,m.id as mid
from zzgl_bmgw_m m
left join zzgl_bmgw_m um on um.id = m.up_id
) as bmgw on bmgw.mid = info.bmgw_id
where dkjl.qyid = #{param.qyid}
<if test="param.start != ''" >
and dkjl.attime &gt;= #{param.start}
</if>
<if test="param.end != ''" >
and dkjl.attime &lt;= #{param.end}
</if>
<if test="param.text != null and param.text != ''" >
and (info.`name` like CONCAT('%',#{param.text},'%') or info.emp_num = #{param.text})
</if>
ORDER BY dkjl.id ASC
</select>
<select id="selectByPrimaryKey" resultMap="BaseResultMap" parameterType="java.lang.Integer" >
select
<include refid="Base_Column_List" />
......@@ -282,7 +308,7 @@
bmgw.post,
info.`name` username
from kqgl_asso_dkjl dkjl
LEFT JOIN yggl_main_emp as info on info.emp_num = dkjl.user_id
LEFT JOIN yggl_main_emp as info on info.emp_num = dkjl.user_id and info.org_code = #{qyid,jdbcType=INTEGER}
LEFT JOIN (select m.name as post,um.name as dept,m.id as mid
from zzgl_bmgw_m m
left join zzgl_bmgw_m um on um.id = m.up_id
......@@ -297,7 +323,7 @@
bmgw.post,
info.`name` username
from kqgl_asso_dkjl dkjl
LEFT JOIN yggl_main_emp as info on info.emp_num = dkjl.user_id
LEFT JOIN yggl_main_emp as info on info.emp_num = dkjl.user_id and info.org_code = #{qyid,jdbcType=INTEGER}
LEFT JOIN (select m.name as post,um.name as dept,m.id as mid
from zzgl_bmgw_m m
left join zzgl_bmgw_m um on um.id = m.up_id
......
......@@ -8,6 +8,7 @@
<result column="qyid" property="qyid" jdbcType="INTEGER" />
<result column="empnum" property="empnum" jdbcType="VARCHAR" />
<result column="empname" property="empname" jdbcType="VARCHAR" />
</resultMap>
<sql id="Base_Column_List" >
id, kqzid, userid, qyid
......@@ -107,7 +108,8 @@
<select id="selectAttendanceOfficerByKqzid" resultMap="BaseResultMap">
select yhkqz.*,
us.emp_num as empnum
us.emp_num as empnum,
us.name as empname
from kqgl_asso_yhkqz yhkqz
LEFT JOIN yggl_main_emp as us on us.emp_num = yhkqz.userid and us.org_code = #{orgcode}
where yhkqz.kqzid = #{kqzid,jdbcType=INTEGER}
......
......@@ -96,6 +96,34 @@
GROUP BY dk.userid
</select>
<update id="updateByPrimaryKeySelective" parameterType="cn.timer.api.bean.kqmk.KqglAssoDkmx">
UPDATE kqgl_asso_dkmx
<set>
<if test ='null != userid'>userid = #{userid},</if>
<if test ='null != data'>data = #{data},</if>
<if test ='null != sbdk1'>sbdk1 = #{sbdk1},</if>
<if test ='null != sbdk1jg'>sbdk1jg = #{sbdk1jg},</if>
<if test ='null != xbdk1'>xbdk1 = #{xbdk1},</if>
<if test ='null != xbdk1jg'>xbdk1jg = #{xbdk1jg},</if>
<if test ='null != sbdk2'>sbdk2 = #{sbdk2},</if>
<if test ='null != sbdk2jg'>sbdk2jg = #{sbdk2jg},</if>
<if test ='null != xbdk2'>xbdk2 = #{xbdk2},</if>
<if test ='null != xbdk2jg'>xbdk2jg = #{xbdk2jg},</if>
<if test ='null != sbdk3'>sbdk3 = #{sbdk3},</if>
<if test ='null != sbdk3jg'>sbdk3jg = #{sbdk3jg},</if>
<if test ='null != xbdk3'>xbdk3 = #{xbdk3},</if>
<if test ='null != xbdk3jg'>xbdk3jg = #{xbdk3jg},</if>
<if test ='null != ydkcs'>ydkcs = #{ydkcs},</if>
<if test ='null != gzsc'>gzsc = #{gzsc},</if>
<if test ='null != qyid'>qyid = #{qyid},</if>
<if test ='null != dksj'>dksj = #{dksj},</if>
<if test ='null != yzcdcs'>yzcdcs = #{yzcdcs},</if>
<if test ='null != yzcdsc'>yzcdsc = #{yzcdsc},</if>
<if test ='null != kgcdfzs'>kgcdfzs = #{kgcdfzs}</if>
</set>
WHERE id = #{id}
</update>
<!--
<insert id="insert" useGeneratedKeys="true" keyColumn="id" parameterType="cn.timer.api.bean.kqmk.KqglAssoDkmx">
......@@ -237,34 +265,6 @@
WHERE id = #{id}
</delete>
<update id="update" parameterType="cn.timer.api.bean.kqmk.KqglAssoDkmx">
UPDATE kqgl_asso_dkmx
<set>
<if test ='null != userid'>userid = #{userid},</if>
<if test ='null != data'>data = #{data},</if>
<if test ='null != sbdk1'>sbdk1 = #{sbdk1},</if>
<if test ='null != sbdk1jg'>sbdk1jg = #{sbdk1jg},</if>
<if test ='null != xbdk1'>xbdk1 = #{xbdk1},</if>
<if test ='null != xbdk1jg'>xbdk1jg = #{xbdk1jg},</if>
<if test ='null != sbdk2'>sbdk2 = #{sbdk2},</if>
<if test ='null != sbdk2jg'>sbdk2jg = #{sbdk2jg},</if>
<if test ='null != xbdk2'>xbdk2 = #{xbdk2},</if>
<if test ='null != xbdk2jg'>xbdk2jg = #{xbdk2jg},</if>
<if test ='null != sbdk3'>sbdk3 = #{sbdk3},</if>
<if test ='null != sbdk3jg'>sbdk3jg = #{sbdk3jg},</if>
<if test ='null != xbdk3'>xbdk3 = #{xbdk3},</if>
<if test ='null != xbdk3jg'>xbdk3jg = #{xbdk3jg},</if>
<if test ='null != ydkcs'>ydkcs = #{ydkcs},</if>
<if test ='null != gzsc'>gzsc = #{gzsc},</if>
<if test ='null != qyid'>qyid = #{qyid},</if>
<if test ='null != dksj'>dksj = #{dksj},</if>
<if test ='null != yzcdcs'>yzcdcs = #{yzcdcs},</if>
<if test ='null != yzcdsc'>yzcdsc = #{yzcdsc},</if>
<if test ='null != kgcdfzs'>kgcdfzs = #{kgcdfzs}</if>
</set>
WHERE id = #{id}
</update>
<select id="load" resultMap="BaseResultMap">
SELECT <include refid="Base_Column_List" />
......
......@@ -14,6 +14,7 @@
<result column="org_code" property="orgCode" />
<result column="is_open" property="isOpen" />
<result column="leave_balance" property="leaveBalance" />
<result column="rules_type" property="rulesType" />
</resultMap>
<sql id="Base_Column_List">
......@@ -26,7 +27,8 @@
create_userid,
org_code,
is_open,
leave_balance
leave_balance,
rules_type
</sql>
<sql id="Base_Column_List_Alias">
......@@ -42,8 +44,15 @@
leave_balance KqglAssoLeaveRules_leave_balance
</sql>
<select id="selHeaderdata" resultMap="BaseResultMap">
SELECT <include refid="Base_Column_List" />
FROM kqgl_asso_leave_rules
WHERE org_code = #{orgcode}
AND (leave_type = #{leavetype} OR is_open = #{isopen})
</select>
<insert id="insertleaverulesList" parameterType="java.util.List" >
insert into kqgl_asso_leave_rules (name,company,leave_type,apply,create_time,create_userid,org_code,is_open,leave_balance)
insert into kqgl_asso_leave_rules (name,company,leave_type,apply,create_time,create_userid,org_code,is_open,leave_balance,rules_type)
<foreach collection="list" item="item" index="index" open="values " close="" separator=",">
(
<if test="item.name != null" >
......@@ -71,7 +80,10 @@
#{item.isOpen,jdbcType=INTEGER},
</if>
<if test="item.leaveBalance != null" >
#{item.leaveBalance,jdbcType=INTEGER}
#{item.leaveBalance,jdbcType=INTEGER},
</if>
<if test="item.rulesType != null" >
#{item.rulesType,jdbcType=INTEGER}
</if>
)
</foreach>
......
......@@ -9,6 +9,10 @@
<result column="attgroup_id" property="attgroupId" />
</resultMap>
<resultMap id="RulesViceDtoMap" type="cn.timer.api.dto.kqmk.KqglAssoRulesViceDto" >
<result column="leave_rules_id" property="leaveRulesId" />
</resultMap>
<sql id="Base_Column_List">
id,
leave_rules_id,
......@@ -34,6 +38,13 @@
)
</foreach>
</insert>
<select id="leaveRulesIdload" resultMap="RulesViceDtoMap">
SELECT <include refid="Base_Column_List" />
FROM kqgl_asso_rules_vice
WHERE leaveRulesId = #{leaverulesid}
</select>
<!--
<insert id="insert" useGeneratedKeys="true" keyColumn="id" parameterType="cn.timer.api.bean.kqmk.KqglAssoRulesVice">
......
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