提交 a0aaed1b authored 作者: 宋文杰's avatar 宋文杰

feat(attendance): add restful api for manual save attendance

上级 11e8ece8
...@@ -50,7 +50,7 @@ CREATE TABLE `attendance` ( ...@@ -50,7 +50,7 @@ CREATE TABLE `attendance` (
PRIMARY KEY (`attendance_id`), PRIMARY KEY (`attendance_id`),
KEY `shift_id_index` (`shift_id`) KEY `shift_id_index` (`shift_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='排班表'; ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='排班表';
ALTER TABLE `attendance` ADD UNIQUE `unique_index` (shift_id, time, unit_id);
-- ----------------------------------------------------- -- -----------------------------------------------------
-- Table `aroad`.`attendance_members` -- Table `aroad`.`attendance_members`
......
...@@ -2,6 +2,7 @@ package com.elephant.framework.galaxy.aroad.module.attendance.controller; ...@@ -2,6 +2,7 @@ package com.elephant.framework.galaxy.aroad.module.attendance.controller;
import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.elephant.framework.galaxy.aroad.module.attendance.dto.MemberDto;
import com.elephant.framework.galaxy.aroad.module.attendance.dto.SaveAttendanceDto; import com.elephant.framework.galaxy.aroad.module.attendance.dto.SaveAttendanceDto;
import com.elephant.framework.galaxy.aroad.response.R; import com.elephant.framework.galaxy.aroad.response.R;
import com.elephant.framework.galaxy.aroad.module.common.annotation.SysLog; import com.elephant.framework.galaxy.aroad.module.common.annotation.SysLog;
...@@ -70,12 +71,30 @@ public class AttendanceController extends BaseController { ...@@ -70,12 +71,30 @@ public class AttendanceController extends BaseController {
return new R<>(attendanceService.save(attendance)); return new R<>(attendanceService.save(attendance));
} }
/**
* @Description: 系统选择值班人员添加排班
* @Param: [attendance]
* @return: com.elephant.framework.galaxy.aroad.response.R
* @Author: songwenjie
* @Date: 2019/4/18
*/
@PostMapping("/autosave") @PostMapping("/autosave")
public R autoSave(@RequestBody SaveAttendanceDto<Integer> attendance){ public R autoSave(@RequestBody SaveAttendanceDto<Integer> attendance){
return new R<>(attendanceService.autoSave(attendance)); return new R<>(attendanceService.autoSave(attendance));
} }
/**
* @Description: 手动输入
* @Param: [attendance]
* @return: com.elephant.framework.galaxy.aroad.response.R
* @Author: songwenjie
* @Date: 2019/4/18
*/
@PostMapping("/manualsave")
public R manualSave(@RequestBody SaveAttendanceDto<MemberDto> attendance){
return new R<>(attendanceService.manualSave(attendance));
}
/** /**
* 修改排班表 * 修改排班表
* @param attendance 排班表 * @param attendance 排班表
......
...@@ -31,4 +31,13 @@ public interface AttendanceMapper extends BaseMapper<Attendance> { ...@@ -31,4 +31,13 @@ public interface AttendanceMapper extends BaseMapper<Attendance> {
* @Date: 2019/4/18 * @Date: 2019/4/18
*/ */
Integer saveAttendance(Attendance attendance); Integer saveAttendance(Attendance attendance);
/**
* @Description: 查询排班计划id
* @Param: [attendance]
* @return: java.lang.Integer
* @Author: songwenjie
* @Date: 2019/4/18
*/
Integer getAttendanceId(Attendance attendance);
} }
...@@ -2,6 +2,7 @@ package com.elephant.framework.galaxy.aroad.module.attendance.service; ...@@ -2,6 +2,7 @@ package com.elephant.framework.galaxy.aroad.module.attendance.service;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
import com.elephant.framework.galaxy.aroad.module.attendance.dto.AttendanceDto; import com.elephant.framework.galaxy.aroad.module.attendance.dto.AttendanceDto;
import com.elephant.framework.galaxy.aroad.module.attendance.dto.MemberDto;
import com.elephant.framework.galaxy.aroad.module.attendance.dto.SaveAttendanceDto; import com.elephant.framework.galaxy.aroad.module.attendance.dto.SaveAttendanceDto;
import com.elephant.framework.galaxy.aroad.module.attendance.entity.Attendance; import com.elephant.framework.galaxy.aroad.module.attendance.entity.Attendance;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
...@@ -33,4 +34,13 @@ public interface AttendanceService extends IService<Attendance> { ...@@ -33,4 +34,13 @@ public interface AttendanceService extends IService<Attendance> {
* @Date: 2019/4/18 * @Date: 2019/4/18
*/ */
boolean autoSave(SaveAttendanceDto<Integer> attendanceDto); boolean autoSave(SaveAttendanceDto<Integer> attendanceDto);
/**
* @Description: 添加排班(手动输入值班人员)
* @Param: [attendanceDto]
* @return: boolean
* @Author: songwenjie
* @Date: 2019/4/18
*/
boolean manualSave(SaveAttendanceDto<MemberDto> attendanceDto);
} }
...@@ -66,17 +66,56 @@ public class AttendanceServiceImpl extends ServiceImpl<AttendanceMapper, Attenda ...@@ -66,17 +66,56 @@ public class AttendanceServiceImpl extends ServiceImpl<AttendanceMapper, Attenda
if(users == null || users.size() == 0 ){ if(users == null || users.size() == 0 ){
return false; return false;
} }
baseMapper.saveAttendance(attendance); Integer attendanceId = baseMapper.getAttendanceId(attendance); //查询此部门此班次是否有排班
if(attendanceId == null){
baseMapper.saveAttendance(attendance);
}
List<AttendanceMembers> members = new ArrayList<>(); List<AttendanceMembers> members = new ArrayList<>();
users.forEach(u->{ users.forEach(u->{
members.add( members.add(
AttendanceMembers.builder() AttendanceMembers.builder()
.attendanceId(attendance.getAttendanceId()) .attendanceId(attendanceId != null ?attendanceId : attendance.getAttendanceId())
.name(u.getName()) .name(u.getName())
.phone(u.getPhone()) .phone(u.getPhone())
.build() .build()
); );
}); });
return membersService.saveOrUpdateBatch(members);
}
/**
* @Description: 添加排班(手动输入值班人员)
* @Param: [attendanceDto]
* @return: boolean
* @Author: songwenjie
* @Date: 2019/4/18
*/
public boolean manualSave(SaveAttendanceDto<MemberDto> attendanceDto){
Attendance attendance = Attendance.builder()
.shiftId(attendanceDto.getShiftId())
.time(attendanceDto.getTime())
.unitId(attendanceDto.getUnitId())
.build();
List<MemberDto> users = attendanceDto.getMembers();
if(users == null || users.size() == 0 ){
return false;
}
Integer attendanceId = baseMapper.getAttendanceId(attendance); //查询此部门此班次是否有排班
if(attendanceId == null){
baseMapper.saveAttendance(attendance);
}
List<AttendanceMembers> members = new ArrayList<>();
users.forEach(u->{
members.add(
AttendanceMembers.builder()
.attendanceId(attendanceId != null ?attendanceId : attendance.getAttendanceId())
.name(u.getName())
.phone(u.getPhone())
.build()
);
});
return membersService.saveBatch(members); return membersService.saveBatch(members);
} }
} }
...@@ -38,4 +38,17 @@ ...@@ -38,4 +38,17 @@
values values
(#{attendanceId}, #{unitId},#{shiftId},#{time}) (#{attendanceId}, #{unitId},#{shiftId},#{time})
</insert> </insert>
<select id="getAttendanceId" resultType="java.lang.Integer">
select
attendance_id
from
attendance
where
unit_id = #{unitId}
and
shift_id = #{shiftId}
and
time = #{time}
</select>
</mapper> </mapper>
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论