实现信息处理、信息报送、值班信息功能

master
YIN 2025-11-28 19:56:56 +08:00
parent 869cd744db
commit 5f921807c3
31 changed files with 1077 additions and 50 deletions

View File

@ -32,8 +32,13 @@ public class LoginUser implements Serializable {
*/ */
private Long userId; private Long userId;
/** /**
* ID * ID
*/
private String workDeptId;
/**
* ID
*/ */
private String deptId; private String deptId;
@ -43,7 +48,11 @@ public class LoginUser implements Serializable {
private String deptCategory; private String deptCategory;
/** /**
* *
*/
private String workDeptName;
/**
*
*/ */
private String deptName; private String deptName;

View File

@ -35,6 +35,8 @@ public class LoginHelper {
public static final String TENANT_KEY = "tenantId"; public static final String TENANT_KEY = "tenantId";
public static final String USER_KEY = "userId"; public static final String USER_KEY = "userId";
public static final String USER_NAME_KEY = "userName"; public static final String USER_NAME_KEY = "userName";
public static final String WORK_DEPT_KEY = "workDeptId";
public static final String WORK_DEPT_NAME_KEY = "workDeptName";
public static final String DEPT_KEY = "deptId"; public static final String DEPT_KEY = "deptId";
public static final String DEPT_NAME_KEY = "deptName"; public static final String DEPT_NAME_KEY = "deptName";
public static final String DEPT_CATEGORY_KEY = "deptCategory"; public static final String DEPT_CATEGORY_KEY = "deptCategory";
@ -53,6 +55,8 @@ public class LoginHelper {
model.setExtra(TENANT_KEY, loginUser.getTenantId()) model.setExtra(TENANT_KEY, loginUser.getTenantId())
.setExtra(USER_KEY, loginUser.getUserId()) .setExtra(USER_KEY, loginUser.getUserId())
.setExtra(USER_NAME_KEY, loginUser.getUsername()) .setExtra(USER_NAME_KEY, loginUser.getUsername())
.setExtra(WORK_DEPT_KEY, loginUser.getWorkDeptId())
.setExtra(WORK_DEPT_NAME_KEY, loginUser.getWorkDeptName())
.setExtra(DEPT_KEY, loginUser.getDeptId()) .setExtra(DEPT_KEY, loginUser.getDeptId())
.setExtra(DEPT_NAME_KEY, loginUser.getDeptName()) .setExtra(DEPT_NAME_KEY, loginUser.getDeptName())
.setExtra(DEPT_CATEGORY_KEY, loginUser.getDeptCategory()) .setExtra(DEPT_CATEGORY_KEY, loginUser.getDeptCategory())
@ -110,6 +114,19 @@ public class LoginHelper {
return Convert.toStr(getExtra(TENANT_KEY)); return Convert.toStr(getExtra(TENANT_KEY));
} }
/**
* ID
*/
public static String getWorkDeptId() {
return getExtra(WORK_DEPT_KEY).toString();
}
/**
*
*/
public static String getWorkDeptName() {
return Convert.toStr(getExtra(WORK_DEPT_NAME_KEY));
}
/** /**
* ID * ID
*/ */

View File

@ -0,0 +1,105 @@
package org.dromara.biz.controller;
import java.util.List;
import lombok.RequiredArgsConstructor;
import jakarta.servlet.http.HttpServletResponse;
import jakarta.validation.constraints.*;
import cn.dev33.satoken.annotation.SaCheckPermission;
import org.springframework.web.bind.annotation.*;
import org.springframework.validation.annotation.Validated;
import org.dromara.common.idempotent.annotation.RepeatSubmit;
import org.dromara.common.log.annotation.Log;
import org.dromara.common.web.core.BaseController;
import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.common.core.domain.R;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
import org.dromara.common.log.enums.BusinessType;
import org.dromara.common.excel.utils.ExcelUtil;
import org.dromara.biz.domain.vo.BizDutyVo;
import org.dromara.biz.domain.bo.BizDutyBo;
import org.dromara.biz.service.IBizDutyService;
import org.dromara.common.mybatis.core.page.TableDataInfo;
/**
*
*
* @author ruansee
* @date 2025-11-27
*/
@Validated
@RequiredArgsConstructor
@RestController
@RequestMapping("/biz/duty")
public class BizDutyController extends BaseController {
private final IBizDutyService bizDutyService;
/**
*
*/
@SaCheckPermission("biz:duty:list")
@GetMapping("/list")
public TableDataInfo<BizDutyVo> list(BizDutyBo bo, PageQuery pageQuery) {
return bizDutyService.queryPageList(bo, pageQuery);
}
/**
*
*/
@SaCheckPermission("biz:duty:export")
@Log(title = "值班信息", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(BizDutyBo bo, HttpServletResponse response) {
List<BizDutyVo> list = bizDutyService.queryList(bo);
ExcelUtil.exportExcel(list, "值班信息", BizDutyVo.class, response);
}
/**
*
*
* @param id
*/
@SaCheckPermission("biz:duty:query")
@GetMapping("/{id}")
public R<BizDutyVo> getInfo(@NotNull(message = "主键不能为空")
@PathVariable Long id) {
return R.ok(bizDutyService.queryById(id));
}
/**
*
*/
@SaCheckPermission("biz:duty:add")
@Log(title = "值班信息", businessType = BusinessType.INSERT)
@RepeatSubmit()
@PostMapping()
public R<Void> add(@Validated(AddGroup.class) @RequestBody BizDutyBo bo) {
return toAjax(bizDutyService.insertByBo(bo));
}
/**
*
*/
@SaCheckPermission("biz:duty:edit")
@Log(title = "值班信息", businessType = BusinessType.UPDATE)
@RepeatSubmit()
@PutMapping()
public R<Void> edit(@Validated(EditGroup.class) @RequestBody BizDutyBo bo) {
return toAjax(bizDutyService.updateByBo(bo));
}
/**
*
*
* @param ids
*/
@SaCheckPermission("biz:duty:remove")
@Log(title = "值班信息", businessType = BusinessType.DELETE)
@DeleteMapping("/{ids}")
public R<Void> remove(@NotEmpty(message = "主键不能为空")
@PathVariable Long[] ids) {
return toAjax(bizDutyService.deleteWithValidByIds(List.of(ids), true));
}
}

View File

@ -2,12 +2,14 @@ package org.dromara.biz.controller;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
import java.util.Map;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import jakarta.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse;
import jakarta.validation.constraints.*; import jakarta.validation.constraints.*;
import cn.dev33.satoken.annotation.SaCheckPermission; import cn.dev33.satoken.annotation.SaCheckPermission;
import org.dromara.common.core.domain.model.LoginUser; import org.dromara.common.core.domain.model.LoginUser;
import org.dromara.common.core.utils.Helper;
import org.dromara.common.satoken.utils.LoginHelper; import org.dromara.common.satoken.utils.LoginHelper;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
@ -48,6 +50,26 @@ public class BizReportInfoController extends BaseController {
return bizReportInfoService.queryPageList(bo, pageQuery); return bizReportInfoService.queryPageList(bo, pageQuery);
} }
/**
*
*/
@SaCheckPermission("biz:reportInfo:list")
@GetMapping("/xxcl/list")
public TableDataInfo<BizReportInfoVo> xxcllist(BizReportInfoBo bo, PageQuery pageQuery) {
bo.setOldTable("xxcl");
return bizReportInfoService.queryPageList(bo, pageQuery);
}
/**
*
*/
@SaCheckPermission("biz:reportInfo:list")
@GetMapping("/xxbs/list")
public TableDataInfo<BizReportInfoVo> xxbslist(BizReportInfoBo bo, PageQuery pageQuery) {
bo.setOldTable("xxbs");
return bizReportInfoService.queryPageList(bo, pageQuery);
}
/** /**
* *
*/ */
@ -68,7 +90,12 @@ public class BizReportInfoController extends BaseController {
@GetMapping("/{id}") @GetMapping("/{id}")
public R<BizReportInfoVo> getInfo(@NotNull(message = "主键不能为空") public R<BizReportInfoVo> getInfo(@NotNull(message = "主键不能为空")
@PathVariable Long id) { @PathVariable Long id) {
return R.ok(bizReportInfoService.queryById(id)); BizReportInfoVo info = bizReportInfoService.queryById(id);
if (Helper.FInt(info.getOldId())>0 && !Helper.NStr(info.getUrl()).equals("")){
info.setPdfUrl("/showFile?filePath="+Helper.NStr(info.getUrl()));
}
return R.ok(info);
} }
/** /**

View File

@ -98,11 +98,8 @@ public class BizReportReceiverController extends BaseController {
@Log(title = "报送记录签收", businessType = BusinessType.UPDATE) @Log(title = "报送记录签收", businessType = BusinessType.UPDATE)
@PostMapping("/sign") @PostMapping("/sign")
public R<Void> sign(@Validated(EditGroup.class) @RequestBody BizReportReceiverBo bo) { public R<Void> sign(@Validated(EditGroup.class) @RequestBody BizReportReceiverBo bo) {
bo.setIsSign(1L);
bo.setSignUserId(LoginHelper.getUserId()); return toAjax(bizReportReceiverService.sign(bo));
bo.setSignUserName(LoginHelper.getLoginUser().getNickname());
bo.setSignTime(new Date());
return toAjax(bizReportReceiverService.updateByBo(bo));
} }
/** /**

View File

@ -0,0 +1,115 @@
package org.dromara.biz.domain;
import org.dromara.common.mybatis.core.domain.BaseEntity;
import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import java.io.Serial;
/**
* biz_duty
*
* @author ruansee
* @date 2025-11-27
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("biz_duty")
public class BizDuty extends BaseEntity {
@Serial
private static final long serialVersionUID = 1L;
/**
* ID
*/
@TableId(value = "id")
private Long id;
/**
*
*/
@JsonFormat(pattern = "yyyy-MM-dd")
private Date dutyDate;
/**
* ID
*/
private String deptId;
/**
*
*/
private String deptName;
/**
* ID
*/
private Long leaderId;
/**
*
*/
private String leaderName;
/**
* ID
*/
private Long monitorId;
/**
*
*/
private String monitorName;
/**
* ID
*/
private String watchkeeperIds;
/**
*
*/
private String watchkeeperNames;
/**
*
*/
private Date startTime;
/**
*
*/
private Date endTime;
/**
*
*/
private String level;
/**
*
*/
private String dutyLog;
/**
*
*/
private String status;
/**
* ID
*/
private Long createUserId;
/**
*
*/
private String remark;
private Date createTime;
}

View File

@ -13,7 +13,7 @@ import java.io.Serial;
* biz_report_receiver * biz_report_receiver
* *
* @author ruansee * @author ruansee
* @date 2025-11-21 * @date 2025-11-28
*/ */
@Data @Data
@EqualsAndHashCode(callSuper = true) @EqualsAndHashCode(callSuper = true)
@ -47,7 +47,7 @@ public class BizReportReceiver extends BaseEntity {
/** /**
* *
*/ */
private Long isSign; private Boolean isSign;
/** /**
* *
@ -64,5 +64,24 @@ public class BizReportReceiver extends BaseEntity {
*/ */
private String signUserName; private String signUserName;
/**
* ID
*/
private Long oldId;
/**
* ID
*/
private String oldUserId;
/**
* ID
*/
private Long oldReportId;
/**
*
*/
private Boolean isFeedback;
} }

View File

@ -6,6 +6,7 @@ import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
import java.io.Serial; import java.io.Serial;
import java.util.Date;
/** /**
* biz_report_reply * biz_report_reply
@ -57,5 +58,6 @@ public class BizReportReply extends BaseEntity {
*/ */
private String fileName; private String fileName;
private Date createTime;
} }

View File

@ -0,0 +1,113 @@
package org.dromara.biz.domain.bo;
import org.dromara.biz.domain.BizDuty;
import org.dromara.common.mybatis.core.domain.BaseEntity;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import lombok.EqualsAndHashCode;
import jakarta.validation.constraints.*;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
/**
* biz_duty
*
* @author ruansee
* @date 2025-11-27
*/
@Data
@EqualsAndHashCode(callSuper = true)
@AutoMapper(target = BizDuty.class, reverseConvertGenerate = false)
public class BizDutyBo extends BaseEntity {
/**
* ID
*/
@NotNull(message = "ID不能为空", groups = { EditGroup.class })
private Long id;
/**
*
*/
@JsonFormat(pattern = "yyyy-MM-dd")
private Date dutyDate;
/**
* ID
*/
private String deptId;
/**
*
*/
private String deptName;
/**
* ID
*/
private Long leaderId;
/**
*
*/
private String leaderName;
/**
* ID
*/
private Long monitorId;
/**
*
*/
private String monitorName;
/**
* ID
*/
private String watchkeeperIds;
/**
*
*/
private String watchkeeperNames;
/**
*
*/
private Date startTime;
/**
*
*/
private Date endTime;
/**
*
*/
private String level;
/**
*
*/
private String dutyLog;
/**
*
*/
private String status;
/**
* ID
*/
private Long createUserId;
/**
*
*/
private String remark;
}

View File

@ -15,7 +15,7 @@ import com.fasterxml.jackson.annotation.JsonFormat;
* biz_report_receiver * biz_report_receiver
* *
* @author ruansee * @author ruansee
* @date 2025-11-21 * @date 2025-11-28
*/ */
@Data @Data
@EqualsAndHashCode(callSuper = true) @EqualsAndHashCode(callSuper = true)
@ -46,7 +46,7 @@ public class BizReportReceiverBo extends BaseEntity {
/** /**
* *
*/ */
private Long isSign; private Boolean isSign;
/** /**
* *
@ -63,5 +63,25 @@ public class BizReportReceiverBo extends BaseEntity {
*/ */
private String signUserName; private String signUserName;
/**
* ID
*/
private Long oldId;
/**
* ID
*/
private String oldUserId;
/**
* ID
*/
private Long oldReportId;
/**
*
*/
private Boolean isFeedback;
} }

View File

@ -0,0 +1,157 @@
package org.dromara.biz.domain.vo;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.dromara.biz.domain.BizDuty;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import org.dromara.common.excel.annotation.ExcelDictFormat;
import org.dromara.common.excel.convert.ExcelDictConvert;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import org.dromara.common.translation.annotation.Translation;
import org.dromara.common.translation.constant.TransConstant;
import org.dromara.system.domain.SysUser;
import java.io.Serial;
import java.io.Serializable;
import java.util.Date;
import java.util.List;
/**
* biz_duty
*
* @author ruansee
* @date 2025-11-27
*/
@Data
@ExcelIgnoreUnannotated
@AutoMapper(target = BizDuty.class)
public class BizDutyVo implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
/**
* ID
*/
@ExcelProperty(value = "ID")
private Long id;
/**
*
*/
@ExcelProperty(value = "值班日期")
@JsonFormat(pattern = "yyyy-MM-dd")
private Date dutyDate;
/**
* ID
*/
@ExcelProperty(value = "值班单位ID")
private String deptId;
/**
*
*/
@ExcelProperty(value = "值班单位")
private String deptName;
/**
* ID
*/
@ExcelProperty(value = "局领导ID")
private Long leaderId;
/**
*
*/
@ExcelProperty(value = "局领导名称")
@Translation(type = TransConstant.USER_ID_TO_NICKNAME, mapper = "leaderId")
private String leaderName;
/**
*
*/
private SysUser leader;
/**
* ID
*/
@ExcelProperty(value = "值班长ID")
private Long monitorId;
/**
*
*/
@ExcelProperty(value = "值班长名称")
@Translation(type = TransConstant.USER_ID_TO_NICKNAME, mapper = "monitorId")
private String monitorName;
/**
*
*/
private SysUser monitor;
/**
* ID
*/
@ExcelProperty(value = "值班人员ID")
private String watchkeeperIds;
/**
*
*/
@ExcelProperty(value = "值班人员姓名")
private String watchkeeperNames;
/**
*
*/
private List<SysUser> watchkeeperList;
/**
*
*/
@ExcelProperty(value = "值班开始时间")
private Date startTime;
/**
*
*/
@ExcelProperty(value = "值班结束时间")
private Date endTime;
/**
*
*/
@ExcelProperty(value = "勤务等级")
private String level;
/**
*
*/
@ExcelProperty(value = "值班日志")
private String dutyLog;
/**
*
*/
@ExcelProperty(value = "值班状态")
private String status;
/**
* ID
*/
@ExcelProperty(value = "创建用户ID")
private Long createUserId;
/**
*
*/
@ExcelProperty(value = "备注")
private String remark;
}

View File

@ -181,4 +181,6 @@ public class BizReportInfoVo implements Serializable {
* ID * ID
*/ */
private String[] receiverDeptIds; private String[] receiverDeptIds;
private String pdfUrl;
} }

View File

@ -20,7 +20,7 @@ import java.util.Date;
* biz_report_receiver * biz_report_receiver
* *
* @author ruansee * @author ruansee
* @date 2025-11-21 * @date 2025-11-28
*/ */
@Data @Data
@ExcelIgnoreUnannotated @ExcelIgnoreUnannotated
@ -58,7 +58,7 @@ public class BizReportReceiverVo implements Serializable {
* *
*/ */
@ExcelProperty(value = "是否签收") @ExcelProperty(value = "是否签收")
private Long isSign; private Boolean isSign;
/** /**
* *
@ -78,5 +78,29 @@ public class BizReportReceiverVo implements Serializable {
@ExcelProperty(value = "签收用户名称") @ExcelProperty(value = "签收用户名称")
private String signUserName; private String signUserName;
/**
* ID
*/
@ExcelProperty(value = "旧系统ID")
private Long oldId;
/**
* ID
*/
@ExcelProperty(value = "旧系统用户ID")
private String oldUserId;
/**
* ID
*/
@ExcelProperty(value = "旧系统报送ID")
private Long oldReportId;
/**
*
*/
@ExcelProperty(value = "是否反馈")
private Boolean isFeedback;
} }

View File

@ -7,6 +7,7 @@ import org.dromara.common.excel.annotation.ExcelDictFormat;
import org.dromara.common.excel.convert.ExcelDictConvert; import org.dromara.common.excel.convert.ExcelDictConvert;
import io.github.linpeilie.annotations.AutoMapper; import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data; import lombok.Data;
import org.dromara.system.domain.vo.SysUserVo;
import java.io.Serial; import java.io.Serial;
import java.io.Serializable; import java.io.Serializable;
@ -70,5 +71,14 @@ public class BizReportReplyVo implements Serializable {
@ExcelProperty(value = "附件名称") @ExcelProperty(value = "附件名称")
private String fileName; private String fileName;
/**
*
*/
private SysUserVo user;
private Date createTime;
private String userName;
private String nickName;
private String avatar;
private String deptName;
private String deptCategory;
} }

View File

@ -0,0 +1,15 @@
package org.dromara.biz.mapper;
import org.dromara.biz.domain.BizDuty;
import org.dromara.biz.domain.vo.BizDutyVo;
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
/**
* Mapper
*
* @author ruansee
* @date 2025-11-27
*/
public interface BizDutyMapper extends BaseMapperPlus<BizDuty, BizDutyVo> {
}

View File

@ -18,12 +18,12 @@ import java.util.List;
*/ */
public interface BizReportInfoMapper extends BaseMapperPlus<BizReportInfo, BizReportInfoVo> { public interface BizReportInfoMapper extends BaseMapperPlus<BizReportInfo, BizReportInfoVo> {
@Select("select i.*, c.title as categoryTitle from biz_report_info i left join biz_category c on i.category_id = c.id where i.id = ${id}") @Select("select * from v_report_info v where id = ${id}")
BizReportInfoVo selectBizReportInfoVoById(@Param("id") Long id); BizReportInfoVo selectBizReportInfoVoById(@Param("id") Long id);
@Select("select i.*, c.title as categoryTitle from biz_report_info i left join biz_category c on i.category_id = c.id ${ew.getCustomSqlSegment}") @Select("select * from v_report_info v ${ew.getCustomSqlSegment}")
List<BizReportInfoVo> selectBizReportInfoVoList(@Param("ew") Wrapper<BizReportInfo> queryWrapper); List<BizReportInfoVo> selectBizReportInfoVoList(@Param("ew") Wrapper<BizReportInfo> queryWrapper);
@Select("select i.*, c.title as categoryTitle from biz_report_info i left join biz_category c on i.category_id = c.id ${ew.getCustomSqlSegment}") @Select("select * from v_report_info v ${ew.getCustomSqlSegment}")
Page<BizReportInfoVo> selectBizReportInfoVoPage(@Param("page") Page<BizReportInfo> page, @Param("ew") Wrapper<BizReportInfo> queryWrapper); Page<BizReportInfoVo> selectBizReportInfoVoPage(@Param("page") Page<BizReportInfo> page, @Param("ew") Wrapper<BizReportInfo> queryWrapper);
} }

View File

@ -1,6 +1,12 @@
package org.dromara.biz.mapper; package org.dromara.biz.mapper;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import org.dromara.biz.domain.BizReportInfo;
import org.dromara.biz.domain.BizReportReply; import org.dromara.biz.domain.BizReportReply;
import org.dromara.biz.domain.vo.BizReportInfoVo;
import org.dromara.biz.domain.vo.BizReportReplyVo; import org.dromara.biz.domain.vo.BizReportReplyVo;
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
@ -12,4 +18,6 @@ import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
*/ */
public interface BizReportReplyMapper extends BaseMapperPlus<BizReportReply, BizReportReplyVo> { public interface BizReportReplyMapper extends BaseMapperPlus<BizReportReply, BizReportReplyVo> {
@Select("select * from v_report_reply v ${ew.getCustomSqlSegment}")
Page<BizReportReplyVo> selectBizReportReplyVoPage(@Param("page") Page<BizReportReply> page, @Param("ew") Wrapper<BizReportReply> queryWrapper);
} }

View File

@ -0,0 +1,68 @@
package org.dromara.biz.service;
import org.dromara.biz.domain.vo.BizDutyVo;
import org.dromara.biz.domain.bo.BizDutyBo;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.mybatis.core.page.PageQuery;
import java.util.Collection;
import java.util.List;
/**
* Service
*
* @author ruansee
* @date 2025-11-27
*/
public interface IBizDutyService {
/**
*
*
* @param id
* @return
*/
BizDutyVo queryById(Long id);
/**
*
*
* @param bo
* @param pageQuery
* @return
*/
TableDataInfo<BizDutyVo> queryPageList(BizDutyBo bo, PageQuery pageQuery);
/**
*
*
* @param bo
* @return
*/
List<BizDutyVo> queryList(BizDutyBo bo);
/**
*
*
* @param bo
* @return
*/
Boolean insertByBo(BizDutyBo bo);
/**
*
*
* @param bo
* @return
*/
Boolean updateByBo(BizDutyBo bo);
/**
*
*
* @param ids
* @param isValid
* @return
*/
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
}

View File

@ -65,4 +65,12 @@ public interface IBizReportReceiverService {
* @return * @return
*/ */
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid); Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
/**
*
*
* @param bo
* @return
*/
Boolean sign(BizReportReceiverBo bo);
} }

View File

@ -0,0 +1,188 @@
package org.dromara.biz.service.impl;
import org.dromara.biz.domain.BizReportInfo;
import org.dromara.common.core.domain.model.LoginUser;
import org.dromara.common.core.service.DeptService;
import org.dromara.common.core.service.UserService;
import org.dromara.common.core.utils.Helper;
import org.dromara.common.core.utils.MapstructUtils;
import org.dromara.common.core.utils.StringUtils;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.mybatis.core.page.PageQuery;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import lombok.RequiredArgsConstructor;
import org.dromara.common.satoken.utils.LoginHelper;
import org.dromara.system.mapper.SysUserMapper;
import org.springframework.stereotype.Service;
import org.dromara.biz.domain.bo.BizDutyBo;
import org.dromara.biz.domain.vo.BizDutyVo;
import org.dromara.biz.domain.BizDuty;
import org.dromara.biz.mapper.BizDutyMapper;
import org.dromara.biz.service.IBizDutyService;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Collection;
/**
* Service
*
* @author ruansee
* @date 2025-11-27
*/
@RequiredArgsConstructor
@Service
public class BizDutyServiceImpl implements IBizDutyService {
private final BizDutyMapper baseMapper;
private final UserService userService;
private final DeptService deptService;
private final SysUserMapper userMapper;
/**
*
*
* @param id
* @return
*/
@Override
public BizDutyVo queryById(Long id){
BizDutyVo duty = baseMapper.selectVoById(id);
duty.setLeader(userMapper.selectById(duty.getLeaderId()));
duty.setMonitor(userMapper.selectById(duty.getMonitorId()));
duty.setWatchkeeperList(userMapper.selectByIds(convertIds(duty.getWatchkeeperIds())));
return duty;
}
List<Long> convertIds(String ids){
List<Long> result = new ArrayList<>();
String[] arr = ids.split(",");
for (String id :
arr) {
result.add(Helper.FLong(id));
}
return result;
}
/**
*
*
* @param bo
* @param pageQuery
* @return
*/
@Override
public TableDataInfo<BizDutyVo> queryPageList(BizDutyBo bo, PageQuery pageQuery) {
LambdaQueryWrapper<BizDuty> lqw = buildQueryWrapper(bo);
Page<BizDutyVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
return TableDataInfo.build(result);
}
/**
*
*
* @param bo
* @return
*/
@Override
public List<BizDutyVo> queryList(BizDutyBo bo) {
LambdaQueryWrapper<BizDuty> lqw = buildQueryWrapper(bo);
return baseMapper.selectVoList(lqw);
}
private LambdaQueryWrapper<BizDuty> buildQueryWrapper(BizDutyBo bo) {
Map<String, Object> params = bo.getParams();
LambdaQueryWrapper<BizDuty> lqw = Wrappers.lambdaQuery();
lqw.orderByDesc(BizDuty::getCreateTime);
lqw.eq(bo.getDutyDate() != null, BizDuty::getDutyDate, bo.getDutyDate());
lqw.between(params.get("beginDutyDate") != null && params.get("endDutyDate") != null,
BizDuty::getDutyDate ,params.get("beginDutyDate"), params.get("endDutyDate"));
lqw.eq(StringUtils.isNotBlank(bo.getDeptId()), BizDuty::getDeptId, bo.getDeptId());
lqw.like(StringUtils.isNotBlank(bo.getDeptName()), BizDuty::getDeptName, bo.getDeptName());
lqw.eq(bo.getLeaderId() != null, BizDuty::getLeaderId, bo.getLeaderId());
lqw.like(StringUtils.isNotBlank(bo.getLeaderName()), BizDuty::getLeaderName, bo.getLeaderName());
lqw.eq(bo.getMonitorId() != null, BizDuty::getMonitorId, bo.getMonitorId());
lqw.like(StringUtils.isNotBlank(bo.getMonitorName()), BizDuty::getMonitorName, bo.getMonitorName());
lqw.eq(StringUtils.isNotBlank(bo.getWatchkeeperIds()), BizDuty::getWatchkeeperIds, bo.getWatchkeeperIds());
lqw.like(StringUtils.isNotBlank(bo.getWatchkeeperNames()), BizDuty::getWatchkeeperNames, bo.getWatchkeeperNames());
lqw.eq(bo.getStartTime() != null, BizDuty::getStartTime, bo.getStartTime());
lqw.eq(bo.getEndTime() != null, BizDuty::getEndTime, bo.getEndTime());
lqw.eq(StringUtils.isNotBlank(bo.getLevel()), BizDuty::getLevel, bo.getLevel());
lqw.eq(StringUtils.isNotBlank(bo.getDutyLog()), BizDuty::getDutyLog, bo.getDutyLog());
lqw.eq(StringUtils.isNotBlank(bo.getStatus()), BizDuty::getStatus, bo.getStatus());
lqw.eq(bo.getCreateUserId() != null, BizDuty::getCreateUserId, bo.getCreateUserId());
return lqw;
}
/**
*
*
* @param bo
* @return
*/
@Override
public Boolean insertByBo(BizDutyBo bo) {
BizDuty add = MapstructUtils.convert(bo, BizDuty.class);
LoginUser user = LoginHelper.getLoginUser();
add.setDeptId(user.getDeptId());
add.setCreateUserId(user.getUserId());
add.setLeaderName(userService.selectNicknameById(add.getLeaderId()));
add.setMonitorName(userService.selectNicknameById(add.getMonitorId()));
add.setWatchkeeperNames(userService.selectNicknameByIds(add.getWatchkeeperIds()));
add.setDeptName(user.getDeptName());
validEntityBeforeSave(add);
boolean flag = baseMapper.insert(add) > 0;
if (flag) {
bo.setId(add.getId());
}
return flag;
}
/**
*
*
* @param bo
* @return
*/
@Override
public Boolean updateByBo(BizDutyBo bo) {
BizDuty update = MapstructUtils.convert(bo, BizDuty.class);
update.setLeaderName(userService.selectNicknameById(update.getLeaderId()));
update.setMonitorName(userService.selectNicknameById(update.getMonitorId()));
update.setWatchkeeperNames(userService.selectNicknameByIds(update.getWatchkeeperIds()));
// update.setDeptName(deptService.selectDeptNameByIds(update.getDeptId()));
validEntityBeforeSave(update);
return baseMapper.updateById(update) > 0;
}
/**
*
*/
private void validEntityBeforeSave(BizDuty entity){
//TODO 做一些数据校验,如唯一约束
}
/**
*
*
* @param ids
* @param isValid
* @return
*/
@Override
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
if(isValid){
//TODO 做一些业务上的校验,判断是否需要校验
}
return baseMapper.deleteByIds(ids) > 0;
}
}

View File

@ -5,6 +5,7 @@ import org.dromara.biz.domain.BizReportReceiver;
import org.dromara.biz.domain.vo.BizReportReceiverVo; import org.dromara.biz.domain.vo.BizReportReceiverVo;
import org.dromara.biz.mapper.BizReportFileMapper; import org.dromara.biz.mapper.BizReportFileMapper;
import org.dromara.biz.mapper.BizReportReceiverMapper; import org.dromara.biz.mapper.BizReportReceiverMapper;
import org.dromara.common.core.domain.model.LoginUser;
import org.dromara.common.core.utils.Helper; import org.dromara.common.core.utils.Helper;
import org.dromara.common.core.utils.MapstructUtils; import org.dromara.common.core.utils.MapstructUtils;
import org.dromara.common.core.utils.StringUtils; import org.dromara.common.core.utils.StringUtils;
@ -14,6 +15,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.dromara.common.satoken.utils.LoginHelper;
import org.dromara.system.mapper.SysDeptMapper; import org.dromara.system.mapper.SysDeptMapper;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.dromara.biz.domain.bo.BizReportInfoBo; import org.dromara.biz.domain.bo.BizReportInfoBo;
@ -101,11 +103,12 @@ public class BizReportInfoServiceImpl implements IBizReportInfoService {
Map<String, Object> params = bo.getParams(); Map<String, Object> params = bo.getParams();
LambdaQueryWrapper<BizReportInfo> lqw = Wrappers.lambdaQuery(); LambdaQueryWrapper<BizReportInfo> lqw = Wrappers.lambdaQuery();
lqw.orderByDesc(BizReportInfo::getReportTime); lqw.orderByDesc(BizReportInfo::getReportTime);
lqw.eq(StringUtils.isNotBlank(bo.getTitle()), BizReportInfo::getTitle, bo.getTitle()); lqw.like(StringUtils.isNotBlank(bo.getTitle()), BizReportInfo::getTitle, bo.getTitle());
lqw.eq(bo.getCategoryId() != null, BizReportInfo::getCategoryId, bo.getCategoryId()); lqw.eq(bo.getCategoryId() != null, BizReportInfo::getCategoryId, bo.getCategoryId());
lqw.eq(StringUtils.isNotBlank(bo.getChao()), BizReportInfo::getChao, bo.getChao()); lqw.eq(StringUtils.isNotBlank(bo.getChao()), BizReportInfo::getChao, bo.getChao());
lqw.eq(StringUtils.isNotBlank(bo.getLdps()), BizReportInfo::getLdps, bo.getLdps()); lqw.eq(StringUtils.isNotBlank(bo.getLdps()), BizReportInfo::getLdps, bo.getLdps());
lqw.eq(StringUtils.isNotBlank(bo.getQh()), BizReportInfo::getQh, bo.getQh()); lqw.eq(StringUtils.isNotBlank(bo.getQh()), BizReportInfo::getQh, bo.getQh());
lqw.eq(StringUtils.isNotBlank(bo.getOldTable()), BizReportInfo::getOldTable, bo.getOldTable());
lqw.eq(StringUtils.isNotBlank(bo.getOldType()), BizReportInfo::getOldType, bo.getOldType()); lqw.eq(StringUtils.isNotBlank(bo.getOldType()), BizReportInfo::getOldType, bo.getOldType());
lqw.eq(bo.getOldId() != null, BizReportInfo::getOldId, bo.getOldId()); lqw.eq(bo.getOldId() != null, BizReportInfo::getOldId, bo.getOldId());
lqw.eq(StringUtils.isNotBlank(bo.getUrl()), BizReportInfo::getUrl, bo.getUrl()); lqw.eq(StringUtils.isNotBlank(bo.getUrl()), BizReportInfo::getUrl, bo.getUrl());
@ -121,6 +124,20 @@ public class BizReportInfoServiceImpl implements IBizReportInfoService {
lqw.like(StringUtils.isNotBlank(bo.getReportDeptName()), BizReportInfo::getReportDeptName, bo.getReportDeptName()); lqw.like(StringUtils.isNotBlank(bo.getReportDeptName()), BizReportInfo::getReportDeptName, bo.getReportDeptName());
lqw.eq(StringUtils.isNotBlank(bo.getStatus()), BizReportInfo::getStatus, bo.getStatus()); lqw.eq(StringUtils.isNotBlank(bo.getStatus()), BizReportInfo::getStatus, bo.getStatus());
lqw.eq(bo.getUpdateUserId() != null, BizReportInfo::getUpdateUserId, bo.getUpdateUserId()); lqw.eq(bo.getUpdateUserId() != null, BizReportInfo::getUpdateUserId, bo.getUpdateUserId());
String table = Helper.NStr(bo.getOldTable());
LoginUser user = LoginHelper.getLoginUser();
if (table.equals("xxcl")){
lqw.and(w-> {
// w.eq(user.getDeptId()!=null, BizReportInfo::getReportDeptId, user.getDeptId());
w.likeRight(BizReportInfo::getReportDeptId, Helper.PrefixDeptid(user.getDeptId()));
w.or(ww->{
ww.exists("select id from biz_report_receiver where dept_id = '"+ Helper.NStr(user.getDeptId()) +" and report_id = v.id '");
});
});
} else if (table.equals("xxbs")){
lqw.likeRight(BizReportInfo::getReportDeptId, Helper.PrefixDeptid(user.getDeptId()));
}
return lqw; return lqw;
} }
@ -139,7 +156,7 @@ public class BizReportInfoServiceImpl implements IBizReportInfoService {
bo.setId(add.getId()); bo.setId(add.getId());
// 插入接收单位表 // 插入接收单位表
if(bo.getReceiverDeptIds().length>0){ if(bo.getReceiverDeptIds()!=null && bo.getReceiverDeptIds().length>0){
for (String deptId : bo.getReceiverDeptIds()) { for (String deptId : bo.getReceiverDeptIds()) {
BizReportReceiver receiver = new BizReportReceiver(); BizReportReceiver receiver = new BizReportReceiver();
receiver.setReportId(bo.getId()); receiver.setReportId(bo.getId());
@ -150,7 +167,7 @@ public class BizReportInfoServiceImpl implements IBizReportInfoService {
} }
// 插入附件表 // 插入附件表
if (bo.getFiles().size()>0){ if (bo.getFiles()!=null && bo.getFiles().size()>0){
for (BizReportFile file : bo.getFiles()) { for (BizReportFile file : bo.getFiles()) {
file.setReportId(bo.getId()); file.setReportId(bo.getId());
fileMapper.insert(file); fileMapper.insert(file);
@ -177,6 +194,7 @@ public class BizReportInfoServiceImpl implements IBizReportInfoService {
if (flag){ if (flag){
// 插入接收单位表 // 插入接收单位表
List<String> dbDeptIds = new ArrayList<>(); List<String> dbDeptIds = new ArrayList<>();
if (bo.getReceiverDepts()!=null) {
if (bo.getReceiverDepts().size() > 0) { if (bo.getReceiverDepts().size() > 0) {
for (BizReportReceiver receiver : bo.getReceiverDepts()) { for (BizReportReceiver receiver : bo.getReceiverDepts()) {
if (!Arrays.asList(bo.getReceiverDeptIds()).contains(receiver.getDeptId())) if (!Arrays.asList(bo.getReceiverDeptIds()).contains(receiver.getDeptId()))
@ -188,7 +206,8 @@ public class BizReportInfoServiceImpl implements IBizReportInfoService {
lqw.eq(BizReportReceiver::getReportId, bo.getId()); lqw.eq(BizReportReceiver::getReportId, bo.getId());
receiverMapper.delete(lqw); receiverMapper.delete(lqw);
} }
if(bo.getReceiverDeptIds().length>0){ }
if(bo.getReceiverDeptIds()!=null && bo.getReceiverDeptIds().length>0){
for (String deptId : bo.getReceiverDeptIds()) { for (String deptId : bo.getReceiverDeptIds()) {
if (dbDeptIds.contains(deptId)) continue; if (dbDeptIds.contains(deptId)) continue;
else { else {
@ -202,7 +221,7 @@ public class BizReportInfoServiceImpl implements IBizReportInfoService {
} }
// 插入附件表 // 插入附件表
if (bo.getFiles().size()>0){ if (bo.getFiles()!=null && bo.getFiles().size()>0){
for (BizReportFile file : bo.getFiles()) { for (BizReportFile file : bo.getFiles()) {
if (Helper.FInt(file.getId())>0) continue; if (Helper.FInt(file.getId())>0) continue;

View File

@ -1,5 +1,7 @@
package org.dromara.biz.service.impl; package org.dromara.biz.service.impl;
import org.dromara.common.core.domain.model.LoginUser;
import org.dromara.common.core.utils.Helper;
import org.dromara.common.core.utils.MapstructUtils; import org.dromara.common.core.utils.MapstructUtils;
import org.dromara.common.core.utils.StringUtils; import org.dromara.common.core.utils.StringUtils;
import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.common.mybatis.core.page.TableDataInfo;
@ -8,6 +10,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.dromara.common.satoken.utils.LoginHelper;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.dromara.biz.domain.bo.BizReportReceiverBo; import org.dromara.biz.domain.bo.BizReportReceiverBo;
import org.dromara.biz.domain.vo.BizReportReceiverVo; import org.dromara.biz.domain.vo.BizReportReceiverVo;
@ -15,6 +18,7 @@ import org.dromara.biz.domain.BizReportReceiver;
import org.dromara.biz.mapper.BizReportReceiverMapper; import org.dromara.biz.mapper.BizReportReceiverMapper;
import org.dromara.biz.service.IBizReportReceiverService; import org.dromara.biz.service.IBizReportReceiverService;
import java.util.Date;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Collection; import java.util.Collection;
@ -23,7 +27,7 @@ import java.util.Collection;
* Service * Service
* *
* @author ruansee * @author ruansee
* @date 2025-11-21 * @date 2025-11-28
*/ */
@RequiredArgsConstructor @RequiredArgsConstructor
@Service @Service
@ -73,12 +77,17 @@ public class BizReportReceiverServiceImpl implements IBizReportReceiverService {
LambdaQueryWrapper<BizReportReceiver> lqw = Wrappers.lambdaQuery(); LambdaQueryWrapper<BizReportReceiver> lqw = Wrappers.lambdaQuery();
lqw.orderByAsc(BizReportReceiver::getId); lqw.orderByAsc(BizReportReceiver::getId);
lqw.eq(bo.getReportId() != null, BizReportReceiver::getReportId, bo.getReportId()); lqw.eq(bo.getReportId() != null, BizReportReceiver::getReportId, bo.getReportId());
lqw.eq(bo.getDeptId() != null, BizReportReceiver::getDeptId, bo.getDeptId()); lqw.eq(StringUtils.isNotBlank(bo.getDeptId()), BizReportReceiver::getDeptId, bo.getDeptId());
lqw.like(StringUtils.isNotBlank(bo.getDeptName()), BizReportReceiver::getDeptName, bo.getDeptName()); lqw.like(StringUtils.isNotBlank(bo.getDeptName()), BizReportReceiver::getDeptName, bo.getDeptName());
lqw.eq(bo.getIsSign() != null, BizReportReceiver::getIsSign, bo.getIsSign()); lqw.eq(bo.getIsSign() != null, BizReportReceiver::getIsSign, bo.getIsSign());
lqw.eq(bo.getSignTime() != null, BizReportReceiver::getSignTime, bo.getSignTime()); lqw.between(params.get("beginSignTime") != null && params.get("endSignTime") != null,
BizReportReceiver::getSignTime ,params.get("beginSignTime"), params.get("endSignTime"));
lqw.eq(bo.getSignUserId() != null, BizReportReceiver::getSignUserId, bo.getSignUserId()); lqw.eq(bo.getSignUserId() != null, BizReportReceiver::getSignUserId, bo.getSignUserId());
lqw.like(StringUtils.isNotBlank(bo.getSignUserName()), BizReportReceiver::getSignUserName, bo.getSignUserName()); lqw.like(StringUtils.isNotBlank(bo.getSignUserName()), BizReportReceiver::getSignUserName, bo.getSignUserName());
lqw.eq(bo.getOldId() != null, BizReportReceiver::getOldId, bo.getOldId());
lqw.eq(StringUtils.isNotBlank(bo.getOldUserId()), BizReportReceiver::getOldUserId, bo.getOldUserId());
lqw.eq(bo.getOldReportId() != null, BizReportReceiver::getOldReportId, bo.getOldReportId());
lqw.eq(bo.getIsFeedback() != null, BizReportReceiver::getIsFeedback, bo.getIsFeedback());
return lqw; return lqw;
} }
@ -133,4 +142,33 @@ public class BizReportReceiverServiceImpl implements IBizReportReceiverService {
} }
return baseMapper.deleteByIds(ids) > 0; return baseMapper.deleteByIds(ids) > 0;
} }
/**
*
*
* @param bo
* @return
*/
@Override
public Boolean sign(BizReportReceiverBo bo) {
LoginUser user = LoginHelper.getLoginUser();
if (Helper.FInt(bo.getId()) == 0){
BizReportReceiverBo sbo = new BizReportReceiverBo();
sbo.setReportId(bo.getReportId());
sbo.setDeptId(user.getDeptId());
LambdaQueryWrapper<BizReportReceiver> lqw = buildQueryWrapper(sbo);
List<BizReportReceiverVo> list = baseMapper.selectVoList(lqw);
if (list!=null && list.size()>0){
BizReportReceiverVo vo = list.get(0);
bo.setId(vo.getId());
} else return false;
}
bo.setIsSign(true);
bo.setSignUserId(user.getUserId());
bo.setSignUserName(user.getNickname());
bo.setSignTime(new Date());
BizReportReceiver update = MapstructUtils.convert(bo, BizReportReceiver.class);
validEntityBeforeSave(update);
return baseMapper.updateById(update) > 0;
}
} }

View File

@ -1,5 +1,10 @@
package org.dromara.biz.service.impl; package org.dromara.biz.service.impl;
import org.dromara.biz.domain.BizReportReceiver;
import org.dromara.biz.domain.bo.BizReportReceiverBo;
import org.dromara.biz.domain.vo.BizReportReceiverVo;
import org.dromara.biz.mapper.BizReportReceiverMapper;
import org.dromara.common.core.domain.model.LoginUser;
import org.dromara.common.core.utils.MapstructUtils; import org.dromara.common.core.utils.MapstructUtils;
import org.dromara.common.core.utils.StringUtils; import org.dromara.common.core.utils.StringUtils;
import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.common.mybatis.core.page.TableDataInfo;
@ -8,6 +13,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.dromara.common.satoken.utils.LoginHelper;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.dromara.biz.domain.bo.BizReportReplyBo; import org.dromara.biz.domain.bo.BizReportReplyBo;
import org.dromara.biz.domain.vo.BizReportReplyVo; import org.dromara.biz.domain.vo.BizReportReplyVo;
@ -30,6 +36,7 @@ import java.util.Collection;
public class BizReportReplyServiceImpl implements IBizReportReplyService { public class BizReportReplyServiceImpl implements IBizReportReplyService {
private final BizReportReplyMapper baseMapper; private final BizReportReplyMapper baseMapper;
private final BizReportReceiverMapper receiverMapper;
/** /**
* *
@ -52,7 +59,7 @@ public class BizReportReplyServiceImpl implements IBizReportReplyService {
@Override @Override
public TableDataInfo<BizReportReplyVo> queryPageList(BizReportReplyBo bo, PageQuery pageQuery) { public TableDataInfo<BizReportReplyVo> queryPageList(BizReportReplyBo bo, PageQuery pageQuery) {
LambdaQueryWrapper<BizReportReply> lqw = buildQueryWrapper(bo); LambdaQueryWrapper<BizReportReply> lqw = buildQueryWrapper(bo);
Page<BizReportReplyVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw); Page<BizReportReplyVo> result = baseMapper.selectBizReportReplyVoPage(pageQuery.build(), lqw);
return TableDataInfo.build(result); return TableDataInfo.build(result);
} }
@ -71,7 +78,7 @@ public class BizReportReplyServiceImpl implements IBizReportReplyService {
private LambdaQueryWrapper<BizReportReply> buildQueryWrapper(BizReportReplyBo bo) { private LambdaQueryWrapper<BizReportReply> buildQueryWrapper(BizReportReplyBo bo) {
Map<String, Object> params = bo.getParams(); Map<String, Object> params = bo.getParams();
LambdaQueryWrapper<BizReportReply> lqw = Wrappers.lambdaQuery(); LambdaQueryWrapper<BizReportReply> lqw = Wrappers.lambdaQuery();
lqw.orderByAsc(BizReportReply::getId); lqw.orderByDesc(BizReportReply::getId);
lqw.eq(bo.getReportId() != null, BizReportReply::getReportId, bo.getReportId()); lqw.eq(bo.getReportId() != null, BizReportReply::getReportId, bo.getReportId());
lqw.eq(StringUtils.isNotBlank(bo.getContent()), BizReportReply::getContent, bo.getContent()); lqw.eq(StringUtils.isNotBlank(bo.getContent()), BizReportReply::getContent, bo.getContent());
lqw.eq(bo.getUserId() != null, BizReportReply::getUserId, bo.getUserId()); lqw.eq(bo.getUserId() != null, BizReportReply::getUserId, bo.getUserId());
@ -89,11 +96,26 @@ public class BizReportReplyServiceImpl implements IBizReportReplyService {
*/ */
@Override @Override
public Boolean insertByBo(BizReportReplyBo bo) { public Boolean insertByBo(BizReportReplyBo bo) {
LoginUser user = LoginHelper.getLoginUser();
BizReportReply add = MapstructUtils.convert(bo, BizReportReply.class); BizReportReply add = MapstructUtils.convert(bo, BizReportReply.class);
add.setUserId(user.getUserId());
validEntityBeforeSave(add); validEntityBeforeSave(add);
boolean flag = baseMapper.insert(add) > 0; boolean flag = baseMapper.insert(add) > 0;
if (flag) { if (flag) {
bo.setId(add.getId()); bo.setId(add.getId());
LambdaQueryWrapper<BizReportReceiver> lqw = Wrappers.lambdaQuery();
lqw.orderByAsc(BizReportReceiver::getId);
lqw.eq(bo.getReportId() != null, BizReportReceiver::getReportId, bo.getReportId());
lqw.eq(BizReportReceiver::getDeptId, user.getDeptId());
List<BizReportReceiverVo> list = receiverMapper.selectVoList(lqw);
if (list!=null && list.size()>0){
BizReportReceiverVo vo = list.get(0);
BizReportReceiver sbo = new BizReportReceiver();
sbo.setId(vo.getId());
sbo.setIsFeedback(true);
receiverMapper.updateById(sbo);
}
} }
return flag; return flag;
} }

View File

@ -28,7 +28,11 @@ public class SysUser extends TenantEntity {
private Long userId; private Long userId;
/** /**
* ID * ID
*/
private String workDeptId;
/**
* ID
*/ */
private String deptId; private String deptId;
@ -52,6 +56,10 @@ public class SysUser extends TenantEntity {
*/ */
private String email; private String email;
/**
*
*/
private String telephone;
/** /**
* *
*/ */

View File

@ -30,7 +30,11 @@ public class SysUserBo extends BaseEntity {
private Long userId; private Long userId;
/** /**
* ID * ID
*/
private String workDeptId;
/**
* ID
*/ */
private String deptId; private String deptId;

View File

@ -82,9 +82,14 @@ public class SysUserExportVo implements Serializable {
private Date loginDate; private Date loginDate;
/** /**
* *
*/ */
@ExcelProperty(value = "部门名称") @ExcelProperty(value = "所属部门名称")
private String workDeptName;
/**
*
*/
@ExcelProperty(value = "管理部门名称")
private String deptName; private String deptName;
/** /**

View File

@ -32,7 +32,12 @@ public class SysUserImportVo implements Serializable {
/** /**
* ID * ID
*/ */
@ExcelProperty(value = "部门编号") @ExcelProperty(value = "所属部门编号")
private String workDeptId;
/**
* ID
*/
@ExcelProperty(value = "管理部门编号")
private String deptId; private String deptId;
/** /**

View File

@ -39,7 +39,11 @@ public class SysUserVo implements Serializable {
private String tenantId; private String tenantId;
/** /**
* ID * ID
*/
private String workDeptId;
/**
* ID
*/ */
private String deptId; private String deptId;
@ -113,6 +117,11 @@ public class SysUserVo implements Serializable {
*/ */
private Date createTime; private Date createTime;
/**
*
*/
@Translation(type = TransConstant.DEPT_ID_TO_NAME, mapper = "workDeptId")
private String workDeptName;
/** /**
* *
*/ */

View File

@ -84,7 +84,12 @@ public class SysUserServiceImpl implements ISysUserService, UserService {
.like(StringUtils.isNotBlank(user.getPhonenumber()), "u.phonenumber", user.getPhonenumber()) .like(StringUtils.isNotBlank(user.getPhonenumber()), "u.phonenumber", user.getPhonenumber())
.between(params.get("beginTime") != null && params.get("endTime") != null, .between(params.get("beginTime") != null && params.get("endTime") != null,
"u.create_time", params.get("beginTime"), params.get("endTime")) "u.create_time", params.get("beginTime"), params.get("endTime"))
.and(ObjectUtil.isNotNull(user.getDeptId()), w -> { .and(ObjectUtil.isNotNull(user.getWorkDeptId()), w -> {
List<SysDept> deptList = deptMapper.selectListByParentId(user.getWorkDeptId());
List<String> ids = StreamUtils.toList(deptList, SysDept::getDeptId);
ids.add(user.getWorkDeptId());
w.in("u.work_dept_id", ids);
}).and(ObjectUtil.isNotNull(user.getDeptId()), w -> {
List<SysDept> deptList = deptMapper.selectListByParentId(user.getDeptId()); List<SysDept> deptList = deptMapper.selectListByParentId(user.getDeptId());
List<String> ids = StreamUtils.toList(deptList, SysDept::getDeptId); List<String> ids = StreamUtils.toList(deptList, SysDept::getDeptId);
ids.add(user.getDeptId()); ids.add(user.getDeptId());

View File

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.dromara.biz.mapper.BizDutyMapper">
</mapper>

View File

@ -17,7 +17,7 @@
${ew.getSqlSelect} ${ew.getSqlSelect}
</if> </if>
<if test="ew.getSqlSelect == null"> <if test="ew.getSqlSelect == null">
u.user_id, u.dept_id, u.nick_name, u.user_name, u.email, u.avatar, u.phonenumber, u.sex, u.user_id, u.work_dept_id, u.dept_id, u.nick_name, u.user_name, u.email, u.avatar, u.phonenumber, u.sex,
u.status, u.del_flag, u.login_ip, u.login_date, u.create_by, u.create_time, u.remark u.status, u.del_flag, u.login_ip, u.login_date, u.create_by, u.create_time, u.remark
</if> </if>
from sys_user u from sys_user u
@ -30,7 +30,7 @@
${ew.getSqlSelect} ${ew.getSqlSelect}
</if> </if>
<if test="ew.getSqlSelect == null"> <if test="ew.getSqlSelect == null">
u.user_id, u.dept_id, u.nick_name, u.user_name, u.email, u.avatar, u.phonenumber, u.sex, u.user_id, u.work_dept_id, u.dept_id, u.nick_name, u.user_name, u.email, u.avatar, u.phonenumber, u.sex,
u.status, u.del_flag, u.login_ip, u.login_date, u.create_by, u.create_time, u.remark u.status, u.del_flag, u.login_ip, u.login_date, u.create_by, u.create_time, u.remark
</if> </if>
from sys_user u from sys_user u
@ -38,17 +38,18 @@
</select> </select>
<select id="selectUserExportList" resultMap="SysUserExportResult"> <select id="selectUserExportList" resultMap="SysUserExportResult">
select u.user_id, u.dept_id, u.nick_name, u.user_name, u.email, u.avatar, u.phonenumber, u.sex, select u.user_id, u.work_dept_id, u.dept_id, u.nick_name, u.user_name, u.email, u.avatar, u.phonenumber, u.sex,
u.status, u.del_flag, u.login_ip, u.login_date, u.create_by, u.create_time, u.remark, u.status, u.del_flag, u.login_ip, u.login_date, u.create_by, u.create_time, u.remark,
d.dept_name, d.leader, u1.user_name as leaderName d.dept_name, d.leader, wd.dept_name work_dept_name, u1.user_name as leaderName
from sys_user u from sys_user u
left join sys_dept d on u.dept_id = d.dept_id left join sys_dept d on u.dept_id = d.dept_id
left join sys_dept wd on u.work_dept_id = wd.dept_id
left join sys_user u1 on u1.user_id = d.leader left join sys_user u1 on u1.user_id = d.leader
${ew.getCustomSqlSegment} ${ew.getCustomSqlSegment}
</select> </select>
<select id="selectAllocatedList" resultMap="SysUserResult"> <select id="selectAllocatedList" resultMap="SysUserResult">
select distinct u.user_id, u.dept_id, u.user_name, u.nick_name, u.email, u.phonenumber, u.status, u.create_time select distinct u.work_dept_id, u.user_id, u.dept_id, u.user_name, u.nick_name, u.email, u.phonenumber, u.status, u.create_time
from sys_user u from sys_user u
left join sys_dept d on u.dept_id = d.dept_id left join sys_dept d on u.dept_id = d.dept_id
left join sys_user_role sur on u.user_id = sur.user_id left join sys_user_role sur on u.user_id = sur.user_id
@ -57,7 +58,7 @@
</select> </select>
<select id="selectUnallocatedList" resultMap="SysUserResult"> <select id="selectUnallocatedList" resultMap="SysUserResult">
select distinct u.user_id, u.dept_id, u.user_name, u.nick_name, u.email, u.phonenumber, u.status, u.create_time select distinct u.user_id, u.work_dept_id, u.dept_id, u.user_name, u.nick_name, u.email, u.phonenumber, u.status, u.create_time
from sys_user u from sys_user u
left join sys_dept d on u.dept_id = d.dept_id left join sys_dept d on u.dept_id = d.dept_id
left join sys_user_role sur on u.user_id = sur.user_id left join sys_user_role sur on u.user_id = sur.user_id