package org.springblade.modules.workreport.controller; import com.baomidou.mybatisplus.core.metadata.IPage; import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiParam; import lombok.AllArgsConstructor; import org.springblade.common.utils.arg; import org.springblade.core.mp.support.Condition; import org.springblade.core.mp.support.Query; import org.springblade.core.tool.api.R; import org.springblade.core.tool.utils.Func; import org.springblade.modules.system.entity.Dept; import org.springblade.modules.system.entity.User; import org.springblade.modules.system.service.IDeptService; import org.springblade.modules.system.service.IUserService; import org.springblade.modules.workreport.entity.WorkReport; import org.springblade.modules.workreport.service.WorkReportService; import org.springblade.modules.workreport.vo.WorkReportVo; import org.springframework.web.bind.annotation.*; import java.sql.Wrapper; import java.util.ArrayList; import java.util.Arrays; import java.util.Date; import java.util.List; import java.util.stream.Collectors; /** * @author zhongrj * @time 2021-07-12 * @desc 工作汇报管理控制层 */ @RestController @AllArgsConstructor @RequestMapping("/workReport") public class WorkReportController { private final WorkReportService workReportService; private final IUserService userService; private final IDeptService deptService; /** * 自定义分页 * @param query page,size * @param workReport 工作汇报信息对象 */ @GetMapping("/page") public R> page(WorkReportVo workReport, Query query) { IPage pages = workReportService.selectWorkReportPage(Condition.getPage(query), workReport); List records = pages.getRecords(); for (WorkReportVo record : records) { record.setReplyRealName(getReplyRealName(record)); record.setReplyDeptName(getReplyDeptName(record)); } return R.data(pages); } /** * 自定义分页--接收到的汇报信息page * @param query page,size * @param workReport 工作汇报信息对象 */ @GetMapping("/pageReply") public R> pageReply(WorkReportVo workReport, Query query) { IPage pages = workReportService.selectWorkReplyPage(Condition.getPage(query), workReport); return R.data(pages); } /** * 新增 * @param workReport 工作汇报信息对象 */ @PostMapping("/save") @ApiOperation(value = "新增", notes = "传入workReport") public R save(@RequestBody WorkReport workReport) { return R.status(workReportService.save(workReport)); } /** * 修改 * @param workReport 工作汇报信息对象 */ @PostMapping("/update") public R update(@RequestBody WorkReport workReport) { return R.status(workReportService.updateById(workReport)); } /** * 新增或修改 * @param workReport 工作汇报信息对象 */ @PostMapping("/submit") public R submit(@RequestBody WorkReport workReport) throws Exception { if (null!=workReport.getId()){ workReport.setReplyTime(new Date()); workReport.setReplyDeptIds(getReplyDeptIds(workReport.getReceivedIds())); }else { workReport.setReportTime(new Date()); workReport.setReplyDeptIds(getReplyDeptIds(workReport.getReceivedIds())); } //arg.test01(arg.url+"/workReport/submit",workReport); return R.status(workReportService.saveOrUpdate(workReport)); } /** * 删除 * @param ids 工作汇报信息ids 数组 */ @PostMapping("/remove") public R remove(@ApiParam(value = "主键集合") @RequestParam String ids) { //arg.sendPostRemoveByIds(arg.url+"/workReport/remove",ids); return R.status(workReportService.removeByIds(Func.toLongList(ids))); } /** * 详情 * @param workReport 工作汇报信息对象 */ @GetMapping("/detail") @ApiOperation(value = "详情", notes = "传入workReport") public R detail(WorkReport workReport) { //查询工作汇报详情 WorkReportVo detail = workReportService.selectWorkReportInfo(workReport); detail.setReplyRealName(getReplyRealName(detail)); detail.setReplyDeptName(getReplyDeptName(detail)); //查询接收人单位(名称)信息 return R.data(detail); } /** * 获取接收人的单位信息 * @param detail 汇报详情 * @return */ private String getReplyDeptName(WorkReportVo detail) { List replyDeptIds = Arrays.asList(detail.getReplyDeptIds().split(",")); StringBuilder replyDeptNameInfo = new StringBuilder(); for (String deptId : replyDeptIds) { //查询接收人单位信息 Dept deptDetail = deptService.getById(Long.parseLong(deptId)); replyDeptNameInfo = replyDeptNameInfo.append(deptDetail.getDeptName()).append(","); } //截取 return replyDeptNameInfo.substring(0, replyDeptNameInfo.length() - 1); } /** * 获取接收人的单位id(dept)信息 * @param * @return */ private String getReplyDeptIds(String detail) { List userIds = Arrays.asList(detail.split(",")); List list = new ArrayList<>(); for (String userId : userIds) { //查询接收人单位信息 User userDetail = userService.getById(userId); list.add(userDetail.getDeptId()); } //去重 List collect = list.stream().distinct().collect(Collectors.toList()); //截取 return String.join(",",collect); } /** * 查询接收人姓名信息 * * @param detail 汇报详情 * @return */ private String getReplyRealName(WorkReportVo detail){ List userIds = Arrays.asList(detail.getReceivedIds().split(",")); StringBuilder replyRealNameInfo = new StringBuilder(); for (String userId : userIds) { //查询接收人姓名信息 // User user = new User(); // user.setCardid(idCardNo); // User userDetail = userService.getOne(Condition.getQueryWrapper(user)); User userDetail = userService.getById(userId); replyRealNameInfo = replyRealNameInfo.append(userDetail.getRealName()).append(","); } //截取 return replyRealNameInfo.substring(0, replyRealNameInfo.length() - 1); } }