假期修改
This commit is contained in:
parent
5459f64093
commit
0b4ecffeec
|
|
@ -7,21 +7,22 @@ import com.bonus.boot.manager.manager.entity.*;
|
|||
import com.bonus.boot.manager.manager.model.SysUser;
|
||||
import com.bonus.boot.manager.manager.service.UserService;
|
||||
import com.bonus.boot.manager.manager.service.WeChatService;
|
||||
import com.bonus.boot.manager.manager.service.impl.VerifyDateService;
|
||||
import com.bonus.boot.manager.manager.utils.AjaxResult;
|
||||
import com.bonus.boot.manager.manager.utils.ServerResponse;
|
||||
import com.bonus.boot.manager.manager.utils.StringUtils;
|
||||
import com.bonus.boot.manager.manager.utils.UserUtil;
|
||||
import com.github.pagehelper.PageHelper;
|
||||
import com.github.pagehelper.PageInfo;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.BeanUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.security.access.prepost.PreAuthorize;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import javax.annotation.Resource;
|
||||
import java.util.*;
|
||||
|
||||
/**
|
||||
* 微信小程序接口
|
||||
|
|
@ -34,6 +35,9 @@ public class WeChatController {
|
|||
@Autowired
|
||||
private WeChatService service;
|
||||
|
||||
@Resource(name = "VerifyDateService")
|
||||
private VerifyDateService verifyDateService;
|
||||
|
||||
|
||||
@GetMapping("getSelectUserCurrent")
|
||||
public ServerResponse getSelectUserCurrent() {
|
||||
|
|
@ -63,6 +67,14 @@ public class WeChatController {
|
|||
@DecryptAndVerify(decryptedClass = EvectionBean.class)
|
||||
public ServerResponse addEvection(@Validated @RequestBody EncryptedReq<EvectionBean> data) {
|
||||
try{
|
||||
String[] travelersArr = data.getData().getTravelers().split(",");
|
||||
for (String traveler : travelersArr) {
|
||||
data.getData().setUserId(Long.valueOf(traveler));
|
||||
String result = verifyDateService.verifyDate(data.getData(),1);
|
||||
if(StringUtils.isNotEmpty(result)){
|
||||
return ServerResponse.createErroe(result);
|
||||
}
|
||||
}
|
||||
int res = service.insertEvection(data.getData());
|
||||
return ServerResponse.createSuccess(res);
|
||||
}catch (Exception e){
|
||||
|
|
@ -120,6 +132,12 @@ public class WeChatController {
|
|||
@DecryptAndVerify(decryptedClass = LeaveReportingBean.class)//加解密统一管理
|
||||
public ServerResponse addHoliday(@Validated @RequestBody EncryptedReq<LeaveReportingBean> data) {
|
||||
try{
|
||||
EvectionBean bean = new EvectionBean();
|
||||
BeanUtils.copyProperties(data.getData(),bean);
|
||||
String result = verifyDateService.verifyDate(bean,2);
|
||||
if(StringUtils.isNotEmpty(result)){
|
||||
return ServerResponse.createErroe(result);
|
||||
}
|
||||
int res = service.insertLeaveReporting(data.getData());
|
||||
return ServerResponse.createSuccess(res);
|
||||
}catch (Exception e){
|
||||
|
|
@ -239,6 +257,12 @@ public class WeChatController {
|
|||
@DecryptAndVerify(decryptedClass = HolidayBean.class)//加解密统一管理
|
||||
public ServerResponse insertHoliday(@Validated @RequestBody EncryptedReq<HolidayBean> data) {
|
||||
try{
|
||||
EvectionBean bean = new EvectionBean();
|
||||
BeanUtils.copyProperties(data.getData(),bean);
|
||||
String result = verifyDateService.verifyDate(bean,2);
|
||||
if(StringUtils.isNotEmpty(result)){
|
||||
return ServerResponse.createErroe(result);
|
||||
}
|
||||
int res = service.insertHoliday(data.getData());
|
||||
return ServerResponse.createSuccess(res);
|
||||
}catch (Exception e){
|
||||
|
|
@ -255,6 +279,18 @@ public class WeChatController {
|
|||
@DecryptAndVerify(decryptedClass = HolidayBean.class)//加解密统一管理
|
||||
public ServerResponse updateHoliday(@Validated @RequestBody EncryptedReq<HolidayBean> data){
|
||||
try {
|
||||
EvectionBean bean = new EvectionBean();
|
||||
BeanUtils.copyProperties(data.getData(),bean);
|
||||
// 判断数据是否处于同步状态,若处于同步状态则禁止操作
|
||||
Integer syncStatus = service.dataIsSync(bean,2);
|
||||
if(Objects.equals(syncStatus,1)){
|
||||
return ServerResponse.createErroe("数据同步中,请勿执行修改操作");
|
||||
}
|
||||
// 判断日期是否存在冲突
|
||||
String result = verifyDateService.verifyDate(bean,2);
|
||||
if(StringUtils.isNotEmpty(result)){
|
||||
return ServerResponse.createErroe(result);
|
||||
}
|
||||
return ServerResponse.createSuccess(service.updateHoliday(data.getData()));
|
||||
} catch (Exception e) {
|
||||
log.error(e.toString(),e);
|
||||
|
|
@ -269,6 +305,13 @@ public class WeChatController {
|
|||
@DecryptAndVerify(decryptedClass = HolidayBean.class)//加解密统一管理
|
||||
public ServerResponse deleteHolidayById(@Validated @RequestBody EncryptedReq<HolidayBean> data){
|
||||
try {
|
||||
EvectionBean bean = new EvectionBean();
|
||||
BeanUtils.copyProperties(data.getData(),bean);
|
||||
// 判断数据是否处于同步状态,若处于同步状态则禁止操作
|
||||
Integer syncStatus = service.dataIsSync(bean,2);
|
||||
if(Objects.equals(syncStatus,1)){
|
||||
return ServerResponse.createErroe("数据同步中,请勿执行删除操作");
|
||||
}
|
||||
return ServerResponse.createSuccess(service.deleteHolidayById(data.getData()));
|
||||
} catch (Exception e) {
|
||||
log.error(e.toString(),e);
|
||||
|
|
@ -284,6 +327,17 @@ public class WeChatController {
|
|||
@DecryptAndVerify(decryptedClass = LeaveReportingBean.class)//加解密统一管理
|
||||
public ServerResponse editHoliday(@Validated @RequestBody EncryptedReq<LeaveReportingBean> data){
|
||||
try {
|
||||
EvectionBean bean = new EvectionBean();
|
||||
BeanUtils.copyProperties(data.getData(),bean);
|
||||
// 判断数据是否处于同步状态,若处于同步状态则禁止操作
|
||||
Integer syncStatus = service.dataIsSync(bean,2);
|
||||
if(Objects.equals(syncStatus,1)){
|
||||
return ServerResponse.createErroe("数据同步中,请勿执行修改操作");
|
||||
}
|
||||
String result = verifyDateService.verifyDate(bean,2);
|
||||
if(StringUtils.isNotEmpty(result)){
|
||||
return ServerResponse.createErroe(result);
|
||||
}
|
||||
return ServerResponse.createSuccess(service.editHoliday(data.getData()));
|
||||
} catch (Exception e) {
|
||||
log.error(e.toString(),e);
|
||||
|
|
@ -298,6 +352,19 @@ public class WeChatController {
|
|||
@DecryptAndVerify(decryptedClass = EvectionBean.class)//加解密统一管理
|
||||
public ServerResponse editEvection(@Validated @RequestBody EncryptedReq<EvectionBean> data){
|
||||
try {
|
||||
// 判断数据是否处于同步状态,若处于同步状态则禁止操作
|
||||
Integer syncStatus = service.dataIsSync(data.getData(),2);
|
||||
if(Objects.equals(syncStatus,1)){
|
||||
return ServerResponse.createErroe("数据同步中,请勿执行修改操作");
|
||||
}
|
||||
String[] travelersArr = data.getData().getTravelers().split(",");
|
||||
for (String traveler : travelersArr) {
|
||||
data.getData().setUserId(Long.valueOf(traveler));
|
||||
String result = verifyDateService.verifyDate(data.getData(),1);
|
||||
if(StringUtils.isNotEmpty(result)){
|
||||
return ServerResponse.createErroe(result);
|
||||
}
|
||||
}
|
||||
return ServerResponse.createSuccess(service.editEvection(data.getData()));
|
||||
} catch (Exception e) {
|
||||
log.error(e.toString(),e);
|
||||
|
|
@ -312,6 +379,11 @@ public class WeChatController {
|
|||
@DecryptAndVerify(decryptedClass = EvectionBean.class)//加解密统一管理
|
||||
public ServerResponse deleteEvectionById(@Validated @RequestBody EncryptedReq<EvectionBean> data){
|
||||
try {
|
||||
// 判断数据是否处于同步状态,若处于同步状态则禁止操作
|
||||
Integer syncStatus = service.dataIsSync(data.getData(),1);
|
||||
if(Objects.equals(syncStatus,1)){
|
||||
return ServerResponse.createErroe("数据同步中,请勿执行删除操作");
|
||||
}
|
||||
return ServerResponse.createSuccess(service.deleteEvectionById(data.getData()));
|
||||
} catch (Exception e) {
|
||||
log.error(e.toString(),e);
|
||||
|
|
|
|||
|
|
@ -0,0 +1,26 @@
|
|||
package com.bonus.boot.manager.manager.dao;
|
||||
|
||||
import com.bonus.boot.manager.manager.entity.EvectionBean;
|
||||
import org.springframework.stereotype.Repository;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* @className:VerifyDateDao
|
||||
* @author:cwchen
|
||||
* @date:2025-02-20-14:48
|
||||
* @version:1.0
|
||||
* @description:
|
||||
*/
|
||||
@Repository(value = "VerifyDateDao")
|
||||
public interface VerifyDateDao {
|
||||
/**
|
||||
* 判断请假、轮休、出差、外出 日期是否出现重叠
|
||||
* @param bean
|
||||
* @return List<Map<String,Object>>
|
||||
* @author cwchen
|
||||
* @date 2025/2/20 15:44
|
||||
*/
|
||||
List<Map<String, Object>> verifyDate(EvectionBean bean);
|
||||
}
|
||||
|
|
@ -6,6 +6,7 @@ import com.bonus.boot.manager.manager.model.SysUser;
|
|||
import org.apache.ibatis.annotations.Delete;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
import org.springframework.security.core.parameters.P;
|
||||
import org.springframework.stereotype.Repository;
|
||||
|
||||
import java.util.List;
|
||||
|
|
@ -142,4 +143,14 @@ public interface WeChatDao {
|
|||
int editEvection(EvectionBean data);
|
||||
|
||||
int deleteEvectionById(EvectionBean data);
|
||||
|
||||
/**
|
||||
* 判断数据是否处于同步状态,若处于同步状态则禁止操作
|
||||
* @param data
|
||||
* @param type
|
||||
* @return Integer
|
||||
* @author cwchen
|
||||
* @date 2025/2/20 14:09
|
||||
*/
|
||||
Integer dataIsSync(@Param("params") EvectionBean data,@Param("type") int type);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -120,4 +120,14 @@ public interface WeChatService {
|
|||
int editEvection(EvectionBean data);
|
||||
|
||||
int deleteEvectionById(EvectionBean data);
|
||||
|
||||
/**
|
||||
* 判断数据是否处于同步状态,若处于同步状态则禁止操作
|
||||
* @param data
|
||||
* @param type
|
||||
* @return Integer
|
||||
* @author cwchen
|
||||
* @date 2025/2/20 14:07
|
||||
*/
|
||||
Integer dataIsSync(EvectionBean data, int type);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,45 @@
|
|||
package com.bonus.boot.manager.manager.service.impl;
|
||||
|
||||
import com.bonus.boot.manager.manager.dao.VerifyDateDao;
|
||||
import com.bonus.boot.manager.manager.entity.EvectionBean;
|
||||
import org.apache.commons.collections4.CollectionUtils;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Objects;
|
||||
|
||||
/**
|
||||
* @className:VerifyDateService
|
||||
* @author:cwchen
|
||||
* @date:2025-02-20-14:47
|
||||
* @version:1.0
|
||||
* @description:请假、轮休、出差、外出-判断日期是否重叠业务层
|
||||
*/
|
||||
@Service(value = "VerifyDateService")
|
||||
public class VerifyDateService {
|
||||
|
||||
@Resource(name = "VerifyDateDao")
|
||||
private VerifyDateDao dao;
|
||||
|
||||
public String verifyDate(EvectionBean bean,int type) {
|
||||
List<Map<String, Object>> list = dao.verifyDate(bean);
|
||||
if(CollectionUtils.isNotEmpty(list)){
|
||||
StringBuilder sb = new StringBuilder();
|
||||
Map<String, Object> dataMap = list.get(0);
|
||||
// 冲突日期、冲突类型、姓名
|
||||
String prominentDate = dataMap.get("leaveStartDate") + "~" + dataMap.get("leaveEndDate");
|
||||
String leaveType = dataMap.get("leaveType").toString();
|
||||
String userName = dataMap.get("userName").toString();
|
||||
if(type == 1){ // 出差
|
||||
sb.append("出行人:").append(userName).append("出行日期与").append(leaveType).append("存在冲突日期").append("(").append(prominentDate).append(")");
|
||||
}else{ // 请假、轮休、外出
|
||||
sb.append("当前提交的申请日期与").append(leaveType).append("存在冲突日期").append("(").append(prominentDate).append(")");
|
||||
}
|
||||
return sb.toString();
|
||||
}else{
|
||||
return null;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -313,5 +313,13 @@ public class WeChatServiceImpl implements WeChatService {
|
|||
return passwordEncoder.encode(password);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public Integer dataIsSync(EvectionBean data, int type) {
|
||||
try {
|
||||
return dao.dataIsSync(data,type);
|
||||
} catch (Exception e) {
|
||||
log.error(e.toString(),e);
|
||||
return null;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,21 @@
|
|||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="com.bonus.boot.manager.manager.dao.VerifyDateDao">
|
||||
|
||||
|
||||
<!--判断请假、轮休、出差、外出 日期是否出现重叠-->
|
||||
<select id="verifyDate" resultType="java.util.Map">
|
||||
SELECT leave_type AS leaveType,
|
||||
`type`,
|
||||
DATE_FORMAT(leave_start_date, '%Y-%m-%d') AS leaveStartDate,
|
||||
DATE_FORMAT(leave_end_date, '%Y-%m-%d') AS leaveEndDate,
|
||||
leave_start_interval AS leaveStartInterval,
|
||||
leave_end_interval AS leaveEndInterval,
|
||||
user_name AS userName
|
||||
FROM leave_apply_wechat
|
||||
WHERE user_id = #{userId} AND is_active = '1'
|
||||
AND (DATE_FORMAT(leave_start_date, '%Y-%m-%d') BETWEEN DATE_FORMAT(#{leaveStartDate}, '%Y-%m-%d') AND DATE_FORMAT(#{leaveEndDate}, '%Y-%m-%d')) OR
|
||||
(DATE_FORMAT(leave_end_date, '%Y-%m-%d') BETWEEN DATE_FORMAT(#{leaveStartDate}, '%Y-%m-%d') AND DATE_FORMAT(#{leaveEndDate}, '%Y-%m-%d'))
|
||||
</select>
|
||||
</mapper>
|
||||
|
|
@ -10,7 +10,7 @@
|
|||
leave_end_interval,
|
||||
leave_duration, source, create_user_id, is_agree, location, host_user_id,
|
||||
host_user_name, remark
|
||||
, leave_form_id, submit_id, examine_status, is_plateau, plateau_subsidy)
|
||||
, leave_form_id, submit_id, examine_status, is_plateau, plateau_subsidy,is_update,is_sync)
|
||||
VALUES (#{uuid}, #{userId}, #{userName}, #{orgId}, #{orgName}, '出差', '出差', #{leaveReason},
|
||||
#{leaveStartDate},
|
||||
#{leaveStartInterval},
|
||||
|
|
@ -18,7 +18,7 @@
|
|||
#{leaveEndInterval},
|
||||
#{leaveDuration}, #{source}, #{createUserId}, #{isAgree}, #{location}, #{hostUserId}, #{hostUserName},
|
||||
#{remark},
|
||||
#{leaveFormId}, #{createUserId}, '1', #{isPlateau}, #{plateauSubsidy})
|
||||
#{leaveFormId}, #{createUserId}, '1', #{isPlateau}, #{plateauSubsidy},'0','0')
|
||||
</insert>
|
||||
<insert id="insertLeaveReporting">
|
||||
INSERT INTO leave_apply_wechat(uuid, user_id, user_name, org_id, org_name, leave_type, type, leave_reason,
|
||||
|
|
@ -44,14 +44,14 @@
|
|||
leave_end_date,
|
||||
leave_end_interval,
|
||||
leave_duration, source, create_user_id, is_agree, location, host_user_id,
|
||||
host_user_name, remark, examine_status)
|
||||
host_user_name, remark, examine_status,is_update,is_sync)
|
||||
VALUES (#{uuid}, #{userId}, #{userName}, #{orgId}, #{orgName}, #{leaveType}, #{type}, #{leaveReason},
|
||||
#{leaveStartDate},
|
||||
#{leaveStartInterval},
|
||||
#{leaveEndDate},
|
||||
#{leaveEndInterval},
|
||||
#{leaveDuration}, #{source}, #{createUserId}, #{isAgree}, #{location}, #{hostUserId}, #{hostUserName},
|
||||
#{remark}, '0')
|
||||
#{remark}, '0','0','0')
|
||||
</insert>
|
||||
|
||||
<update id="updateUser">
|
||||
|
|
@ -86,13 +86,14 @@
|
|||
is_agree = #{isAgree},
|
||||
location = #{location},
|
||||
host_user_id = #{hostUserId},
|
||||
remark = #{remark}
|
||||
remark = #{remark},
|
||||
is_update = '1',
|
||||
</set>
|
||||
where uuid = #{uuid}
|
||||
</update>
|
||||
|
||||
<update id="deleteHolidayById">
|
||||
update leave_apply_wechat SET is_active = '0' WHERE uuid = #{uuid}
|
||||
update leave_apply_wechat SET is_active = '0',is_update = '1' WHERE uuid = #{uuid}
|
||||
</update>
|
||||
|
||||
<update id="editHoliday">
|
||||
|
|
@ -124,7 +125,8 @@
|
|||
location = #{location},
|
||||
host_user_id = #{hostUserId},
|
||||
host_user_name = #{hostUserName},
|
||||
remark = #{remark}
|
||||
remark = #{remark},
|
||||
is_update = '1'
|
||||
</set>
|
||||
where uuid = #{uuid}
|
||||
</update>
|
||||
|
|
@ -156,13 +158,14 @@
|
|||
location = #{location},
|
||||
host_user_id = #{hostUserId},
|
||||
host_user_name = #{hostUserName},
|
||||
remark = #{remark}
|
||||
remark = #{remark},
|
||||
is_update = '1'
|
||||
</set>
|
||||
where leave_form_id = #{uuid}
|
||||
</update>
|
||||
|
||||
<update id="deleteEvectionById">
|
||||
update leave_apply_wechat SET is_active = '0' WHERE leave_form_id = #{uuid}
|
||||
update leave_apply_wechat SET is_active = '0',is_update = '1' WHERE leave_form_id = #{uuid}
|
||||
</update>
|
||||
|
||||
<select id="getById" resultType="com.bonus.boot.manager.manager.entity.UserDto">
|
||||
|
|
@ -471,5 +474,19 @@
|
|||
WHERE la.is_active = '1'
|
||||
and la.uuid = #{uuId}
|
||||
</select>
|
||||
<!--判断数据是否处于同步状态,若处于同步状态则禁止操作-->
|
||||
<select id="dataIsSync" resultType="java.lang.Integer">
|
||||
SELECT is_sync AS isSync
|
||||
FROM leave_apply_wechat
|
||||
<where>
|
||||
<if test="type == 1">
|
||||
AND leave_form_id = #{uuid}
|
||||
</if>
|
||||
<if test="type == 2">
|
||||
AND `uuid` = #{uuid}
|
||||
</if>
|
||||
</where>
|
||||
LIMIT 1
|
||||
</select>
|
||||
|
||||
</mapper>
|
||||
|
|
|
|||
Loading…
Reference in New Issue