Compare commits

...

3 Commits

Author SHA1 Message Date
xiaofajia
324b241e12 修改 2024-12-18 17:38:22 +08:00
xiaofajia
ec37eaf03b 修改 2024-12-18 16:17:53 +08:00
xiaofajia
18e1ed5e68 修改 2024-12-18 12:07:47 +08:00
7 changed files with 180 additions and 8 deletions

View File

@ -1,5 +1,6 @@
package cn.iocoder.yudao.module.staff.controller.admin;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog;
@ -15,6 +16,8 @@ import cn.iocoder.yudao.module.staff.vo.CompanyStaffReqVO;
import cn.iocoder.yudao.module.staff.vo.CompanyStaffRespVO;
import cn.iocoder.yudao.module.staff.vo.StaffLoginBody;
import cn.iocoder.yudao.module.system.api.permission.dto.RoleReqDTO;
import cn.iocoder.yudao.module.system.api.user.AdminUserApi;
import cn.iocoder.yudao.module.system.api.user.dto.AdminUserRespDTO;
import cn.iocoder.yudao.module.system.controller.admin.auth.vo.AuthLoginReqVO;
import cn.iocoder.yudao.module.system.dal.dataobject.user.AdminUserDO;
import cn.iocoder.yudao.module.system.service.auth.AdminAuthService;
@ -40,6 +43,7 @@ import java.util.List;
import java.util.Map;
import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.EXPORT;
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception0;
import static cn.iocoder.yudao.framework.common.pojo.CommonResult.error;
import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
@ -63,6 +67,8 @@ public class CompanyStaffController {
private AdminAuthService loginService;
@Autowired
private ApiAppLoginService apiAppLoginService;
@Resource
private AdminUserApi adminUserApi;
/**
* 分页查询
@ -326,4 +332,25 @@ public class CompanyStaffController {
return error(2_002_000_005,e.getMessage());
}
}
/**
* 根据用户ID获取信息
*
* @author 小李
* @date 15:12 2024/12/18
* @param id 用户ID
**/
@GetMapping("/getByUserId")
public CommonResult<?> getByUserId(@RequestParam("id")Long id){
Map<String, Object> map = new HashMap<>();
List<CompanyStaff> list = staffService.list(new LambdaQueryWrapper<CompanyStaff>().eq(CompanyStaff::getUserId, id));
if (CollUtil.isNotEmpty(list)){
map.put("staff", list.get(0));
}
AdminUserRespDTO user = adminUserApi.getUser(id);
if (ObjectUtil.isNotEmpty(user)){
map.put("user", user);
}
return success(map);
}
}

View File

@ -30,6 +30,9 @@ public enum InspectionRoleCommon {
/** 检测业务管理员 */
JIANCE("jiance", 1),
/** 站长 */
JCZZ("jczz", 1),
/** 检测站老板 */
JCBOSS("jcboss", 1),
@ -66,6 +69,30 @@ public enum InspectionRoleCommon {
/** 检测用户 */
JCYH("jcyh", 4),
/** 安检外检 */
JCAJWJ("jcajwj", 4),
/** 收费登录 */
JCSFDL("jcsfdl", 4),
/** 环检外检 */
JCHJWJ("jchjwj", 4),
/** 底盘检测 */
JCDPJC("jcdpjc", 4),
/** 环检操作 */
JCHJCZ("jchjcz", 4),
/** 检测总检 */
JCZJ("jczj", 4),
/** 检测资料管理员 */
JCZLGLY("jczlgly", 4),
/** 安全检验员 */
AQJYY("aqjyy", 4),
/** 检测员工 */
JCWORKER("jcworker", 4);

View File

@ -359,4 +359,15 @@ public class InspectionInfoController extends BaseController {
String name = inspectionInfoService.easyPoiExport("template/word/四川省超标排放汽车维护修理告知书.docx", str, map, request, response);
return CommonResult.success(name);
}
/**
* 获得不同状态的数据的数量
*
* @author 小李
* @date 16:22 2024/12/18
**/
@GetMapping("/getCountByType")
public CommonResult<?> getCountByType(@RequestParam("partnerId")Integer partnerId){
return success(inspectionInfoService.getCountByType(partnerId));
}
}

View File

@ -1,11 +1,18 @@
package cn.iocoder.yudao.module.inspection.controller;
import java.util.List;
import java.util.stream.Collectors;
import cn.iocoder.yudao.framework.common.pojo.CommonResult;
import cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils;
import cn.iocoder.yudao.module.inspection.entity.InspectionNews;
import cn.iocoder.yudao.module.inspection.service.IInspectionNewsService;
import cn.iocoder.yudao.module.shop.entity.ShopMallPartners;
import cn.iocoder.yudao.module.system.api.dict.DictDataApi;
import cn.iocoder.yudao.module.system.api.dict.dto.DictDataRespDTO;
import cn.iocoder.yudao.module.system.api.permission.PermissionApi;
import cn.iocoder.yudao.module.system.api.permission.RoleApi;
import cn.iocoder.yudao.module.system.api.permission.dto.RoleReqDTO;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.springframework.security.access.prepost.PreAuthorize;
@ -13,6 +20,8 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import cn.iocoder.yudao.module.core.controller.BaseController;
import javax.annotation.Resource;
/**
* 请填写功能名称Controller
*
@ -26,6 +35,15 @@ public class InspectionNewsController extends BaseController
@Autowired
private IInspectionNewsService inspectionNewsService;
@Resource
private DictDataApi dataApi;
@Resource
private PermissionApi permissionApi;
@Resource
private RoleApi roleApi;
/**
* 查询请填写功能名称列表
*/
@ -63,4 +81,22 @@ public class InspectionNewsController extends BaseController
{
return toAjax(inspectionNewsService.deleteInspectionNewsByIds(ids));
}
/**
* 验证当前登录用户是否可以发布通知
*
* @author 小李
* @date 16:00 2024/12/18
**/
@GetMapping("/ifSend")
public CommonResult<?> ifSend(){
List<DictDataRespDTO> dataList = dataApi.getDictDataList("ins_send_news");
List<String> values = dataList.stream().map(DictDataRespDTO::getValue).collect(Collectors.toList());
List<Long> roleIds = permissionApi.getRoleIdsByUserId(SecurityFrameworkUtils.getLoginUserId());
List<RoleReqDTO> roles = roleApi.getRoleList();
List<RoleReqDTO> role = roles.stream().filter(item -> roleIds.contains(item.getId())).collect(Collectors.toList());
List<String> codes = role.stream().map(RoleReqDTO::getCode).collect(Collectors.toList());
List<String> collect = codes.stream().filter(values::contains).collect(Collectors.toList());
return success(!collect.isEmpty());
}
}

View File

@ -139,4 +139,12 @@ public interface IInspectionInfoService extends IService<InspectionInfo>
List<RoleDO> getRoleList();
String easyPoiExport(String templatePath, String filename, Map<String, Object> data, HttpServletRequest request, HttpServletResponse response);
/**
* 获得不同状态的数据的数量
*
* @author 小李
* @date 16:22 2024/12/18
**/
Map<String, Long> getCountByType(Integer partnerId);
}

View File

@ -9,9 +9,11 @@ import java.time.LocalDateTime;
import java.time.ZoneId;
import java.time.format.DateTimeFormatter;
import java.util.*;
import java.util.concurrent.*;
import java.util.stream.Collectors;
import cn.afterturn.easypoi.word.WordExportUtil;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.date.DateUtil;
@ -623,26 +625,26 @@ public class InspectionInfoServiceImpl extends ServiceImpl<InspectionInfoMapper,
/**
* 判断是否可以修改引车员
*
* @param id 工单ID
* @author 小李
* @date 15:22 2024/12/11
* @param id 工单ID
**/
@Override
public Boolean judgeUpdateLeadMan(Long id){
public Boolean judgeUpdateLeadMan(Long id) {
boolean result = true;
InspectionInfo inspectionInfo = baseMapper.selectById(id);
if (!inspectionInfo.getStatus().equals("2")){
if (!inspectionInfo.getStatus().equals("2")) {
result = false;
}
if (!result){
if (!result) {
List<InspectionWorkNode> list = workNodeService.list(new LambdaQueryWrapper<InspectionWorkNode>().eq(InspectionWorkNode::getInspectionInfoId, id));
Set<String> status = list.stream().map(InspectionWorkNode::getStatus).collect(Collectors.toSet());
if (status.contains("3")){
if (status.contains("3")) {
result = true;
}
}
if (result){
result = inspectionInfo.getCreator().equals(SecurityFrameworkUtils.getLoginUserId()+"");
if (result) {
result = inspectionInfo.getCreator().equals(SecurityFrameworkUtils.getLoginUserId() + "");
}
return result;
}
@ -663,6 +665,7 @@ public class InspectionInfoServiceImpl extends ServiceImpl<InspectionInfoMapper,
/**
* EasyPoi 替换数据 导出 word
*
* @param templatePath word模板地址
* @param filename 文件名称
* @param data 替换参数
@ -691,10 +694,71 @@ public class InspectionInfoServiceImpl extends ServiceImpl<InspectionInfoMapper,
}
return filename;
}
public static MultipartFile convertXWPFDocumentToMultipartFile(XWPFDocument document, String filename) throws IOException {
ByteArrayOutputStream bos = new ByteArrayOutputStream();
document.write(bos);
byte[] bytes = bos.toByteArray();
return new MockMultipartFile(filename, filename, "application/vnd.openxmlformats-officedocument.wordprocessingml.document", bytes);
}
/**
* 获得不同状态的数据的数量
*
* @author 小李
* @date 16:22 2024/12/18
**/
@Override
public Map<String, Long> getCountByType(Integer partnerId) {
// 创建线程池
ExecutorService executor = Executors.newFixedThreadPool(6);
try {
InspectionInfo inspectionInfo = new InspectionInfo();
inspectionInfo.setPartnerId(partnerId.longValue());
// 获取当前登录人
LoginUser loginUser = SecurityFrameworkUtils.getLoginUser();
// 获取当前登陆人的角色
List<UserRoleDO> byUserId = roleService.getByUserId(loginUser.getId());
inspectionInfo.setLeadManId(loginUser.getId());
List<Long> roleIds = byUserId.stream().map(UserRoleDO::getRoleId).collect(Collectors.toList());
if (!"1".equals(inspectionInfo.getStatus())) {
// 进行中 已完成
inspectionInfo.setDealUserId(loginUser.getId());
}
Map<String, Long> result = new ConcurrentHashMap<>(); // 使用ConcurrentHashMap以确保线程安全
// 定义一个数组来保存所有的CompletableFuture
CompletableFuture<Void>[] futures = new CompletableFuture[6];
for (int i = 0; i < 6; i++) {
final String status = String.valueOf(i);
// 复制一份inspectionInfo对象避免多线程修改同一个对象导致的问题
InspectionInfo infoCopy = BeanUtil.toBean(inspectionInfo, InspectionInfo.class);
infoCopy.setStatus(status);
// 为每个任务创建一个新的Page对象
Page<InspectionInfo> page = new Page<>(1, 10);
futures[i] = CompletableFuture.runAsync(() -> {
IPage<InspectionInfo> iPage = baseMapper.selectByUser(page, roleIds, infoCopy);
result.put(status, iPage.getTotal());
}, executor);
}
// 等待所有任务完成
CompletableFuture.allOf(futures).join();
return result;
} catch (Exception e) {
throw new RuntimeException("Failed to execute tasks in parallel", e);
} finally {
// 关闭线程池
executor.shutdown();
}
}
}

View File

@ -409,5 +409,4 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<!-- </if>-->
<!-- </where>-->
</select>
</mapper>