fix: 修复一些问题

This commit is contained in:
曹鹏飞 2025-03-10 20:03:46 +08:00
parent 41c958c214
commit dbf72adab6
12 changed files with 89 additions and 40 deletions

View File

@ -574,7 +574,6 @@ public class TicketController extends ControllerBase {
List<AdminUser> adminUsers = adminUserService.listByIds(Arrays.stream(handle.split(",")).map(Integer::parseInt).collect(Collectors.toList()));
handle = adminUsers.stream().map(AdminUser::getUserName).collect(Collectors.joining(","));
}
AppUser primaryUser = user.getIsPrimary()?user:appUserService.getPrimaryByCompanyId(user.getCompanyId());
TicketInfoVO vo = new TicketInfoVO()
.setId(ticket.getId())
.setNo(ticket.getNo())
@ -594,7 +593,7 @@ public class TicketController extends ControllerBase {
.setUrgency(ticket.getUrgency())
.setSolveTime(ticket.getSolveTime())
.setDeviceTypeSub(device.getDeviceTypeSub())
.setPrimaryUserName(primaryUser.getName())
.setPrimaryUserName(device.getAgentName())
.setImages(StrUtil.isNotBlank(ticket.getImages()) ? StrUtil.split(ticket.getImages(), ",") : Collections.emptyList())
.setAttachments(StrUtil.isNotBlank(ticket.getAttachments()) ? StrUtil.split(ticket.getAttachments(), ",") : Collections.emptyList())
.setCreateUserId(ticket.getUserId())

View File

@ -15,6 +15,9 @@ public class FileSearchRequest extends PageRequest {
//文件来源0工单
private Integer source;
//文件来源id
private Integer sourceId;
//文件类型
private String fileType;

View File

@ -1,8 +1,13 @@
package com.nflg.mobilebroken.common.pojo.vo;
import cn.hutool.core.util.StrUtil;
import com.fasterxml.jackson.annotation.JsonIgnore;
import lombok.Data;
import lombok.experimental.Accessors;
import java.util.Collections;
import java.util.List;
@Data
@Accessors(chain = true)
public class CompanySimpleVO {
@ -15,4 +20,18 @@ public class CompanySimpleVO {
// 公司名称
private String name;
// 区域名称
@JsonIgnore
private String areaName;
// 区域名称列表
private List<String> areaNames;
public List<String> getAreaNames() {
if (StrUtil.isBlank(areaName)){
return Collections.emptyList();
}
return StrUtil.split(areaName, ",");
}
}

View File

@ -41,6 +41,9 @@ public class DeviceInfoVO {
//客户名称
private String customerName;
//代理商名称
private String agentName;
@JsonIgnore
private Integer componentId;
}

View File

@ -4,12 +4,17 @@ import cn.hutool.core.collection.CollectionUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.nflg.mobilebroken.common.pojo.request.AuthorizeMenuRequest;
import com.nflg.mobilebroken.common.util.AdminUserUtil;
import com.nflg.mobilebroken.repository.entity.AdminRole;
import com.nflg.mobilebroken.repository.entity.AdminRoleMenuMap;
import com.nflg.mobilebroken.repository.mapper.AdminRoleMenuMapMapper;
import com.nflg.mobilebroken.repository.service.IAdminRoleMenuMapService;
import com.nflg.mobilebroken.repository.service.IAdminRoleService;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.time.LocalDateTime;
import java.util.List;
import java.util.stream.Collectors;
@ -24,6 +29,9 @@ import java.util.stream.Collectors;
@Service
public class AdminRoleMenuMapServiceImpl extends ServiceImpl<AdminRoleMenuMapMapper, AdminRoleMenuMap> implements IAdminRoleMenuMapService {
@Resource
private IAdminRoleService roleService;
@Transactional
@Override
public void authorize(AuthorizeMenuRequest request) {
@ -35,5 +43,10 @@ public class AdminRoleMenuMapServiceImpl extends ServiceImpl<AdminRoleMenuMapMap
.setMenuId(menuId)).collect(Collectors.toList());
saveBatch(datas);
}
roleService.lambdaUpdate()
.set(AdminRole::getUpdateBy, AdminUserUtil.getUserName())
.set(AdminRole::getUpdateTime, LocalDateTime.now())
.eq(AdminRole::getId, request.getRoleId())
.update();
}
}

View File

@ -125,6 +125,7 @@ public class AdminUserServiceImpl extends ServiceImpl<AdminUserMapper, AdminUser
.eq(Objects.nonNull(request.getDepartmentId()), AdminUser::getDepartmentId, request.getDepartmentId())
.like(StrUtil.isNotBlank(request.getLoginName()), AdminUser::getLoginName, request.getLoginName())
.like(StrUtil.isNotBlank(request.getUserName()), AdminUser::getUserName, request.getUserName())
.orderByAsc(AdminUser::getState)
.page(new Page<>(request.getPage(), request.getPageSize()));
PageData<AdminUserVO> pageData = new PageData<>();
pageData.setPage((int) page.getCurrent());

View File

@ -357,8 +357,8 @@ public class AppUserServiceImpl extends ServiceImpl<AppUserMapper, AppUser> impl
.setSalesUserName(appUser.getSalesUserName())
.setTitleId(appUser.getTitleId())
.setTitle(positionService.getById(appUser.getTitleId()).getPositionName())
.setState(appUser.getExpireTime().isAfter(LocalDate.now()) ?1:2);
AppUserApplyfor applyFor=appUserApplyforService.lambdaQuery()
.setState(appUser.getExpireTime().isAfter(LocalDate.now()) ? 1 : 2);
AppUserApplyfor applyFor = appUserApplyforService.lambdaQuery()
.eq(AppUserApplyfor::getUserId, appUser.getId())
.eq(AppUserApplyfor::getState, AppUserApplyForState.PENDINGAPPROVAL.getState().byteValue())
.ne(AppUserApplyfor::getType, AppUserApplyforType.ADD.getState().byteValue())
@ -371,7 +371,11 @@ public class AppUserServiceImpl extends ServiceImpl<AppUserMapper, AppUser> impl
primary.getChildren().add(d);
});
datas.removeAll(subs);
List<AppUserForAdminVO> page=primarys.stream().skip((long) (request.getPage() - 1) *request.getPageSize()).limit(request.getPageSize()).collect(Collectors.toList());
List<AppUserForAdminVO> page = primarys.stream()
.sorted(Comparator.comparingInt(AppUserForAdminVO::getUserState).thenComparing(Comparator.comparingInt(AppUserForAdminVO::getId).reversed()))
.skip((long) (request.getPage() - 1) * request.getPageSize())
.limit(request.getPageSize())
.collect(Collectors.toList());
return new PageData<AppUserForAdminVO>().setPage(request.getPage()).setPageSize(request.getPageSize()).setTotal(primarys.size()).setItems(page);
}

View File

@ -34,6 +34,7 @@ public class FileUploadRecordServiceImpl extends ServiceImpl<FileUploadRecordMap
}
Page<FileUploadRecord> datas = lambdaQuery()
.eq(Objects.nonNull(request.getSource()), FileUploadRecord::getSource, request.getSource())
.eq(Objects.nonNull(request.getSourceId()), FileUploadRecord::getSourceId, request.getSourceId())
.eq(Objects.nonNull(request.getFileType()), FileUploadRecord::getFileType, request.getFileType())
.and(Objects.nonNull(request.getKey()), (wq) -> wq
.like(FileUploadRecord::getFileName, request.getKey())

View File

@ -99,7 +99,8 @@ public class TBaseCustomerServiceImpl extends ServiceImpl<TBaseCustomerMapper, T
.map(d -> new CompanySimpleVO()
.setId(d.getId())
.setName(d.getAgencyCompanyName())
.setCode(d.getAgencyCompanyCode()))
.setCode(d.getAgencyCompanyCode())
.setAreaName(d.getAreaName()))
.collect(Collectors.toList());
}

View File

@ -1,5 +1,6 @@
package com.nflg.mobilebroken.repository.service.impl;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@ -16,21 +17,16 @@ import com.nflg.mobilebroken.common.util.AppUserUtil;
import com.nflg.mobilebroken.common.util.TicketUtl;
import com.nflg.mobilebroken.common.util.VUtils;
import com.nflg.mobilebroken.repository.entity.AdminUser;
import com.nflg.mobilebroken.repository.entity.FileUploadRecord;
import com.nflg.mobilebroken.repository.entity.Ticket;
import com.nflg.mobilebroken.repository.entity.TicketEvaluate;
import com.nflg.mobilebroken.repository.mapper.TicketMapper;
import com.nflg.mobilebroken.repository.service.IAdminUserService;
import com.nflg.mobilebroken.repository.service.IAppAreaService;
import com.nflg.mobilebroken.repository.service.ITicketEvaluateService;
import com.nflg.mobilebroken.repository.service.ITicketService;
import com.nflg.mobilebroken.repository.service.*;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.time.LocalDateTime;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.Objects;
import java.util.*;
import java.util.stream.Collectors;
/**
@ -53,6 +49,9 @@ public class TicketServiceImpl extends ServiceImpl<TicketMapper, Ticket> impleme
@Resource
private IAdminUserService adminUserService;
@Resource
private IFileUploadRecordService fileUploadRecordService;
@Override
public Ticket add(TicketAddRequest request, Integer userId) {
Ticket lastTicket=lambdaQuery()
@ -74,6 +73,26 @@ public class TicketServiceImpl extends ServiceImpl<TicketMapper, Ticket> impleme
.setUserId(userId)
.setCreateTime(LocalDateTime.now());
save(ticket);
Collection<String> files=CollectionUtil.addAll(request.getImages(),request.getAttachments());
if (CollectionUtil.isNotEmpty(files)){
List<FileUploadRecord> fileUploadRecords=new ArrayList<>();
for (String url : files) {
String fileName=url.substring(url.lastIndexOf("/")+1);
String pre=fileName.substring(0,fileName.lastIndexOf("."));
String end=fileName.substring(fileName.lastIndexOf("."));
FileUploadRecord fileUploadRecord = new FileUploadRecord()
.setFrom("app")
.setUrl(url)
.setFileName(pre)
.setFileType(end)
.setSource((byte) 0)
.setSourceId(ticket.getId())
.setCreateBy(AppUserUtil.getUserName())
.setCreateTime(LocalDateTime.now());
fileUploadRecords.add(fileUploadRecord);
}
fileUploadRecordService.saveBatch(fileUploadRecords);
}
return ticket;
}

View File

@ -6,7 +6,7 @@
SELECT d.device_no AS 'deviceNo',d.model_no AS 'modelNo',d.device_type AS 'deviceType'
,d.device_type_sub AS 'deviceTypeSub',d.warranty_state AS 'warrantyState',d.shipment_date AS 'shipmentDate'
,d.start_warranty_date AS 'startWarrantyDate',d.warranty_month AS 'warrantyMonth',d.customer_name AS 'customerName'
,dc.id AS 'componentId'
,dc.id AS 'componentId',d.agent_name
FROM device d
LEFT JOIN device_component dc ON d.model_no=dc.model_no AND dc.`enable`=1
WHERE d.device_no=#{deviceNo}

View File

@ -125,27 +125,17 @@
,t.handle_name AS 'handle'
FROM ticket t
LEFT JOIN app_user u ON t.user_id=u.id
LEFT JOIN t_base_customer c ON u.company_id=c.id
LEFT JOIN app_area a2 ON u.area_id=a2.id
LEFT JOIN device d ON t.device_no=d.device_no AND d.data_valid_state=1
LEFT JOIN device d ON t.device_no=d.device_no
LEFT JOIN t_base_device_type dt ON d.device_type=dt.device_type
LEFT JOIN dictionary_item di ON d.warranty_state=di.id
LEFT JOIN ticket_follow tf ON t.id=tf.ticket_id AND tf.user_id=#{userId} AND tf.from=1
LEFT JOIN admin_user auc ON t.cqm=auc.id
LEFT JOIN admin_user auh ON t.current_handle=auh.id
<include refid="adminSearchWhereCondition"/>
ORDER BY t.id DESC
ORDER BY t.state,t.id DESC
</select>
<!-- <select id="completeTicket">-->
<!-- UPDATE ticket-->
<!-- SET state=2,update_time=NOW()-->
<!-- WHERE state=1 AND FIND_IN_SET(#{userId},handle)>0 AND id IN-->
<!-- <foreach collection="ids" item="id" open="(" separator="," close=")">-->
<!-- #{id}-->
<!-- </foreach>-->
<!-- </select>-->
<select id="searchAllFromAdmin" resultType="com.nflg.mobilebroken.common.pojo.vo.AdminTicketVO">
SELECT t.id,t.`no`,t.title,t.state,t.urgency,t.component,t.question,t.solution
,IF(u.is_primary,fun_getPrimaryUserArea(u.company_id),'') AS 'areaName',IF(u.is_primary,'',a2.`name`) AS 'agentAreaName'
@ -156,16 +146,15 @@
,t.handle_name AS 'handle'
FROM ticket t
LEFT JOIN app_user u ON t.user_id=u.id
LEFT JOIN t_base_customer c ON u.company_id=c.id
LEFT JOIN app_area a2 ON u.area_id=a2.id
LEFT JOIN device d ON t.device_no=d.device_no AND d.data_valid_state=1
LEFT JOIN device d ON t.device_no=d.device_no
LEFT JOIN t_base_device_type dt ON d.device_type=dt.device_type
LEFT JOIN dictionary_item di ON d.warranty_state=di.id
LEFT JOIN ticket_follow tf ON t.id=tf.ticket_id AND tf.user_id=#{userId} AND tf.from=1
LEFT JOIN admin_user auc ON t.cqm=auc.id
LEFT JOIN admin_user auh ON t.current_handle=auh.id
<include refid="adminSearchWhereCondition"/>
ORDER BY t.id DESC
ORDER BY t.state,t.id DESC
</select>
<select id="searchFromAdminAndFollow" resultType="com.nflg.mobilebroken.common.pojo.vo.AdminTicketVO">
@ -178,16 +167,15 @@
,t.handle_name AS 'handle'
FROM ticket t
LEFT JOIN app_user u ON t.user_id=u.id
LEFT JOIN t_base_customer c ON u.company_id=c.id
LEFT JOIN app_area a2 ON u.area_id=a2.id
INNER JOIN ticket_follow tf ON t.id=tf.ticket_id AND tf.user_id=#{userId} AND tf.from=1
LEFT JOIN device d ON t.device_no=d.device_no AND d.data_valid_state=1
LEFT JOIN device d ON t.device_no=d.device_no
LEFT JOIN t_base_device_type dt ON d.device_type=dt.device_type
LEFT JOIN dictionary_item di ON d.warranty_state=di.id
LEFT JOIN admin_user auc ON t.cqm=auc.id
LEFT JOIN admin_user auh ON t.current_handle=auh.id
<include refid="adminSearchWhereCondition"/>
ORDER BY t.id DESC
ORDER BY t.state,t.id DESC
</select>
<select id="searchAllFromAdminAndFollow" resultType="com.nflg.mobilebroken.common.pojo.vo.AdminTicketVO">
@ -199,16 +187,15 @@
,dt.cqm_person_name AS 'cqms',t.handle_name AS 'handle'
FROM ticket t
LEFT JOIN app_user u ON t.user_id=u.id
LEFT JOIN t_base_customer c ON u.company_id=c.id
LEFT JOIN app_area a2 ON u.area_id=a2.id
INNER JOIN ticket_follow tf ON t.id=tf.ticket_id AND tf.user_id=#{userId} AND tf.from=1
LEFT JOIN device d ON t.device_no=d.device_no AND d.data_valid_state=1
LEFT JOIN device d ON t.device_no=d.device_no
LEFT JOIN t_base_device_type dt ON d.device_type=dt.device_type
LEFT JOIN dictionary_item di ON d.warranty_state=di.id
LEFT JOIN admin_user auc ON t.cqm=auc.id
LEFT JOIN admin_user auh ON t.current_handle=auh.id
<include refid="adminSearchWhereCondition"/>
ORDER BY t.id DESC
ORDER BY t.state,t.id DESC
</select>
<select id="getAdminFavorites" resultType="com.nflg.mobilebroken.common.pojo.vo.TicketVO">
@ -218,7 +205,7 @@
WHERE tf.`from` = 1
AND tf.user_id = #{userId}
AND tf.favorites_id = #{favoritesId}
ORDER BY t.id DESC
ORDER BY t.state,t.id DESC
</select>
<select id="searchByFavouritesId" resultType="com.nflg.mobilebroken.common.pojo.vo.AdminTicketVO">
@ -231,14 +218,13 @@
,t.handle_name AS 'handle'
FROM ticket t
LEFT JOIN app_user u ON t.user_id=u.id
LEFT JOIN t_base_customer c ON u.company_id=c.id
LEFT JOIN app_area a2 ON u.area_id=a2.id
INNER JOIN ticket_follow tf ON t.id=tf.ticket_id AND tf.user_id=#{userId} AND tf.from=1 AND tf.favorites_id=#{favouritesId}
LEFT JOIN device d ON t.device_no=d.device_no AND d.data_valid_state=1
LEFT JOIN device d ON t.device_no=d.device_no
LEFT JOIN t_base_device_type dt ON d.device_type=dt.device_type
LEFT JOIN dictionary_item di ON d.warranty_state=di.id
LEFT JOIN admin_user auc ON t.cqm=auc.id
LEFT JOIN admin_user auh ON t.current_handle=auh.id
ORDER BY t.id DESC
ORDER BY t.state,t.id DESC
</select>
</mapper>