假期修改

This commit is contained in:
cwchen 2025-02-20 18:28:45 +08:00
parent 0b4ecffeec
commit 1f0977f71b
9 changed files with 248 additions and 119 deletions

View File

@ -312,6 +312,13 @@ public class WeChatController {
if(Objects.equals(syncStatus,1)){ if(Objects.equals(syncStatus,1)){
return ServerResponse.createErroe("数据同步中,请勿执行删除操作"); return ServerResponse.createErroe("数据同步中,请勿执行删除操作");
} }
if(StringUtils.isNotEmpty(data.getData().getType())){
// 判断休假报备数据是否被核对
Integer isCheck = service.dataIsCheck(data.getData().getUuid(),2);
if(!Objects.equals(isCheck,0)){
return ServerResponse.createErroe("休假报备数据已被核对,无法操作");
}
}
return ServerResponse.createSuccess(service.deleteHolidayById(data.getData())); return ServerResponse.createSuccess(service.deleteHolidayById(data.getData()));
} catch (Exception e) { } catch (Exception e) {
log.error(e.toString(),e); log.error(e.toString(),e);
@ -334,6 +341,12 @@ public class WeChatController {
if(Objects.equals(syncStatus,1)){ if(Objects.equals(syncStatus,1)){
return ServerResponse.createErroe("数据同步中,请勿执行修改操作"); return ServerResponse.createErroe("数据同步中,请勿执行修改操作");
} }
// 判断出差报备数据是否被核对
Integer isCheck = service.dataIsCheck(data.getData().getUuid(),1);
if(!Objects.equals(isCheck,0)){
return ServerResponse.createErroe("休假报备数据已被核对,无法操作");
}
// 判断休假报备日期是否存在冲突
String result = verifyDateService.verifyDate(bean,2); String result = verifyDateService.verifyDate(bean,2);
if(StringUtils.isNotEmpty(result)){ if(StringUtils.isNotEmpty(result)){
return ServerResponse.createErroe(result); return ServerResponse.createErroe(result);
@ -357,6 +370,12 @@ public class WeChatController {
if(Objects.equals(syncStatus,1)){ if(Objects.equals(syncStatus,1)){
return ServerResponse.createErroe("数据同步中,请勿执行修改操作"); return ServerResponse.createErroe("数据同步中,请勿执行修改操作");
} }
// 判断出差报备数据是否被核对
Integer isCheck = service.dataIsCheck(data.getData().getUuid(),2);
if(!Objects.equals(isCheck,0)){
return ServerResponse.createErroe("出差报备数据已被核对,无法操作");
}
// 判断出差报备日期是否存在冲突
String[] travelersArr = data.getData().getTravelers().split(","); String[] travelersArr = data.getData().getTravelers().split(",");
for (String traveler : travelersArr) { for (String traveler : travelersArr) {
data.getData().setUserId(Long.valueOf(traveler)); data.getData().setUserId(Long.valueOf(traveler));
@ -384,6 +403,11 @@ public class WeChatController {
if(Objects.equals(syncStatus,1)){ if(Objects.equals(syncStatus,1)){
return ServerResponse.createErroe("数据同步中,请勿执行删除操作"); return ServerResponse.createErroe("数据同步中,请勿执行删除操作");
} }
// 判断出差报备数据是否被核对
Integer isCheck = service.dataIsCheck(data.getData().getUuid(),2);
if(!Objects.equals(isCheck,0)){
return ServerResponse.createErroe("出差报备数据已被核对,无法操作");
}
return ServerResponse.createSuccess(service.deleteEvectionById(data.getData())); return ServerResponse.createSuccess(service.deleteEvectionById(data.getData()));
} catch (Exception e) { } catch (Exception e) {
log.error(e.toString(),e); log.error(e.toString(),e);

View File

@ -1,6 +1,7 @@
package com.bonus.boot.manager.manager.dao; package com.bonus.boot.manager.manager.dao;
import com.bonus.boot.manager.manager.entity.EvectionBean; import com.bonus.boot.manager.manager.entity.EvectionBean;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository; import org.springframework.stereotype.Repository;
import java.util.List; import java.util.List;
@ -22,5 +23,5 @@ public interface VerifyDateDao {
* @author cwchen * @author cwchen
* @date 2025/2/20 15:44 * @date 2025/2/20 15:44
*/ */
List<Map<String, Object>> verifyDate(EvectionBean bean); List<Map<String, Object>> verifyDate(@Param("params") EvectionBean bean,@Param("type") int type);
} }

View File

@ -17,140 +17,176 @@ import java.util.List;
@Mapper @Mapper
public interface WeChatDao { public interface WeChatDao {
UserDto getById(UserDto data); UserDto getById(UserDto data);
UserDto getByUserId(UserDto data);
/** UserDto getByUserId(UserDto data);
* 查询所有人员-除了当前用户
* @param userId
* @return
*/
List<SysUser> getSelectUserCurrent(String userId);
SysUserWechat getSysUserWechat(String userId); /**
* 查询所有人员-除了当前用户
*
* @param userId
* @return
*/
List<SysUser> getSelectUserCurrent(String userId);
/** SysUserWechat getSysUserWechat(String userId);
* 添加出差报备
* @param o
* @return
*/
int insertEvection(EvectionBean o);
List<EvectionBean> selectWchatc(EvectionBean o); /**
* 添加出差报备
*
* @param o
* @return
*/
int insertEvection(EvectionBean o);
List<EvectionBean> selectWchatc(EvectionBean o);
/**
* 查询出差报备列表
*
* @param bean
* @return
*/
List<EvectionBean> getEvectionList(EvectionBean bean);
/** /**
* 查询出差报备列表 * 根据id查询出差报备详情
* @param bean *
* @return * @param uuId
*/ * @return
List<EvectionBean> getEvectionList(EvectionBean bean); */
EvectionBean selectEvectionById(String uuId);
/** /**
* 根据id查询出差报备详情 * 添加休假报备
* @param uuId *
* @return * @param o
*/ * @return
EvectionBean selectEvectionById(String uuId); */
int insertLeaveReporting(LeaveReportingBean o);
/** /**
* 添加休假报备 * 轮休临时外出新增
* @param o *
* @return * @param o
*/ * @return
int insertLeaveReporting(LeaveReportingBean o); */
int insertHoliday(HolidayBean o);
/** /**
* 轮休临时外出新增 * 查询休假报备列表
* @param o *
* @return * @param bean
*/ * @return
int insertHoliday(HolidayBean o); */
List<LeaveReportingBean> getLeaveReportingList(LeaveReportingBean bean);
/** /**
* 查询休假报备列表 * 根据id查询休假报备详情
* @param bean *
* @return * @param id
*/ * @return
List<LeaveReportingBean> getLeaveReportingList(LeaveReportingBean bean); */
LeaveReportingBean selectLeaveReportingById(String id);
/** /**
* 根据id查询休假报备详情 * 修改密码
* @param id *
* @return * @param newUser
*/ * @return
LeaveReportingBean selectLeaveReportingById(String id); */
int updateUser(SysUser newUser);
/** /**
* 修改密码 * 查询出差人
* @param newUser *
* @return * @return
*/ */
int updateUser(SysUser newUser); List<SysUser> getTravelPersonSelect();
/** /**
* 查询出差人 * 查询休假类型
* @return *
*/ * @return
List<SysUser> getTravelPersonSelect(); */
List<LeaveReportingBean> getHolidayType(LeaveReportingBean data);
/** /**
* 查询休假类型 * 查询节假日
* @return *
*/ * @param bean
List<LeaveReportingBean> getHolidayType(LeaveReportingBean data); * @return
*/
/** List<LeaveReportingBean> getFestivalAndHoliday(LeaveReportingBean bean);
* 查询节假日
* @param bean
* @return
*/
List<LeaveReportingBean> getFestivalAndHoliday(LeaveReportingBean bean);
String getAttTypeByUserId(Long userId); String getAttTypeByUserId(Long userId);
/** /**
* 查询获取轮休列表 * 查询获取轮休列表
* @param bean *
* @return * @param bean
*/ * @return
List<HolidayBean> getHolidaysList(HolidayBean bean); */
List<HolidayBean> getHolidaysList(HolidayBean bean);
/**
* 查询获取轮休详情
*
* @param uuId
* @return
*/
HolidayBean getHolidaysDetail(String uuId);
/**
* 修改轮休
*
* @param data
* @return
*/
int updateHoliday(HolidayBean data);
/**
* 删除轮休
*
* @param data
* @return
*/
int deleteHolidayById(HolidayBean data);
int editHoliday(LeaveReportingBean data);
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);
/**
* 查询出差详情
* @param uuid
* @param type
* @return EvectionBean
* @author cwchen
* @date 2025/2/20 17:08
*/
EvectionBean getEvectionById(@Param("uuid") String uuid,@Param("type") int type);
/** /**
* 查询获取轮休详情 * 判断出差报备数据是否被核对
* @param uuId * @param evectionBean
* @return * @return List<Integer>
*/
HolidayBean getHolidaysDetail(String uuId);
/**
* 修改轮休
* @param data
* @return
*/
int updateHoliday(HolidayBean data);
/**
* 删除轮休
* @param data
* @return
*/
int deleteHolidayById(HolidayBean data);
int editHoliday(LeaveReportingBean data);
int editEvection(EvectionBean data);
int deleteEvectionById(EvectionBean data);
/**
* 判断数据是否处于同步状态若处于同步状态则禁止操作
* @param data
* @param type
* @return Integer
* @author cwchen * @author cwchen
* @date 2025/2/20 14:09 * @date 2025/2/20 17:09
*/ */
Integer dataIsSync(@Param("params") EvectionBean data,@Param("type") int type); List<Integer> isCheck(EvectionBean evectionBean);
} }

View File

@ -158,4 +158,5 @@ public class HolidayBean {
/**一键审批ID*/ /**一键审批ID*/
private List<Long> ids; private List<Long> ids;
} }

View File

@ -130,4 +130,14 @@ public interface WeChatService {
* @date 2025/2/20 14:07 * @date 2025/2/20 14:07
*/ */
Integer dataIsSync(EvectionBean data, int type); Integer dataIsSync(EvectionBean data, int type);
/**
* 判断出差/休假数据是否被核对
* @param uuid
* @param type
* @return Integer
* @author cwchen
* @date 2025/2/20 17:04
*/
Integer dataIsCheck(String uuid, int type);
} }

View File

@ -24,7 +24,7 @@ public class VerifyDateService {
private VerifyDateDao dao; private VerifyDateDao dao;
public String verifyDate(EvectionBean bean,int type) { public String verifyDate(EvectionBean bean,int type) {
List<Map<String, Object>> list = dao.verifyDate(bean); List<Map<String, Object>> list = dao.verifyDate(bean,type);
if(CollectionUtils.isNotEmpty(list)){ if(CollectionUtils.isNotEmpty(list)){
StringBuilder sb = new StringBuilder(); StringBuilder sb = new StringBuilder();
Map<String, Object> dataMap = list.get(0); Map<String, Object> dataMap = list.get(0);

View File

@ -9,6 +9,7 @@ import com.bonus.boot.manager.manager.model.SysUser;
import com.bonus.boot.manager.manager.service.WeChatService; import com.bonus.boot.manager.manager.service.WeChatService;
import com.bonus.boot.manager.manager.utils.UserUtil; import com.bonus.boot.manager.manager.utils.UserUtil;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@ -322,4 +323,22 @@ public class WeChatServiceImpl implements WeChatService {
return null; return null;
} }
} }
@Override
public Integer dataIsCheck(String uuid, int type) {
try {
EvectionBean evectionBean = dao.getEvectionById(uuid,type);
List<Integer> list = dao.isCheck(evectionBean);
if(CollectionUtils.isNotEmpty(list)){
for (Integer status : list) {
if(!Objects.equals(status,0)){
return status;
}
}
}
} catch (Exception e) {
log.error(e.toString(),e);
}
return 0;
}
} }

View File

@ -14,8 +14,22 @@
leave_end_interval AS leaveEndInterval, leave_end_interval AS leaveEndInterval,
user_name AS userName user_name AS userName
FROM leave_apply_wechat FROM leave_apply_wechat
WHERE user_id = #{userId} AND is_active = '1' WHERE user_id = #{params.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 AND (
(DATE_FORMAT(leave_end_date, '%Y-%m-%d') BETWEEN DATE_FORMAT(#{leaveStartDate}, '%Y-%m-%d') AND DATE_FORMAT(#{leaveEndDate}, '%Y-%m-%d')) DATE_FORMAT(leave_start_date, '%Y-%m-%d') BETWEEN DATE_FORMAT(#{params.leaveStartDate}, '%Y-%m-%d') AND
DATE_FORMAT(#{params.leaveEndDate}, '%Y-%m-%d') OR
DATE_FORMAT(leave_end_date, '%Y-%m-%d') BETWEEN DATE_FORMAT(#{params.leaveStartDate}, '%Y-%m-%d') AND
DATE_FORMAT(#{params.leaveEndDate}, '%Y-%m-%d')
)
<if test="type == 1">
<if test="params.uuid!=null and params.uuid!=''">
AND leave_form_id != #{params.uuid}
</if>
</if>
<if test="type == 2">
<if test="params.uuid!=null and params.uuid!=''">
AND uuid != #{params.uuid}
</if>
</if>
</select> </select>
</mapper> </mapper>

View File

@ -488,5 +488,29 @@
</where> </where>
LIMIT 1 LIMIT 1
</select> </select>
<!--查询出差详情-->
<select id="getEvectionById" resultType="com.bonus.boot.manager.manager.entity.EvectionBean">
SELECT la.uuid,
la.leave_start_date AS leaveStartDate,
la.leave_end_date AS leaveEndDate,
la.org_id AS orgId,
FROM leave_apply_wechat la
<where>
<if test="type == 1">
AND la.uuid = #{uuid}
</if>
<if test="type == 2">
AND la.leave_form_id = #{uuid} AND submit_id = user_id
</if>
</where>
</select>
<!--判断出差报备数据是否被核对-->
<select id="isCheck" resultType="java.lang.Integer">
SELECT status
FROM leave_check_wechat lc
WHERE lc.org_id = #{orgId} AND (DATE_FORMAT(#{leaveStartDate},'%Y-%m') = lc.month OR DATE_FORMAT(#{leaveEndDate},'%Y-%m') = lc.month)
AND lc.is_active = '1'
ORDER BY lc.create_time
</select>
</mapper> </mapper>