package com.ltkj.web.controller.system;
|
|
import java.util.List;
|
import java.util.stream.Collectors;
|
|
import cn.hutool.core.util.IdUtil;
|
import cn.hutool.core.util.StrUtil;
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.ltkj.common.core.domain.entity.SysUser;
|
import com.ltkj.common.core.domain.model.LoginUser;
|
import com.ltkj.common.utils.SecurityUtils;
|
import com.ltkj.hosp.domain.SysNoticeUser;
|
import com.ltkj.hosp.service.SysNoticeUserService;
|
import com.ltkj.system.service.ISysUserService;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.security.access.prepost.PreAuthorize;
|
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.ltkj.common.annotation.Log;
|
import com.ltkj.common.core.controller.BaseController;
|
import com.ltkj.common.core.domain.AjaxResult;
|
import com.ltkj.common.core.page.TableDataInfo;
|
import com.ltkj.common.enums.BusinessType;
|
import com.ltkj.system.domain.SysNotice;
|
import com.ltkj.system.service.ISysNoticeService;
|
|
/**
|
* 公告 信息操作处理
|
*
|
* @author ltkj
|
*/
|
@RestController
|
@RequestMapping("/system/notice")
|
public class SysNoticeController extends BaseController {
|
@Autowired
|
private ISysNoticeService noticeService;
|
@Autowired
|
private SysNoticeUserService sysNoticeUserService;
|
@Autowired
|
private ISysUserService userService;
|
|
/**
|
* 获取通知公告列表
|
*/
|
// @PreAuthorize("@ss.hasPermi('system:notice:list')")
|
@GetMapping("/list")
|
public TableDataInfo list(SysNotice notice) {
|
startPage();
|
List<SysNotice> list = noticeService.selectNoticeList(notice);
|
for (SysNotice sysNotice : list) {
|
LambdaQueryWrapper<SysNoticeUser> wq = new LambdaQueryWrapper<>();
|
wq.eq(SysNoticeUser::getNoticeId, sysNotice.getNoticeId());
|
List<SysNoticeUser> sysNoticeUsers = sysNoticeUserService.list(wq);
|
if(null != sysNoticeUsers && !sysNoticeUsers.isEmpty()){
|
List<String> longList = sysNoticeUsers.stream().map(i -> i.getUserId().toString()).collect(Collectors.toList());
|
sysNotice.setUserIds(longList);
|
}
|
}
|
return getDataTable(list);
|
}
|
|
/**
|
* 根据通知公告编号获取详细信息
|
*/
|
// @PreAuthorize("@ss.hasPermi('system:notice:query')")
|
@GetMapping(value = "/{noticeId}")
|
public AjaxResult getInfo(@PathVariable Long noticeId) {
|
SysNotice byId = noticeService.getById(noticeId);
|
LambdaQueryWrapper<SysNoticeUser> wq = new LambdaQueryWrapper<>();
|
wq.eq(SysNoticeUser::getNoticeId, noticeId);
|
List<SysNoticeUser> sysNoticeUsers = sysNoticeUserService.list(wq);
|
if(null != sysNoticeUsers && !sysNoticeUsers.isEmpty()){
|
List<String> longList = sysNoticeUsers.stream().map(i -> i.getUserId().toString()).collect(Collectors.toList());
|
byId.setUserIds(longList);
|
}
|
return success(byId);
|
}
|
|
/**
|
* 新增通知公告
|
*/
|
// @PreAuthorize("@ss.hasPermi('system:notice:add')")
|
@Log(title = "通知公告", businessType = BusinessType.INSERT)
|
@PostMapping
|
@Transactional
|
public AjaxResult add(@Validated @RequestBody SysNotice notice) {
|
notice.setCreateBy(getUsername());
|
notice.setNoticeId(IdUtil.getSnowflake().nextId());
|
boolean insertNotice = noticeService.save(notice);
|
if (insertNotice){
|
if (notice.getUserIds() == null || notice.getUserIds().isEmpty()){
|
if (StrUtil.isBlank(notice.getDeptId())){
|
notice.setUserIds(userService.list().stream().map(i -> String.valueOf(i.getUserId())).collect(Collectors.toList()));
|
}else {
|
LambdaQueryWrapper<SysUser> wrapper = new LambdaQueryWrapper<>();
|
wrapper.eq(SysUser::getDeptId, notice.getDeptId());
|
notice.setUserIds(userService.list(wrapper).stream().map(i -> String.valueOf(i.getUserId())).collect(Collectors.toList()));
|
}
|
}
|
for (String userId : notice.getUserIds()) {
|
SysNoticeUser user = new SysNoticeUser();
|
user.setId(IdUtil.getSnowflake().nextId());
|
user.setNoticeId(notice.getNoticeId());
|
user.setUserId(Long.valueOf(userId));
|
sysNoticeUserService.save(user);
|
}
|
}else return AjaxResult.error();
|
return AjaxResult.success();
|
}
|
|
/**
|
* 修改通知公告
|
*/
|
// @PreAuthorize("@ss.hasPermi('system:notice:edit')")
|
@Log(title = "通知公告", businessType = BusinessType.UPDATE)
|
@PutMapping
|
public AjaxResult edit(@Validated @RequestBody SysNotice notice) {
|
notice.setUpdateBy(getUsername());
|
List<String> userIds = notice.getUserIds();
|
if (noticeService.updateById(notice)) {
|
if(null !=userIds && !userIds.isEmpty()){
|
LambdaQueryWrapper<SysNoticeUser> wq = new LambdaQueryWrapper<>();
|
wq.eq(SysNoticeUser::getNoticeId, notice.getNoticeId());
|
sysNoticeUserService.remove(wq);
|
for (String userId : userIds) {
|
SysNoticeUser user = new SysNoticeUser();
|
user.setId(IdUtil.getSnowflake().nextId());
|
user.setNoticeId(notice.getNoticeId());
|
user.setUserId(Long.valueOf(userId));
|
sysNoticeUserService.save(user);
|
}
|
}
|
return AjaxResult.success();
|
}
|
|
return AjaxResult.error();
|
}
|
|
/**
|
* 删除通知公告
|
*/
|
// @PreAuthorize("@ss.hasPermi('system:notice:remove')")
|
@Log(title = "通知公告", businessType = BusinessType.DELETE)
|
@DeleteMapping("/{noticeIds}")
|
public AjaxResult remove(@PathVariable Long[] noticeIds) {
|
return toAjax(noticeService.deleteNoticeByIds(noticeIds));
|
}
|
|
@GetMapping("/noticeToday")
|
public AjaxResult noticeToday(){
|
LoginUser loginUser = SecurityUtils.getLoginUser();
|
if (loginUser.getUserId().equalsIgnoreCase("1")){
|
return AjaxResult.success(noticeService.selectAllByAdmin());
|
}else {
|
return AjaxResult.success(noticeService.selectAll(loginUser.getUserId()));
|
}
|
}
|
}
|