project-admin/src/main/java/com/project/admin/controller/system/SysCompanyController.java
@@ -20,6 +20,7 @@ import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import java.util.ArrayList; import java.util.Arrays; import java.util.List; @@ -55,7 +56,12 @@ @RepeatSubmit public AjaxResult export(SysCompanyQueryBo bo) { List<SysCompanyVo> list = iSysCompanyService.queryList(bo); List<SysCompanyVo> list; if (bo==null){ list = new ArrayList<>(); } else { list = iSysCompanyService.queryList(bo); } ExcelUtil<SysCompanyVo> util = new ExcelUtil<>(SysCompanyVo.class); return util.exportExcel(list, "企业信息"); } project-admin/src/main/java/com/project/admin/controller/system/SysUserController.java
@@ -12,10 +12,11 @@ import com.project.common.utils.SecurityUtils; import com.project.common.utils.StringUtils; import com.project.common.utils.poi.ExcelUtil; import com.project.system.service.ISysDeptService; import com.project.system.service.ISysPostService; import com.project.system.service.ISysRoleService; import com.project.system.service.ISysUserService; import com.project.system.domain.bo.editBo.UserDeptBo; import com.project.system.domain.vo.SysUserVo; import com.project.system.service.*; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; import org.apache.commons.lang3.ArrayUtils; import org.springframework.security.access.prepost.PreAuthorize; @@ -41,6 +42,7 @@ private final ISysRoleService roleService; private final ISysDeptService deptService; private final ISysPostService postService; private final ISysUserDeptService userDeptService; /** * 获取用户列表 @@ -64,6 +66,8 @@ util.exportExcel(response, list, "用户数据"); } @Log(title = "用户管理", businessType = BusinessType.IMPORT) @PreAuthorize("@ss.hasPermi('system:user:import')") @PostMapping("/importData") @@ -76,12 +80,7 @@ return success(message); } @PostMapping("/importTemplate") public void importTemplate(HttpServletResponse response) { ExcelUtil<SysUser> util = new ExcelUtil<>(SysUser.class); util.importTemplateExcel(response, "用户数据"); } /** * 根据用户编号获取详细信息 @@ -210,6 +209,37 @@ return toAjax(userService.resetPwd(user)); } @ApiOperation("用户多机构——回显") @GetMapping("/batchUserDeptView") public AjaxResult batchUserDeptView(@RequestParam("userId") Long userId) { return AjaxResult.success(userDeptService.batchUserDeptView(userId)); } @ApiOperation("用户多机构——保存") @Log(title = "用户多机构保存", businessType = BusinessType.UPDATE) @PostMapping("/batchUserDeptSave") public AjaxResult batchUserDeptSave(@RequestBody UserDeptBo bo) { return AjaxResult.success(userDeptService.batchUserDeptSave(bo)); } @ApiOperation("企业用户重置密码") @Log(title = "企业用户重置密码", businessType = BusinessType.UPDATE) @PostMapping("/resetCompanyUserPwd") public AjaxResult resetCompanyUserPwd(@RequestParam("companyId") Long companyId,@RequestParam("newPassword") String newPassword) { SysUser user = userService.list(userService.lq().eq(SysUser::getDeptId, companyId)).get(0); if (user==null) { return AjaxResult.error("没有该企业对应账户"); } if (userService.resetUserPwd(user.getUserName(), SecurityUtils.encryptPassword(newPassword), newPassword) > 0) { return success(); } return error("修改密码异常,请联系管理员"); } /** * 状态修改 */ @@ -261,4 +291,42 @@ { return success(deptService.selectDeptTreeList(dept)); } @ApiOperation("用户模板下载") @GetMapping("/exportTemplate") public AjaxResult exportTemplate() { ExcelUtil<SysUserVo> util = new ExcelUtil<>(SysUserVo.class); return util.exportExcel(null, "用户信息模板"); } @ApiOperation(value = "处理导入信息") @Log(title = "导入用户信息处理" , businessType = BusinessType.OTHER) @ApiImplicitParam(value = "用户信息", name = "file", dataType = "file", dataTypeClass = MultipartFile.class) @PostMapping("/doImport") public AjaxResult doImport(@RequestPart(value = "file") MultipartFile file, @RequestParam("deptId") Long deptId) throws Exception { ExcelUtil<SysUserVo> util = new ExcelUtil<>(SysUserVo.class); List<SysUserVo> list = util.importExcel(file.getInputStream()); return AjaxResult.success(userService.doImport(list, deptId)); } // @ApiOperation(value = "校验导入信息") // @Log(title = "导入用户信息校验" , businessType = BusinessType.OTHER) // @PostMapping("/checkImport") // public AjaxResult checkImport(@RequestBody SysCompanyResultVo resultVo) // { // return AjaxResult.success(userService.checkImport(resultVo)); // } // // @ApiOperation(value = "保存导入信息") // @Log(title = "导入用户信息保存" , businessType = BusinessType.IMPORT) // @PostMapping("/saveImport") // public AjaxResult saveImport(@RequestBody SysCompanyResultVo resultVo) // { // return toAjax(userService.saveImport(resultVo) ? 1 : 0); // } } project-enforce/src/main/java/com/project/enforce/service/impl/CheckServiceImpl.java
@@ -80,6 +80,7 @@ order.setCheckStatus(-1); //审批拒绝,给申请人发送短信,如果通知企业也给企业发送短信 smsService.sendCheckMsg(order.getApplyPhone(), order.getCheckStatus()); orderService.updateById(order); } else { List<String> phones = orderService.getCheckPhones(order.getCheckLevel()+1, order.getApplyDeptId()); if (StringUtils.isNotEmpty(phones)){ project-enforce/src/main/java/com/project/enforce/service/impl/EnforceOrderServiceImpl.java
@@ -126,12 +126,12 @@ { SysUser loginUser = SecurityUtils.getLoginUser().getUser(); bo.setCheckIds(loginUser.getPhonenumber()); List<Long> deptIds = deptService.getApplyDeptIdsByLoginUserId(loginUser.getUserId()); if (StringUtils.isNotEmpty(deptIds)){ bo.setApplyDeptIds(deptIds); } else { bo.setApplyDeptIds(null); } // List<Long> deptIds = deptService.getApplyDeptIdsByLoginUserId(loginUser.getUserId()); // if (StringUtils.isNotEmpty(deptIds)){ // bo.setApplyDeptIds(deptIds); // } else { // bo.setApplyDeptIds(null); // } return this.baseMapper.selectCheckList(bo); } project-report/src/main/java/com/project/report/service/IReportService.java
@@ -59,7 +59,7 @@ List<KeyVal> getComplaintStatusCount(ReportQueryBo bo); /** * 执法类型占比 * 投诉类型占比 * @param bo 年月 * @return 执法类型占比 */ project-report/src/main/java/com/project/report/service/impl/ReportServiceImpl.java
@@ -164,10 +164,10 @@ { return dictDataList.stream().map(e -> { KeyVal keyVal; if (resultMap.get(e.getDictValue()) == null) { if (resultMap.get(e.getDictCode().toString()) == null) { keyVal = new KeyVal(e.getDictLabel(), 0); } else { keyVal = new KeyVal(e.getDictLabel(), resultMap.get(e.getDictValue())); keyVal = new KeyVal(e.getDictLabel(), resultMap.get(e.getDictCode().toString())); } return keyVal; }).collect(Collectors.toList()); project-report/src/main/resources/mapper/report/ReportMapper.xml
@@ -14,7 +14,7 @@ from enforce_order where 1=1 <if test="deptId != null "> AND apply_dept_id = #{deptId} AND check_dept_id = #{deptId} </if> <if test="beginTime!=null and beginTime!=''"> AND apply_time >= #{beginTime} @@ -92,15 +92,15 @@ from enforce_complaint_log where 1=1 <if test="beginTime!=null and beginTime!=''"> AND apply_time >= #{beginTime} AND complaint_time >= #{beginTime} </if> <if test="endTime!=null and endTime!=''"> AND apply_time <= #{endTime} AND complaint_time <= #{endTime} </if> GROUP BY k </select> <!-- 执法类型分布--> <!-- 投诉类型分布--> <select id="getComplaintTypeCount" parameterType="com.project.report.domain.bo.query.ReportQueryBo" resultType="com.project.common.vo.KeyVal"> @@ -110,12 +110,12 @@ from enforce_complaint_log where 1=1 <if test="beginTime!=null and beginTime!=''"> AND apply_time >= #{beginTime} AND complaint_time >= #{beginTime} </if> <if test="endTime!=null and endTime!=''"> AND apply_time <= #{endTime} AND complaint_time <= #{endTime} </if> <if test="doComplaint!=null "> <if test="doComplaint != null "> <if test="doComplaint == 0 "> AND complaint_status = 0 </if> project-system/src/main/java/com/project/system/domain/bo/editBo/UserDeptBo.java
New file @@ -0,0 +1,19 @@ package com.project.system.domain.bo.editBo; import lombok.Data; import java.util.List; /** * 功能描述: * * @author ZQN * @version 1.0 */ @Data public class UserDeptBo { private Long userId; private List<Long> deptIds; } project-system/src/main/java/com/project/system/domain/vo/SysUserResultVo.java
New file @@ -0,0 +1,20 @@ package com.project.system.domain.vo; import io.swagger.annotations.ApiModel; import lombok.Data; import java.util.List; /** * 功能描述: * * @author ZQN * @version 1.0 */ @Data @ApiModel("用户信息视图对象") public class SysUserResultVo { private List<SysUserVo> voList; } project-system/src/main/java/com/project/system/domain/vo/SysUserVo.java
New file @@ -0,0 +1,56 @@ package com.project.system.domain.vo; import com.project.common.annotation.Excel; import com.project.common.core.domain.model.ImportError; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.util.List; /** * 功能描述: * * @author ZQN * @version 1.0 */ @Data public class SysUserVo { @Excel(name = "姓名") @ApiModelProperty("姓名") private String nickName; @Excel(name = "归属部门") @ApiModelProperty("归属部门") private String deptName; @Excel(name = "手机号") @ApiModelProperty("手机号") private String phonenumber; @Excel(name = "用户邮箱") @ApiModelProperty("用户邮箱") private String email; @Excel(name = "性别") @ApiModelProperty("性别") private String sex; @Excel(name = "备注") @ApiModelProperty("备注") private String remark; @ApiModelProperty("部门id") private Long deptId; @ApiModelProperty("用户id") private Long userId; @ApiModelProperty("错误信息数据") private List<ImportError> errorList; } project-system/src/main/java/com/project/system/domain/vo/UserDeptVo.java
New file @@ -0,0 +1,18 @@ package com.project.system.domain.vo; import lombok.Data; import java.util.List; /** * 功能描述: * * @author ZQN * @version 1.0 */ @Data public class UserDeptVo { private Long userId; private List<Long> deptIds; } project-system/src/main/java/com/project/system/service/ISysUserDeptService.java
@@ -2,13 +2,28 @@ import com.project.common.mybatis.IBaseService; import com.project.system.domain.SysUserDept; import com.project.system.domain.bo.editBo.UserDeptBo; import com.project.system.domain.vo.UserDeptVo; /** * 用户与部门关联Service接口 * * @author manton */ public interface ISysUserDeptService extends IBaseService<SysUserDept> { public interface ISysUserDeptService extends IBaseService<SysUserDept> { /** * 用户多结构回显 * @param userId 用户id * @return 内容 */ UserDeptVo batchUserDeptView(Long userId); /** * 用户多结构保存 * @param bo 参数 * @return 结果 */ Boolean batchUserDeptSave(UserDeptBo bo); } project-system/src/main/java/com/project/system/service/ISysUserService.java
@@ -2,6 +2,8 @@ import com.project.common.core.domain.entity.SysUser; import com.project.common.mybatis.IBaseService; import com.project.system.domain.vo.SysUserResultVo; import com.project.system.domain.vo.SysUserVo; import java.util.List; @@ -230,4 +232,26 @@ * @return 结果 */ public int resetPhone(Long userId, String phone); /** * 处理导入信息 * @param list 数据 * @param deptId 导入部门id * @return 结果 */ SysUserResultVo doImport(List<SysUserVo> list, Long deptId); /** * 校验导入信息 * @param resultVo 数据 * @return 结果 */ SysUserResultVo checkImport(SysUserResultVo resultVo); /** * 保存导入信息 * @param resultVo 数据 * @return 结果 */ Boolean saveImport(SysUserResultVo resultVo); } project-system/src/main/java/com/project/system/service/impl/SysUserDeptServiceImpl.java
@@ -1,12 +1,21 @@ package com.project.system.service.impl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.project.common.exception.base.BaseException; import com.project.common.utils.StringUtils; import com.project.system.domain.SysUserDept; import com.project.system.domain.bo.editBo.UserDeptBo; import com.project.system.domain.vo.UserDeptVo; import com.project.system.mapper.SysUserDeptMapper; import com.project.system.service.ISysUserDeptService; import lombok.RequiredArgsConstructor; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.ArrayList; import java.util.List; import java.util.stream.Collectors; /** * 用户与部门关联Service业务层处理 @@ -18,4 +27,40 @@ public class SysUserDeptServiceImpl extends ServiceImpl<SysUserDeptMapper, SysUserDept> implements ISysUserDeptService { /** * 用户多机构回显 * @param userId 用户id * @return 内容 */ @Override public UserDeptVo batchUserDeptView(Long userId) { List<SysUserDept> list = this.list(lq().eq(SysUserDept::getUserId, userId)); List<Long> deptIds = list.stream().map(SysUserDept::getDeptId).collect(Collectors.toList()); UserDeptVo vo = new UserDeptVo(); vo.setUserId(userId); vo.setDeptIds(deptIds); return vo; } /** * 用户多机构保存 * @param bo 参数 * @return 结果 */ @Override @Transactional public Boolean batchUserDeptSave(UserDeptBo bo) { Long userId = bo.getUserId(); if (userId==null || StringUtils.isEmpty(bo.getDeptIds())){ throw new BaseException("参数有误!"); } this.remove(lq().eq(SysUserDept::getUserId, userId)); List<SysUserDept> saveList = new ArrayList<>(); for (Long deptId : bo.getDeptIds()) { saveList.add(new SysUserDept().setUserId(userId).setDeptId(deptId)); } return this.saveBatch(saveList); } } project-system/src/main/java/com/project/system/service/impl/SysUserServiceImpl.java
@@ -4,18 +4,23 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.project.common.annotation.DataScope; import com.project.common.constant.UserConstants; import com.project.common.core.domain.entity.SysDept; import com.project.common.core.domain.entity.SysRole; import com.project.common.core.domain.entity.SysUser; import com.project.common.core.domain.model.ImportError; import com.project.common.exception.ServiceException; import com.project.common.exception.base.BaseException; import com.project.common.utils.SecurityUtils; import com.project.common.utils.StringUtils; import com.project.common.utils.bean.BeanValidators; import com.project.common.utils.spring.SpringUtils; import com.project.system.domain.SysPost; import com.project.system.domain.SysUserPost; import com.project.system.domain.SysUserRole; import com.project.system.domain.*; import com.project.system.domain.vo.SysUserResultVo; import com.project.system.domain.vo.SysUserVo; import com.project.system.mapper.*; import com.project.system.service.ISysConfigService; import com.project.system.service.ISysDeptService; import com.project.system.service.ISysUserDeptService; import com.project.system.service.ISysUserService; import lombok.RequiredArgsConstructor; import org.slf4j.Logger; @@ -47,6 +52,8 @@ private final SysUserRoleMapper userRoleMapper; private final SysUserPostMapper userPostMapper; private final ISysConfigService configService; private final ISysUserDeptService userDeptService; private final ISysDeptService deptService; protected final Validator validator; /** @@ -250,6 +257,10 @@ insertUserPost(user); // 新增用户与角色管理 insertUserRole(user); // 新增用户与部门管理 if (!"02".equals(user.getUserType())){ insertUserDept(user); } return rows; } @@ -285,6 +296,10 @@ // 新增用户与岗位管理 insertUserPost(user); // 新增用户与部门管理 if (!"02".equals(user.getUserType())){ insertUserDept(user); } return userMapper.updateUser(user); } @@ -372,6 +387,21 @@ public void insertUserRole(SysUser user) { this.insertUserRole(user.getUserId(), user.getRoleIds()); } /** * 新增用户部门 * * @param user 用户对象 */ public void insertUserDept(SysUser user) { userDeptService.remove(userDeptService.lq() .eq(SysUserDept::getUserId, user.getUserId()) .eq(SysUserDept::getDeptId, user.getDeptId()) ); SysUserDept userDept = new SysUserDept().setUserId(user.getUserId()).setDeptId(user.getDeptId()); userDeptService.save(userDept); } /** @@ -556,4 +586,68 @@ public int resetPhone(Long userId, String phone) { return userMapper.resetPhone(userId, phone); } @Override public SysUserResultVo doImport(List<SysUserVo> list, Long deptId) { if (list==null || list.size()<1){ throw new BaseException("未获取到导入信息!"); } SysUserResultVo resultVo = new SysUserResultVo(); list.forEach(sysUserVo -> { sysUserVo.setDeptId(deptId); }); resultVo.setVoList(list); return this.checkImport(resultVo); } @Override public SysUserResultVo checkImport(SysUserResultVo resultVo) { if (resultVo==null || StringUtils.isEmpty(resultVo.getVoList())){ throw new BaseException("未获取到导入信息!"); } for (SysUserVo vo : resultVo.getVoList()) { List<ImportError> errors = new ArrayList<>(); validEntityBeforeImport(vo, errors); vo.setErrorList(errors); } return resultVo; } private void validEntityBeforeImport(SysUserVo entity, List<ImportError> errorList) { if (StringUtils.isEmpty(entity.getNickName())){ errorList.add(new ImportError(0, "请填姓名!")); } if (StringUtils.isEmpty(entity.getDeptName())){ errorList.add(new ImportError(1, "请填写部门信息!")); } else { SysDept sysDept = deptService.selectDeptById(entity.getDeptId()); if (sysDept==null || !sysDept.getDeptName().equals(entity.getDeptName())){ errorList.add(new ImportError(1, "部门信息不匹配!")); } } if (StringUtils.isEmpty(entity.getPhonenumber())){ errorList.add(new ImportError(2, "请填写手机号!")); } else { SysUser user = this.selectUserByUserName(entity.getPhonenumber()); if (user!=null){ entity.setUserId(user.getUserId()); } else { SysUser check = new SysUser(); check.setPhonenumber(entity.getPhonenumber()); String s = checkPhoneUnique(check); if (UserConstants.NOT_UNIQUE.equals(s)) { errorList.add(new ImportError(2, "手机号已存在!")); } } } } @Override public Boolean saveImport(SysUserResultVo resultVo) { return null; } } project-system/src/main/resources/mapper/system/SysUserMapper.xml
@@ -249,11 +249,13 @@ select u.phonenumber from sys_user u join sys_user_role ur on u.user_id = ur.user_id join sys_role r on r.role_id=ur.role_id join sys_role r on r.role_id = ur.role_id join sys_user_dept ud on u.user_id = ud.dept_id where u.user_type != '02' and u.status='0' and r.role_key = #{roleKey} and u.dept_id = #{deptId} and ud.dept_id = #{deptId} </select> </mapper>