| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291 |
- package jnpf.base.controller;
- import cn.hutool.core.bean.BeanUtil;
- import io.swagger.v3.oas.annotations.Operation;
- import io.swagger.v3.oas.annotations.Parameter;
- import io.swagger.v3.oas.annotations.Parameters;
- import io.swagger.v3.oas.annotations.tags.Tag;
- import jakarta.validation.Valid;
- import jnpf.base.ActionResult;
- import jnpf.base.entity.DictionaryDataEntity;
- import jnpf.base.entity.ScheduleNewEntity;
- import jnpf.base.entity.ScheduleNewUserEntity;
- import jnpf.base.model.schedule.*;
- import jnpf.base.service.DictionaryDataService;
- import jnpf.base.service.ScheduleNewApi;
- import jnpf.base.service.ScheduleNewService;
- import jnpf.base.service.ScheduleNewUserService;
- import jnpf.base.vo.ListVO;
- import jnpf.constant.MsgCode;
- import jnpf.message.entity.SendMessageConfigEntity;
- import jnpf.message.service.SendMessageConfigService;
- import jnpf.permission.entity.UserEntity;
- import jnpf.permission.service.UserService;
- import jnpf.util.*;
- import org.apache.commons.lang3.StringUtils;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.web.bind.annotation.*;
- import java.util.*;
- import java.util.stream.Collectors;
- /**
- * 日程
- *
- * @author JNPF开发平台组
- * @copyright 引迈信息技术有限公司(https://www.jnpfsoft.com)
- */
- @Tag(name = "日程", description = "Schedule")
- @RestController
- @RequestMapping("/api/system/Schedule")
- public class ScheduleNewController extends SuperController<ScheduleNewService, ScheduleNewEntity> implements ScheduleNewApi {
- @Autowired
- private UserService userService;
- @Autowired
- private SendMessageConfigService messageTemplateConfigService;
- @Autowired
- private DictionaryDataService dictionaryDataService;
- @Autowired
- private ScheduleNewService scheduleNewService;
- @Autowired
- private ScheduleNewUserService scheduleNewUserService;
- /**
- * 获取日程安排列表
- *
- * @param scheduleNewTime 分页模型
- * @return
- */
- @Operation(summary = "获取日程安排列表")
- @GetMapping
- public ActionResult<ListVO<ScheduleNewListVO>> list(ScheduleNewTime scheduleNewTime) {
- List<ScheduleNewEntity> list = scheduleNewService.getList(scheduleNewTime);
- Date start = DateUtil.stringToDates(scheduleNewTime.getStartTime());
- Date end = DateUtil.stringToDates(scheduleNewTime.getEndTime());
- List<Date> dataAll = DateUtil.getAllDays(start, end);
- List<ScheduleNewEntity> result = new ArrayList<>();
- if (list.size() > 0) {
- for (Date date : dataAll) {
- for (ScheduleNewEntity entity : list) {
- Date startDay = DateUtil.stringToDates(DateUtil.daFormat(entity.getStartDay()));
- Date endDay = DateUtil.stringToDates(DateUtil.daFormat(entity.getEndDay()));
- if(DateUtil.isEffectiveDate(date,startDay,endDay)){
- result.add(entity);
- }
- }
- }
- }
- for (ScheduleNewEntity item : result) {
- ScheduleNewEntity entity = BeanUtil.copyProperties(item, ScheduleNewEntity.class);
- if (entity.getAllDay() == 1) {
- entity.setEndDay(DateUtil.dateAddSeconds(entity.getEndDay(), 1));
- }
- }
- List<ScheduleNewListVO> vo = JsonUtil.getJsonToList(result, ScheduleNewListVO.class);
- ListVO listVO = new ListVO();
- listVO.setList(vo);
- return ActionResult.success(listVO);
- }
- /**
- * 获取日程安排列表
- *
- * @param scheduleNewTime 分页模型
- * @return
- */
- @Operation(summary = "获取日程安排列表")
- @GetMapping("/AppList")
- public ActionResult<ScheduleNewAppListVO> selectList(ScheduleNewTime scheduleNewTime) {
- Map<String, Object> signMap = new HashMap<>(16);
- List<ScheduleNewEntity> list = scheduleNewService.getList(scheduleNewTime);
- Date start = DateUtil.stringToDates(scheduleNewTime.getStartTime());
- Date end = DateUtil.stringToDates(scheduleNewTime.getEndTime());
- List<Date> dateList = new ArrayList() {{
- add(start);
- add(end);
- }};
- if(StringUtils.isNotEmpty(scheduleNewTime.getDateTime())){
- dateList.add(DateUtil.strToDate(scheduleNewTime.getDateTime()));
- }
- Date minDate = dateList.stream().min(Date::compareTo).get();
- Date maxDate = dateList.stream().max(Date::compareTo).get();
- List<Date> dataAll = DateUtil.getAllDays(minDate, maxDate);
- ScheduleNewAppListVO vo = new ScheduleNewAppListVO();
- String pattern = "yyyyMMdd";
- String dateTime = StringUtils.isEmpty(scheduleNewTime.getDateTime()) ? DateUtil.dateNow(pattern) : scheduleNewTime.getDateTime().replaceAll("-", "");
- List<ScheduleNewEntity> todayList = new ArrayList<>();
- for (Date date : dataAll) {
- String time = DateUtil.dateToString(date, pattern);
- List<ScheduleNewEntity> result = new ArrayList<>();
- for (ScheduleNewEntity entity : list) {
- Date startDay = DateUtil.stringToDates(DateUtil.daFormat(entity.getStartDay()));
- Date endDay = DateUtil.stringToDates(DateUtil.daFormat(entity.getEndDay()));
- if(DateUtil.isEffectiveDate(date,startDay,endDay)){
- result.add(entity);
- }
- }
- signMap.put(time, result.size());
- if(time.equals(dateTime)){
- todayList.addAll(result);
- }
- }
- vo.setSignList(signMap);
- vo.setTodayList(JsonUtil.getJsonToList(todayList, ScheduleNewListVO.class));
- return ActionResult.success(vo);
- }
- /**
- * 信息
- *
- * @param id 主键
- * @return
- */
- @Operation(summary = "获取日程安排信息")
- @GetMapping("/{id}")
- @Parameters({
- @Parameter(name = "id", description = "主键", required = true),
- })
- public ActionResult<ScheduleNewInfoVO> info(@PathVariable("id") String id) {
- ScheduleNewEntity entity = scheduleNewService.getInfo(id);
- ScheduleNewInfoVO vo = JsonUtil.getJsonToBean(entity, ScheduleNewInfoVO.class);
- if (vo != null) {
- if (!Objects.equals(entity.getCreatorUserId(),UserProvider.getLoginUserId())){
- return ActionResult.fail(MsgCode.AD104.get());
- }
- SendMessageConfigEntity config = StringUtil.isNotEmpty(vo.getSend()) ? messageTemplateConfigService.getInfo(vo.getSend()) : null;
- vo.setSendName(config!=null?config.getFullName():"");
- List<String> toUserIds = scheduleNewUserService.getList(entity.getId(),2).stream().map(ScheduleNewUserEntity::getToUserId).collect(Collectors.toList());
- vo.setToUserIds(toUserIds);
- return ActionResult.success(vo);
- }
- return ActionResult.fail(MsgCode.FA001.get());
- }
- /**
- * 信息
- *
- * @param detailModel 查询模型
- * @return
- */
- @Operation(summary = "获取日程安排信息")
- @GetMapping("/detail")
- public ActionResult<ScheduleNewDetailInfoVO> detail(ScheduleDetailModel detailModel) {
- List<ScheduleNewEntity> groupList = scheduleNewService.getGroupList(detailModel);
- ScheduleNewEntity entity = groupList.size() > 0 ? groupList.get(0) : null;
- boolean isVO = entity != null;
- if (isVO) {
- ScheduleNewDetailInfoVO vo = JsonUtil.getJsonToBean(entity, ScheduleNewDetailInfoVO.class);
- DictionaryDataEntity info = dictionaryDataService.getInfo(entity.getCategory());
- vo.setCategory(info != null ? info.getFullName() : "");
- vo.setUrgent("1".equals(vo.getUrgent()) ? "普通" : "2".equals(vo.getUrgent()) ? "重要" : "紧急");
- UserEntity infoById = userService.getInfo(vo.getCreatorUserId());
- vo.setCreatorUserId(infoById != null ? infoById.getRealName() + "/" + infoById.getAccount() : "");
- List<String> toUserIds = scheduleNewUserService.getList(entity.getId(),2).stream().map(ScheduleNewUserEntity::getToUserId).collect(Collectors.toList());
- if (!toUserIds.contains(UserProvider.getLoginUserId())){
- return ActionResult.fail(MsgCode.AD104.get());
- }
- List<UserEntity> userName = userService.getUserName(toUserIds);
- StringJoiner joiner = new StringJoiner(",");
- for (UserEntity userEntity : userName) {
- joiner.add(userEntity.getRealName() + "/" + userEntity.getAccount());
- }
- vo.setToUserIds(joiner.toString());
- return ActionResult.success(vo);
- }
- return ActionResult.fail(MsgCode.SYS042.get());
- }
- /**
- * 新建
- *
- * @param scheduleCrForm 日程模型
- * @return
- */
- @Operation(summary = "新建日程安排")
- @PostMapping
- @Parameters({
- @Parameter(name = "scheduleCrForm", description = "日程模型",required = true),
- })
- public ActionResult create(@RequestBody @Valid ScheduleNewCrForm scheduleCrForm) {
- if (scheduleCrForm.paramCheck()) {
- return ActionResult.fail(scheduleCrForm.getErrMsg());
- }
- ScheduleNewEntity entity = JsonUtil.getJsonToBean(scheduleCrForm, ScheduleNewEntity.class);
- try {
- scheduleNewService.create(entity, scheduleCrForm.getToUserIds(), RandomUtil.uuId(),"1",new ArrayList<>());
- } catch (Exception e) {
- e.printStackTrace();
- return ActionResult.fail(e.getMessage());
- }
- return ActionResult.success(MsgCode.SU001.get());
- }
- /**
- * 更新
- *
- * @param id 主键
- * @param scheduleUpForm 日程模型
- * @param type 1.此日程 2.此日程及后续 3.所有日程
- * @return
- */
- @Operation(summary = "更新日程安排")
- @PutMapping("/{id}/{type}")
- @Parameters({
- @Parameter(name = "id", description = "主键", required = true),
- @Parameter(name = "scheduleUpForm", description = "日程模型", required = true),
- @Parameter(name = "type", description = "类型", required = true),
- })
- public ActionResult update(@PathVariable("id") String id, @RequestBody @Valid ScheduleNewUpForm scheduleUpForm, @PathVariable("type") String type) {
- if("1".equals(type)){
- scheduleUpForm.setRepeatTime(null);
- scheduleUpForm.setRepetition(1);
- }
- if (scheduleUpForm.paramCheck()) {
- return ActionResult.fail(scheduleUpForm.getErrMsg());
- }
- ScheduleNewEntity info = scheduleNewService.getInfo(id);
- if (!Objects.equals(info.getCreatorUserId(),UserProvider.getLoginUserId())){
- return ActionResult.fail(MsgCode.AD104.get());
- }
- ScheduleNewEntity entity = JsonUtil.getJsonToBean(scheduleUpForm, ScheduleNewEntity.class);
- boolean flag = false;
- try {
- flag = scheduleNewService.update(id, entity, scheduleUpForm.getToUserIds(), type);
- } catch (Exception e) {
- e.printStackTrace();
- return ActionResult.fail(e.getMessage());
- }
- if (flag == false) {
- return ActionResult.fail(MsgCode.FA002.get());
- }
- return ActionResult.success(MsgCode.SU004.get());
- }
- /**
- * 删除
- *
- * @param id 主键
- * @param type 1.此日程 2.此日程及后续 3.所有日程
- * @return
- */
- @Operation(summary = "删除日程安排")
- @DeleteMapping("/{id}/{type}")
- @Parameters({
- @Parameter(name = "id", description = "主键", required = true),
- @Parameter(name = "type", description = "类型", required = true),
- })
- public ActionResult delete(@PathVariable("id") String id, @PathVariable("type") String type) {
- ScheduleNewEntity entity = scheduleNewService.getInfo(id);
- if (entity != null) {
- if (!Objects.equals(entity.getCreatorUserId(), UserProvider.getLoginUserId())){
- return ActionResult.fail(MsgCode.AD104.get());
- }
- scheduleNewService.delete(entity, type);
- return ActionResult.success(MsgCode.SU003.get());
- }
- return ActionResult.fail(MsgCode.FA003.get());
- }
- }
|