Commit a683a00f authored by 赵啸非's avatar 赵啸非

Merge remote-tracking branch 'origin/master'

parents 9a162b73 e0e60418
<template>
<!-- 弹出框表单 -->
<el-drawer
:title="title"
:visible.sync="open"
:direction="direction"
size="60%"
>
<el-drawer :title="title" :visible.sync="open" :direction="direction" size="60%">
<div style="padding:15px">
<el-form ref="form" :model="form" :rules="rules" label-width="120px">
<el-row>
<!-- <Field label="请假人" prop="leavePersonId" v-model="form.leavePersonId" placeholder="请输入请假人"/> -->
<Field
<!-- <Field
label="请假人"
prop="leavePerson"
v-model="form.leavePerson"
placeholder="请输入请假人"
:maxLength="10"
:disabled="pageInfo.type == 'view'"
/>
<Field
label="所属部门"
prop="deptId"
v-model="form.deptId"
type="select"
placeholder="请选择所属部门"
:enumData="dict.deptId"
:disabled="pageInfo.type == 'view'"
/>
/> -->
<Field label="请假人" prop="leavePerson" type="select" filterable remote v-model="form.leavePerson"
placeholder="请输入请假人" :remote-method="remoteMethod" :maxLength="10" :enumData="staffList"
:disabled="pageInfo.type == 'view'" />
<Field label="所属部门" prop="deptId" v-model="form.deptId" type="select" placeholder="请选择所属部门"
:enumData="dict.deptId" :disabled="pageInfo.type == 'view'" />
<!-- <Field label="所属部门" prop="deptName" v-model="form.deptName" type="textarea" placeholder="请输入所属部门"/> -->
<Field
label="电话号码"
prop="phoneNumber"
v-model="form.phoneNumber"
placeholder="请输入电话号码"
:maxLength="11"
:disabled="pageInfo.type == 'view'"
/>
<Field
label="请假类型"
prop="leaveType"
v-model="form.leaveType"
type="select"
:enumData="dict.leaveType"
placeholder="请选择请假类型"
:disabled="pageInfo.type == 'view'"
/>
<Field label="电话号码" prop="phoneNumber" v-model="form.phoneNumber" placeholder="请输入电话号码" :maxLength="11"
:disabled="pageInfo.type == 'view'" />
<Field label="请假类型" prop="leaveType" v-model="form.leaveType" type="select" :enumData="dict.leaveType"
placeholder="请选择请假类型" :disabled="pageInfo.type == 'view'" />
<Field
label="开始时间"
prop="startTime"
v-model="form.startTime"
type="datetime"
@change="changedate"
:disabled="pageInfo.type == 'view'"
/>
<Field
label="结束时间"
prop="endTime"
v-model="form.endTime"
type="datetime"
@change="changedate"
:disabled="pageInfo.type == 'view'"
/>
<Field label="开始时间" prop="startTime" v-model="form.startTime" type="datetime" @change="changedate"
:disabled="pageInfo.type == 'view'" />
<Field label="结束时间" prop="endTime" v-model="form.endTime" type="datetime" @change="changedate"
:disabled="pageInfo.type == 'view'" />
<Field
label="时长(单位:小时)"
disabled
prop="duration"
v-model="form.duration / 60 / 60"
placeholder="请输入时长(秒)"
:maxLength="4"
/>
<Field
label="请假事由"
prop="reason"
v-model="form.reason"
type="textarea"
placeholder="请输入请假事由"
:disabled="pageInfo.type == 'view'"
/>
<Field
label="审核结果"
prop="auditResult"
v-model="form.auditResult"
type="radioCol"
:enumData="dict.auditResult"
placeholder="请选择审核结果"
:disabled="pageInfo.type == 'view'"
style="width: 100%;"
/>
<Field label="时长(单位:小时)" disabled prop="duration" v-model="form.duration / 60 / 60" placeholder="请输入时长(秒)"
:maxLength="4" />
<Field label="请假事由" prop="reason" v-model="form.reason" type="textarea" placeholder="请输入请假事由"
:disabled="pageInfo.type == 'view'" />
<Field label="审核结果" prop="auditResult" v-model="form.auditResult" type="radioCol" :enumData="dict.auditResult"
placeholder="请选择审核结果" :disabled="pageInfo.type == 'view'" style="width: 100%;" />
<Field
label="审批负责人"
prop="approverId"
type="select"
v-model="form.approverId"
placeholder="请选择审批负责人"
:enumData="dict.approverId"
:disabled="pageInfo.type == 'view'"
/>
<Field
label="申请时间"
prop="createTime"
v-model="form.createTime"
type="datetime"
disabled
/>
<Field
label="审核说明"
prop="auditDesc"
type="textarea"
v-model="form.auditDesc"
placeholder="请输入审核说明"
:disabled="pageInfo.type == 'view'"
style="width: 100%;"
/>
<Field label="审批负责人" prop="approverId" type="select" v-model="form.approverId" placeholder="请选择审批负责人"
:enumData="dict.approverId" :disabled="pageInfo.type == 'view'" />
<Field label="申请时间" prop="createTime" v-model="form.createTime" type="datetime" disabled />
<Field label="审核说明" prop="auditDesc" type="textarea" v-model="form.auditDesc" placeholder="请输入审核说明"
:disabled="pageInfo.type == 'view'" style="width: 100%;" />
</el-row>
<!-- <Field label="审批负责人" prop="approver" v-model="form.approver" placeholder="请输入审批负责人"/> -->
<!-- <Field label="附件" prop="attachment" v-model="form.attachment" type="textarea" placeholder="请输入附件"/> -->
<Field
label="备注"
prop="remark"
v-model="form.remark"
type="textarea"
placeholder="请输入备注"
:disabled="pageInfo.type == 'view'"
style="width: 100%;"
/>
<Field label="备注" prop="remark" v-model="form.remark" type="textarea" placeholder="请输入备注"
:disabled="pageInfo.type == 'view'" style="width: 100%;" />
<el-form-item label="附件路径" prop="attachmentPathList">
<FileUpload
@input="uploadFn"
:value="form.attachmentPathList"
:fileNumber="1"
:pageInfoType="pageInfo.type"
/>
<FileUpload @input="uploadFn" :value="form.attachmentPathList" :fileNumber="1"
:pageInfoType="pageInfo.type" />
</el-form-item>
<form-buttons
@submit="submitForm"
noCancelBtn
v-if="pageInfo.type !== 'view'"
/>
<form-buttons @submit="submitForm" noCancelBtn v-if="pageInfo.type !== 'view'" />
</el-form>
</div>
</el-drawer>
......@@ -163,6 +74,7 @@ export default {
loading: true,
// 弹出层标题
title: "请假记录信息",
staffList: {},
// 是否显示弹出层
open: false,
direction: "rtl",
......@@ -172,9 +84,19 @@ export default {
// 表单校验
rules: {
leavePerson: [
{ required: true, message: "请输入请假人", trigger: "blur" },
{
required: true,
message: "请输入请假人",
trigger: "blur",
},
],
deptId: [
{
required: true,
message: "请选择部门",
trigger: "change",
},
],
deptId: [{ required: true, message: "请选择部门", trigger: "change" }],
// phoneNumber: [
// { required: true, message: "请输入电话号码", trigger: "blur" },
// {
......@@ -184,33 +106,71 @@ export default {
// },
// ],
leaveType: [
{ required: true, message: "请选择请假类型", trigger: "change" },
{
required: true,
message: "请选择请假类型",
trigger: "change",
},
],
startTime: [
{ required: true, message: "请选择开始时间", trigger: "change" },
{
required: true,
message: "请选择开始时间",
trigger: "change",
},
],
endTime: [
{ required: true, message: "请选择结束时间", trigger: "change" },
{
required: true,
message: "请选择结束时间",
trigger: "change",
},
],
duration: [
{ required: true, message: "请输入时长", trigger: "blur" },
],
duration: [{ required: true, message: "请输入时长", trigger: "blur" }],
// reason: [
// { required: true, message: "请输入请假理由", trigger: "blur" },
// ],
approverId: [
{ required: true, message: "请选择审批人", trigger: "change" },
{
required: true,
message: "请选择审批人",
trigger: "change",
},
],
// attachmentPathList: [
// { required: true, message: "请上传附件文件", trigger: "change" },
// ],
auditResult: [
{ required: true, message: "请选择审核结果", trigger: "change" },
{
required: true,
message: "请选择审核结果",
trigger: "change",
},
],
},
attachmentPath: "",
};
},
watch: {},
mounted() {
this.remoteMethod()
},
methods: {
async remoteMethod() {
await this.$post(`/staff/list`, {
page: 1,
size: -1,
}).then((res) => {
let data = res.data.data
let obj = {}
for (let key in data) {
obj[key] = data[key].name
}
this.staffList = obj
});
},
// beforeSubmit() {
// if (this.form.endTime.valueOf() > this.form.startTime.valueOf()) {
// // this.submitForm();
......@@ -285,7 +245,9 @@ export default {
},
changedate(val) {
if (this.form.startTime && this.form.endTime) {
if (this.form.endTime.valueOf() > this.form.startTime.valueOf()) {
if (
this.form.endTime.valueOf() > this.form.startTime.valueOf()
) {
// this.form.duration = getSec(this.form.startTime, this.form.endTime);
this.$post("/attendance/getTimeCount", {
startTime: this.form.startTime,
......
......@@ -32,6 +32,7 @@ public class AttendanceGroupServiceImpl extends AbstractCRUDServiceImpl<Attendan
if(!ObjectUtils.isEmpty(entity.getAttendanceGroupStaffList())){
entity.getAttendanceGroupStaffList().stream().peek(item->{
item.setGroupId(entity.getId());
item.setGroupName(entity.getGroupName());
item.setCreateUser(context.getUser().getLoginName());
item.setCreateUserId(context.getUser().getId());
item.setCreateTime(new Date());
......@@ -48,6 +49,7 @@ public class AttendanceGroupServiceImpl extends AbstractCRUDServiceImpl<Attendan
attendanceGroupStaffService.remove(attendanceGroupStaffIds,context);
entity.getAttendanceGroupStaffList().stream().peek(item ->{
item.setGroupId(entity.getId());
item.setGroupName(entity.getGroupName());
item.setCreateUser(context.getUser().getLoginName());
item.setCreateUserId(context.getUser().getId());
item.setCreateTime(new Date());
......
......@@ -11,19 +11,21 @@ import com.mortals.framework.util.DateUtils;
import com.mortals.framework.util.ThreadPool;
import com.mortals.xhx.base.system.user.model.UserEntity;
import com.mortals.xhx.base.system.user.service.UserService;
import com.mortals.xhx.common.code.AppealResultEnum;
import com.mortals.xhx.common.code.AuditStatusEnum;
import com.mortals.xhx.common.code.ProcessInstanceEnum;
import com.mortals.xhx.common.code.YesNoEnum;
import com.mortals.xhx.common.code.*;
import com.mortals.xhx.common.utils.AddAttendThread;
import com.mortals.xhx.common.utils.AttendSummaryThread;
import com.mortals.xhx.module.attendance.model.AttendanceLeaveRecordQuery;
import com.mortals.xhx.module.attendance.model.AttendanceRecordHikEntity;
import com.mortals.xhx.module.attendance.model.AttendanceRecordHikQuery;
import com.mortals.xhx.module.attendance.model.*;
import com.mortals.xhx.module.attendance.model.vo.AttendanceSummaryQuery;
import com.mortals.xhx.module.attendance.service.AttendanceGroupStaffService;
import com.mortals.xhx.module.attendance.service.AttendanceRecordHikService;
import com.mortals.xhx.module.attendance.service.AttendanceStatService;
import com.mortals.xhx.module.dingding.personal.service.IDingPersonService;
import com.mortals.xhx.module.perform.model.PerformAttendRecordEntity;
import com.mortals.xhx.module.perform.model.PerformRulesEntity;
import com.mortals.xhx.module.perform.model.PerformRulesQuery;
import com.mortals.xhx.module.perform.service.PerformAttendRecordService;
import com.mortals.xhx.module.perform.service.PerformRulesService;
import com.mortals.xhx.module.staff.model.StaffEntity;
import com.mortals.xhx.module.staff.service.StaffService;
import org.apache.commons.lang3.ObjectUtils;
import org.springframework.beans.factory.annotation.Autowired;
......@@ -32,9 +34,9 @@ import com.mortals.framework.service.impl.AbstractCRUDServiceImpl;
import com.mortals.framework.exception.AppException;
import com.mortals.framework.model.Context;
import com.mortals.xhx.module.attendance.dao.AttendanceLeaveRecordDao;
import com.mortals.xhx.module.attendance.model.AttendanceLeaveRecordEntity;
import com.mortals.xhx.module.attendance.service.AttendanceLeaveRecordService;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date;
......@@ -65,6 +67,12 @@ public class AttendanceLeaveRecordServiceImpl extends AbstractCRUDServiceImpl<At
private AttendanceRecordHikService hikService;
@Autowired
private IDingPersonService dingPersonService;
@Autowired
private PerformAttendRecordService performAttendRecordService;
@Autowired
private AttendanceGroupStaffService attendanceGroupStaffService;
@Autowired
private PerformRulesService performRulesService;
@Override
protected void updateAfter(AttendanceLeaveRecordEntity entity, Context context) throws AppException {
......@@ -77,7 +85,7 @@ public class AttendanceLeaveRecordServiceImpl extends AbstractCRUDServiceImpl<At
query.setSummaryTimeEnd(DateUtils.getStrDate(entity.getEndTime()));
cacheService.lpush(KEY_ATTENDANCE_STAT_CACHE, query);
}*/
creatPerformAttend(entity, context);
doUpdateRecordAndSummary(entity, context);
}
......@@ -109,7 +117,7 @@ public class AttendanceLeaveRecordServiceImpl extends AbstractCRUDServiceImpl<At
@Override
protected void saveAfter(AttendanceLeaveRecordEntity entity, Context context) throws AppException {
super.saveAfter(entity, context);
creatPerformAttend(entity, context);
doUpdateRecordAndSummary(entity, context);
}
......@@ -210,4 +218,60 @@ public class AttendanceLeaveRecordServiceImpl extends AbstractCRUDServiceImpl<At
}
}
}
private void creatPerformAttend(AttendanceLeaveRecordEntity entity, Context context){
try {
if(AppealResultEnum.通过.getValue() == entity.getAuditResult() && LeaveTypeEnum.事假.getValue() == entity.getLeaveType()){
//以半天4小时为计算单位进行扣分
int multiple = entity.getDuration()/14400;
if(multiple >0 ) {
PerformAttendRecordEntity recordEntity = conversionLeaveRecord(entity);
recordEntity.setCreateTime(new Date());
recordEntity.setCreateUserId(1l);
recordEntity.setErrorTime(entity.getStartTime());
recordEntity.setScore(recordEntity.getScore().multiply(new BigDecimal(multiple)));
performAttendRecordService.save(recordEntity, context);
}
}
}catch (Exception e){
log.error(e.getMessage());
}
}
private PerformAttendRecordEntity conversionLeaveRecord(AttendanceLeaveRecordEntity entity){
PerformAttendRecordEntity recordEntity = new PerformAttendRecordEntity();
recordEntity.initAttrValue();
StaffEntity staffEntity = staffService.get(entity.getLeavePersonId());
recordEntity.setStaffId(entity.getLeavePersonId());
recordEntity.setStaffName(entity.getLeavePerson());
if(staffEntity!=null){
recordEntity.setWorkNum(staffEntity.getWorkNum());
}
recordEntity.setDeptId(entity.getDeptId());
recordEntity.setDeptName(entity.getDeptName());
recordEntity.setSalaId(entity.getSalaId());
recordEntity.setSalaName(entity.getSalaName());
AttendanceGroupStaffEntity groupStaffEntity = attendanceGroupStaffService.selectOne(new AttendanceGroupStaffQuery().staffId(entity.getLeavePersonId()));
if(groupStaffEntity!=null){
recordEntity.setAttendanceGroupId(groupStaffEntity.getGroupId());
recordEntity.setAttendanceGroupName(groupStaffEntity.getGroupName());
}
PerformRulesEntity performRulesEntity = performRulesService.selectOne(new PerformRulesQuery().ruleCode("ATTEND1009"));
if(performRulesEntity!=null){
recordEntity.setRuleId(performRulesEntity.getId());
recordEntity.setRuleName(performRulesEntity.getName());
recordEntity.setCategoryId(performRulesEntity.getCategoryId());
recordEntity.setCategoryName(performRulesEntity.getCategoryName());
recordEntity.setSubAddType(performRulesEntity.getSubAddType());
recordEntity.setScore(performRulesEntity.getScore());
recordEntity.setRemark(performRulesEntity.getContent());
}else {
throw new AppException("没有查询到请假扣分规则:ATTEND1009");
}
recordEntity.setSubMethod(SubMethodEnum.系统自动.getValue());
recordEntity.setDeductPerson("系统管理员");
return recordEntity;
}
}
\ No newline at end of file
......@@ -95,6 +95,7 @@ public class PerformAttendRecordServiceImpl extends AbstractCRUDServiceImpl<Perf
entity.setDeptName(staffCache == null ? "" : staffCache.getDeptName());
entity.setSalaId(staffCache == null ? null : staffCache.getSalaId());
entity.setSalaName(staffCache == null ? "" : staffCache.getSalaName());
entity.setWorkNum(staffCache == null ? "" : staffCache.getWorkNum());
}
entity.setErrorResult(entity.getRuleName());
entity.setDeductTime(new Date());
......
......@@ -106,6 +106,8 @@ public class WindowWorkmanPerformServiceImpl extends AbstractCRUDServiceImpl<Win
item.setDeptName(staff.getDeptName());
item.setSalaId(staff.getSalaId());
item.setSalaName(staff.getSalaName());
item.setYear(entity.getYear());
item.setMonth(entity.getMonth());
}
});
windowWorkmanPerformDetailService.save(entity.getWorkmanPerformDetailList());
......@@ -133,6 +135,8 @@ public class WindowWorkmanPerformServiceImpl extends AbstractCRUDServiceImpl<Win
item.setDeptName(staff.getDeptName());
item.setSalaId(staff.getSalaId());
item.setSalaName(staff.getSalaName());
item.setYear(entity.getYear());
item.setMonth(entity.getMonth());
}
});
windowWorkmanPerformDetailService.save(entity.getWorkmanPerformDetailList());
......
......@@ -557,7 +557,13 @@
<include refid="_orderColsNew_"/>
</select>
<sql id="_orderColsNew_">
order by CONVERT(a.salaName USING gbk),CONVERT(a.deptName USING gbk),CONVERT(a.staffName USING gbk)
order by
<if test="orderColList != null and !orderColList.isEmpty()">
<foreach collection="orderColList" open="" close="," index="index" item="item" separator=",">
a.${item.colName} ${item.sortKind}
</foreach>
</if>
CONVERT(a.salaName USING gbk),CONVERT(a.deptName USING gbk),CONVERT(a.staffName USING gbk)
</sql>
......
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