feat: 一些调整

This commit is contained in:
曹鹏飞 2025-02-19 15:37:49 +08:00
parent 08652de12a
commit 5ff942e29a
14 changed files with 166 additions and 91 deletions

View File

@ -98,6 +98,11 @@
<groupId>org.apache.commons</groupId> <groupId>org.apache.commons</groupId>
<artifactId>commons-pool2</artifactId> <artifactId>commons-pool2</artifactId>
</dependency> </dependency>
<dependency>
<groupId>com.github.promeg</groupId>
<artifactId>tinypinyin</artifactId>
<version>2.0.3</version>
</dependency>
</dependencies> </dependencies>
<build> <build>

View File

@ -1,5 +1,7 @@
package com.nflg.mobilebroken.admin.controller; package com.nflg.mobilebroken.admin.controller;
import cn.hutool.core.util.StrUtil;
import com.github.promeg.pinyinhelper.Pinyin;
import com.nflg.mobilebroken.admin.annotation.ApiMark; import com.nflg.mobilebroken.admin.annotation.ApiMark;
import com.nflg.mobilebroken.common.pojo.ApiResult; import com.nflg.mobilebroken.common.pojo.ApiResult;
import com.nflg.mobilebroken.common.pojo.PageData; import com.nflg.mobilebroken.common.pojo.PageData;
@ -48,6 +50,9 @@ public class RoleController extends ControllerBase {
@MethodInfoMark(value = "新增角色", menuName = "角色管理") @MethodInfoMark(value = "新增角色", menuName = "角色管理")
@ApiMark(moduleName = "角色管理", apiName = "新增角色") @ApiMark(moduleName = "角色管理", apiName = "新增角色")
public ApiResult<Void> addRole(@Valid @RequestBody RoleAddRequest request) { public ApiResult<Void> addRole(@Valid @RequestBody RoleAddRequest request) {
if (StrUtil.isBlank(request.getCode())){
request.setCode(toPinYin(request.getName()));
}
adminRoleService.add(request); adminRoleService.add(request);
return ApiResult.success(); return ApiResult.success();
} }
@ -60,10 +65,25 @@ public class RoleController extends ControllerBase {
@MethodInfoMark(value = "更新角色", menuName = "角色管理") @MethodInfoMark(value = "更新角色", menuName = "角色管理")
@ApiMark(moduleName = "角色管理", apiName = "更新角色") @ApiMark(moduleName = "角色管理", apiName = "更新角色")
public ApiResult<Void> updateRole(@Valid @RequestBody RoleUpdateRequest request) { public ApiResult<Void> updateRole(@Valid @RequestBody RoleUpdateRequest request) {
if (StrUtil.isBlank(request.getCode())){
request.setCode(toPinYin(request.getName()));
}
adminRoleService.update(request); adminRoleService.update(request);
return ApiResult.success(); return ApiResult.success();
} }
private String toPinYin(String str){
StringBuilder pinyin = new StringBuilder();
for (char c : str.toCharArray()) {
if (Pinyin.isChinese(c)) {
pinyin.append(Pinyin.toPinyin(c));
} else {
pinyin.append(c);
}
}
return pinyin.toString();
}
/** /**
* 搜索角色 * 搜索角色
* @param request 请求参数 * @param request 请求参数

View File

@ -125,23 +125,7 @@ public class TicketController extends ControllerBase {
@PostMapping("searchTicket") @PostMapping("searchTicket")
@ApiMark(moduleName = "工单管理", apiName = "搜索工单") @ApiMark(moduleName = "工单管理", apiName = "搜索工单")
public ApiResult<PageData<AdminTicketVO>> searchTicket(@Valid @RequestBody AdminTicketSearchRequest request) { public ApiResult<PageData<AdminTicketVO>> searchTicket(@Valid @RequestBody AdminTicketSearchRequest request) {
return ApiResult.success(PageUtil.convert(ticketService.searchPage(request), d -> { return ApiResult.success(PageUtil.convert(ticketService.searchPage(request), d -> d));
if (StrUtil.isNotBlank(d.getHandle())) {
List<AdminUser> adminUsers = adminUserService.listByIds(StrUtil.split(d.getHandle(), ",").stream().map(Integer::parseInt).collect(Collectors.toList()));
d.setHandleBy(adminUsers.stream().map(AdminUser::getUserName).collect(Collectors.toList()));
}
AppUser primaryUser = appUserService.getPrimaryByCompanyId(d.getCompanyId());
if (Objects.nonNull(primaryUser)) {
d.setPrimaryUserName(primaryUser.getName());
}
if (StrUtil.isNotBlank(d.getCqm())) {
AdminUser adminUser = adminUserService.getById(Integer.valueOf(d.getCqm()));
if (Objects.nonNull(adminUser)) {
d.setCqm(adminUser.getUserName());
}
}
return d;
}));
} }
/** /**
@ -150,7 +134,8 @@ public class TicketController extends ControllerBase {
*/ */
@PostMapping("exportSearchTicket") @PostMapping("exportSearchTicket")
@ApiMark(moduleName = "工单管理", apiName = "导出搜索工单") @ApiMark(moduleName = "工单管理", apiName = "导出搜索工单")
public void exportSearchTicket(HttpServletResponse response, @RequestBody AdminTicketSearchRequest request) throws IOException { public void exportSearchTicket(HttpServletResponse response,@Valid @RequestBody AdminTicketSearchRequest request) throws IOException {
request.setPageSize(Integer.MAX_VALUE);
List<AdminTicketVO> datas = ticketService.exportSearch(request); List<AdminTicketVO> datas = ticketService.exportSearch(request);
EecExcelUtil.export("工单", "sheet1", datas, response); EecExcelUtil.export("工单", "sheet1", datas, response);
} }
@ -309,7 +294,7 @@ public class TicketController extends ControllerBase {
response.setContentType(MediaType.APPLICATION_PDF_VALUE); response.setContentType(MediaType.APPLICATION_PDF_VALUE);
String encode = URLEncoder.encode(ticket.getTitle() + ".pdf", StandardCharsets.UTF_8); String encode = URLEncoder.encode(ticket.getTitle() + ".pdf", StandardCharsets.UTF_8);
response.setHeader(HttpHeaders.CONTENT_DISPOSITION, "attachment;filename=" +encode ); response.setHeader(HttpHeaders.CONTENT_DISPOSITION, "inline;filename=" +encode );
// 生成PDF // 生成PDF
try { try {
ConverterProperties converterProperties = new ConverterProperties(); ConverterProperties converterProperties = new ConverterProperties();
@ -455,6 +440,8 @@ public class TicketController extends ControllerBase {
VUtils.trueThrowBusinessError(Objects.isNull(ticket)).throwMessage("工单不存在"); VUtils.trueThrowBusinessError(Objects.isNull(ticket)).throwMessage("工单不存在");
VUtils.trueThrowBusinessError(Byte.compare(ticket.getState(), TicketState.Processing.getState()) > 1) VUtils.trueThrowBusinessError(Byte.compare(ticket.getState(), TicketState.Processing.getState()) > 1)
.throwMessage("当前工单状态不允许发送消息"); .throwMessage("当前工单状态不允许发送消息");
ticket.setCurrentHandle(AdminUserUtil.getUserId());
ticketService.updateById(ticket);
AdminUser user = adminUserService.getById(AdminUserUtil.getUserId()); AdminUser user = adminUserService.getById(AdminUserUtil.getUserId());
ChatMessageDTO message = new ChatMessageDTO() ChatMessageDTO message = new ChatMessageDTO()
.setId(cn.hutool.core.util.IdUtil.getSnowflakeNextId()) .setId(cn.hutool.core.util.IdUtil.getSnowflakeNextId())

View File

@ -21,4 +21,7 @@ public class AdminTicketSearchRequest extends TicketSearchRequest {
//客户名称 //客户名称
private String createUserName; private String createUserName;
//质保状态
private Integer warrantyStatus;
} }

View File

@ -2,6 +2,9 @@ package com.nflg.mobilebroken.common.pojo.request;
import lombok.Data; import lombok.Data;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
@Data @Data
public class RoleAddRequest { public class RoleAddRequest {
@ -9,8 +12,10 @@ public class RoleAddRequest {
private String code; private String code;
// 角色名称 // 角色名称
@NotBlank
private String name; private String name;
// 是否启用 // 是否启用
@NotNull
private Boolean enable; private Boolean enable;
} }

View File

@ -8,7 +8,6 @@ import org.ttzero.excel.annotation.ExcelColumn;
import org.ttzero.excel.annotation.IgnoreExport; import org.ttzero.excel.annotation.IgnoreExport;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.List;
import java.util.Objects; import java.util.Objects;
@Data @Data
@ -106,24 +105,23 @@ public class AdminTicketVO {
//所属CQM //所属CQM
@ExcelColumn("所属CQM") @ExcelColumn("所属CQM")
private String cqms;
//工单负责人
@ExcelColumn("工单负责人")
private String cqm; private String cqm;
//处理人 //被分配人
@JsonIgnore @ExcelColumn("被分配人")
@IgnoreExport
private String handle; private String handle;
//处理人
@ExcelColumn("处理人")
private List<String> handleBy;
//当前处理人 //当前处理人
@ExcelColumn("当前处理人") @ExcelColumn("当前处理人")
private List<String> currentProcessor; private String currentHandle;
//处理完成时间 //处理完成时间
@ExcelColumn("处理完成时间") @ExcelColumn("处理完成时间")
private LocalDateTime solveTime; private LocalDateTime completeTime;
//关闭时间 //关闭时间
@ExcelColumn("关闭时间") @ExcelColumn("关闭时间")

View File

@ -122,6 +122,16 @@ public class Ticket implements Serializable {
*/ */
private String handle; private String handle;
/**
* 处理人姓名
*/
private String handleName;
/**
* 当前处理人
*/
private Integer currentHandle;
/** /**
* 最后更新时间 * 最后更新时间
*/ */

View File

@ -30,7 +30,7 @@ public interface TicketMapper extends BaseMapper<Ticket> {
// void completeTicket(List<Integer> ids, Integer userId); // void completeTicket(List<Integer> ids, Integer userId);
List<AdminTicketVO> searchAllFromAdmin(AdminTicketSearchRequest request); List<AdminTicketVO> searchAllFromAdmin(AdminTicketSearchRequest request, Integer userId);
IPage<AdminTicketVO> searchFromAdminAndFollow(AdminTicketSearchRequest request, Integer userId, IPage<?> page); IPage<AdminTicketVO> searchFromAdminAndFollow(AdminTicketSearchRequest request, Integer userId, IPage<?> page);

View File

@ -28,8 +28,6 @@ public interface ITicketService extends IService<Ticket> {
Ticket assignmentTicket(AssignmentTicketRequest request); Ticket assignmentTicket(AssignmentTicketRequest request);
void completeTicket(List<Integer> ids);
Ticket completeTicket(Integer id); Ticket completeTicket(Integer id);
Ticket closeTicket(TicketCloseRequest request); Ticket closeTicket(TicketCloseRequest request);

View File

@ -126,8 +126,9 @@ public class AdminUserServiceImpl extends ServiceImpl<AdminUserMapper, AdminUser
pageData.setPage((int) page.getCurrent()); pageData.setPage((int) page.getCurrent());
pageData.setPageSize((int) page.getSize()); pageData.setPageSize((int) page.getSize());
pageData.setTotal((int) page.getTotal()); pageData.setTotal((int) page.getTotal());
pageData.setItems(page.getRecords().stream().map(u -> pageData.setItems(page.getRecords().stream().map(u ->{
new AdminUserVO() AdminUser userCreate=getById(u.getCreateBy());
return new AdminUserVO()
.setId(u.getId()) .setId(u.getId())
.setUserCode(u.getUserCode()) .setUserCode(u.getUserCode())
.setLoginName(u.getLoginName()) .setLoginName(u.getLoginName())
@ -136,12 +137,17 @@ public class AdminUserServiceImpl extends ServiceImpl<AdminUserMapper, AdminUser
.setPhone(u.getPhone()) .setPhone(u.getPhone())
.setEmail(u.getEmail()) .setEmail(u.getEmail())
.setOpenId(u.getOpenid()) .setOpenId(u.getOpenid())
.setCreateBy(userCreate.getUserName())
.setCreateTime(u.getCreateTime())
.setUpdateBy(Objects.isNull(u.getUpdateBy())?"":getById(u.getUpdateBy()).getUserName())
.setUpdateTime(u.getUpdateTime())
.setAvatar(u.getAvatar()) .setAvatar(u.getAvatar())
.setDepartmentId(u.getDepartmentId()) .setDepartmentId(u.getDepartmentId())
.setTitleId(u.getTitleId()) .setTitleId(u.getTitleId())
.setTitleName(getTitleName(u.getTitleId())) .setTitleName(getTitleName(u.getTitleId()))
.setDepartmentName(getDepartmentName(u.getDepartmentId())) .setDepartmentName(getDepartmentName(u.getDepartmentId()))
.setRoles(getRoles(u.getId()))).collect(Collectors.toList())); .setRoles(getRoles(u.getId()));
}).collect(Collectors.toList()));
return pageData; return pageData;
} }

View File

@ -122,7 +122,7 @@ public class AppUserApplyforServiceImpl extends ServiceImpl<AppUserApplyforMappe
.setReason(applyfor.getReason()) .setReason(applyfor.getReason())
.setCreateTime(applyfor.getCreateTime()); .setCreateTime(applyfor.getCreateTime());
AppUser appUser; AppUser appUser;
if (Objects.nonNull(applyfor.getId())) { if (Objects.nonNull(applyfor.getUserId())) {
appUser = appUserService.getById(applyfor.getUserId()); appUser = appUserService.getById(applyfor.getUserId());
applyfor.setAreaId(appUser.getAreaId()); applyfor.setAreaId(appUser.getAreaId());
applyfor.setTitleId(appUser.getTitleId()); applyfor.setTitleId(appUser.getTitleId());

View File

@ -47,6 +47,7 @@ public class TBaseDepartmentServiceImpl extends ServiceImpl<TBaseDepartmentMappe
public List<DepartmentSimpleVO> getSimpleDepartments() { public List<DepartmentSimpleVO> getSimpleDepartments() {
List<TBaseDepartment> datas = lambdaQuery() List<TBaseDepartment> datas = lambdaQuery()
.eq(TBaseDepartment::getDataValidStatus, 1) .eq(TBaseDepartment::getDataValidStatus, 1)
.eq(TBaseDepartment::getDeptStatus, 1)
.eq(TBaseDepartment::getDeptParentId, 0) .eq(TBaseDepartment::getDeptParentId, 0)
.list(); .list();
List<DepartmentSimpleVO> vos = convert(datas); List<DepartmentSimpleVO> vos = convert(datas);
@ -57,6 +58,7 @@ public class TBaseDepartmentServiceImpl extends ServiceImpl<TBaseDepartmentMappe
private void bindChildren(DepartmentSimpleVO parent) { private void bindChildren(DepartmentSimpleVO parent) {
List<TBaseDepartment> datas = lambdaQuery() List<TBaseDepartment> datas = lambdaQuery()
.eq(TBaseDepartment::getDataValidStatus, 1) .eq(TBaseDepartment::getDataValidStatus, 1)
.eq(TBaseDepartment::getDeptStatus, 1)
.eq(TBaseDepartment::getDeptParentId, parent.getId()) .eq(TBaseDepartment::getDeptParentId, parent.getId())
.list(); .list();
List<DepartmentSimpleVO> vos = convert(datas); List<DepartmentSimpleVO> vos = convert(datas);

View File

@ -14,9 +14,11 @@ import com.nflg.mobilebroken.common.util.AdminUserUtil;
import com.nflg.mobilebroken.common.util.AppUserUtil; import com.nflg.mobilebroken.common.util.AppUserUtil;
import com.nflg.mobilebroken.common.util.TicketUtl; import com.nflg.mobilebroken.common.util.TicketUtl;
import com.nflg.mobilebroken.common.util.VUtils; import com.nflg.mobilebroken.common.util.VUtils;
import com.nflg.mobilebroken.repository.entity.AdminUser;
import com.nflg.mobilebroken.repository.entity.Ticket; import com.nflg.mobilebroken.repository.entity.Ticket;
import com.nflg.mobilebroken.repository.entity.TicketEvaluate; import com.nflg.mobilebroken.repository.entity.TicketEvaluate;
import com.nflg.mobilebroken.repository.mapper.TicketMapper; 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.IAppAreaService;
import com.nflg.mobilebroken.repository.service.ITicketEvaluateService; import com.nflg.mobilebroken.repository.service.ITicketEvaluateService;
import com.nflg.mobilebroken.repository.service.ITicketService; import com.nflg.mobilebroken.repository.service.ITicketService;
@ -24,7 +26,11 @@ import org.springframework.stereotype.Service;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.*; import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors;
/** /**
* <p> * <p>
@ -43,6 +49,9 @@ public class TicketServiceImpl extends ServiceImpl<TicketMapper, Ticket> impleme
@Resource @Resource
private ITicketEvaluateService ticketEvaluateService; private ITicketEvaluateService ticketEvaluateService;
@Resource
private IAdminUserService adminUserService;
@Override @Override
public Ticket add(TicketAddRequest request, Integer userId) { public Ticket add(TicketAddRequest request, Integer userId) {
Ticket lastTicket=lambdaQuery() Ticket lastTicket=lambdaQuery()
@ -87,6 +96,9 @@ public class TicketServiceImpl extends ServiceImpl<TicketMapper, Ticket> impleme
@Override @Override
public IPage<AdminTicketVO> searchPage(AdminTicketSearchRequest request) { public IPage<AdminTicketVO> searchPage(AdminTicketSearchRequest request) {
if (Objects.nonNull(request.getEndTime())){
request.setEndTime(request.getEndTime().plusDays(1));
}
if (request.getType() == 2) { if (request.getType() == 2) {
return baseMapper.searchFromAdminAndFollow(request, AdminUserUtil.getUserId(), new Page<>(request.getPage(), request.getPageSize())); return baseMapper.searchFromAdminAndFollow(request, AdminUserUtil.getUserId(), new Page<>(request.getPage(), request.getPageSize()));
} else if (request.getType() == 4) { } else if (request.getType() == 4) {
@ -107,43 +119,45 @@ public class TicketServiceImpl extends ServiceImpl<TicketMapper, Ticket> impleme
ticket.setState(TicketState.Processing.getState()); ticket.setState(TicketState.Processing.getState());
ticket.setRemark(request.getRemark()); ticket.setRemark(request.getRemark());
ticket.setHandle(StrUtil.join(",", request.getUserIds())); ticket.setHandle(StrUtil.join(",", request.getUserIds()));
ticket.setHandleName(StrUtil.join(",", adminUserService.listByIds(request.getUserIds()).stream().map(AdminUser::getUserName).collect(Collectors.toList())));
ticket.setCqm(AdminUserUtil.getUserId()); ticket.setCqm(AdminUserUtil.getUserId());
ticket.setCurrentHandle(AdminUserUtil.getUserId());
ticket.setUpdateTime(LocalDateTime.now()); ticket.setUpdateTime(LocalDateTime.now());
updateById(ticket); updateById(ticket);
return ticket; return ticket;
} }
@Override // @Override
public void completeTicket(List<Integer> ids) { // public void completeTicket(List<Integer> ids) {
// baseMapper.completeTicket(ids, AdminUserUtil.getUserId()); //// baseMapper.completeTicket(ids, AdminUserUtil.getUserId());
List<Ticket> tickets=listByIds(ids); // List<Ticket> tickets=listByIds(ids);
List<String> stateErrors=new ArrayList<>(); // List<String> stateErrors=new ArrayList<>();
List<String> handleErrors=new ArrayList<>(); // List<String> handleErrors=new ArrayList<>();
for (Ticket ticket : tickets) { // for (Ticket ticket : tickets) {
if (!Objects.equals(ticket.getState(), TicketState.Processing.getState())){ // if (!Objects.equals(ticket.getState(), TicketState.Processing.getState())){
stateErrors.add(ticket.getTitle()); // stateErrors.add(ticket.getTitle());
}else if(Arrays.stream(ticket.getHandle().split(",")) // }else if(Arrays.stream(ticket.getHandle().split(","))
.noneMatch(uid->StrUtil.equals(uid, AdminUserUtil.getUserId().toString())) // .noneMatch(uid->StrUtil.equals(uid, AdminUserUtil.getUserId().toString()))
){ // ){
handleErrors.add(ticket.getTitle()); // handleErrors.add(ticket.getTitle());
} // }
} // }
StringBuilder sb=new StringBuilder(); // StringBuilder sb=new StringBuilder();
if (!stateErrors.isEmpty()){ // if (!stateErrors.isEmpty()){
sb.append("以下工单状态不允许完成:").append(StrUtil.join(",", stateErrors)); // sb.append("以下工单状态不允许完成:").append(StrUtil.join(",", stateErrors));
} // }
if (!handleErrors.isEmpty()){ // if (!handleErrors.isEmpty()){
sb.append("以下工单你无权操作:").append(StrUtil.join(",", handleErrors)); // sb.append("以下工单你无权操作:").append(StrUtil.join(",", handleErrors));
} // }
String msg=sb.toString(); // String msg=sb.toString();
VUtils.trueThrowBusinessError(StrUtil.isNotBlank(msg)) // VUtils.trueThrowBusinessError(StrUtil.isNotBlank(msg))
.throwMessage(msg); // .throwMessage(msg);
lambdaUpdate() // lambdaUpdate()
.in(Ticket::getId, ids) // .in(Ticket::getId, ids)
.set(Ticket::getState, TicketState.ProcessingCompleted.getState()) // .set(Ticket::getState, TicketState.ProcessingCompleted.getState())
.set(Ticket::getUpdateTime, LocalDateTime.now()) // .set(Ticket::getUpdateTime, LocalDateTime.now())
.update(); // .update();
} // }
@Override @Override
public Ticket completeTicket(Integer id) { public Ticket completeTicket(Integer id) {
@ -155,6 +169,7 @@ public class TicketServiceImpl extends ServiceImpl<TicketMapper, Ticket> impleme
.throwMessage("你无权操作该工单"); .throwMessage("你无权操作该工单");
ticket.setState(TicketState.ProcessingCompleted.getState()); ticket.setState(TicketState.ProcessingCompleted.getState());
ticket.setSolveTime(LocalDateTime.now()); ticket.setSolveTime(LocalDateTime.now());
ticket.setCurrentHandle(AdminUserUtil.getUserId());
ticket.setUpdateTime(LocalDateTime.now()); ticket.setUpdateTime(LocalDateTime.now());
updateById(ticket); updateById(ticket);
return ticket; return ticket;
@ -172,6 +187,7 @@ public class TicketServiceImpl extends ServiceImpl<TicketMapper, Ticket> impleme
ticket.setSolution(request.getSolution()); ticket.setSolution(request.getSolution());
ticket.setSolutionAttachments(StrUtil.join(",", request.getAttachments())); ticket.setSolutionAttachments(StrUtil.join(",", request.getAttachments()));
ticket.setSolveTime(LocalDateTime.now()); ticket.setSolveTime(LocalDateTime.now());
ticket.setCurrentHandle(AdminUserUtil.getUserId());
updateById(ticket); updateById(ticket);
return ticket; return ticket;
} }
@ -181,7 +197,7 @@ public class TicketServiceImpl extends ServiceImpl<TicketMapper, Ticket> impleme
if (request.getType() == 2) { if (request.getType() == 2) {
return baseMapper.searchAllFromAdminAndFollow(request, AdminUserUtil.getUserId()); return baseMapper.searchAllFromAdminAndFollow(request, AdminUserUtil.getUserId());
} else if (request.getType() == 4) { } else if (request.getType() == 4) {
return baseMapper.searchAllFromAdmin(request); return baseMapper.searchAllFromAdmin(request, AdminUserUtil.getUserId());
} }
return Collections.emptyList(); return Collections.emptyList();
} }

View File

@ -32,12 +32,6 @@
<sql id="adminSearchWhereCondition"> <sql id="adminSearchWhereCondition">
<where> <where>
t.state!=4 t.state!=4
<if test="request.title!=null and request.title!=''">
AND (t.title LIKE CONCAT('%', #{request.title}, '%') OR t.no LIKE CONCAT('%', #{request.title}, '%'))
</if>
<if test="request.deviceNo!=null and request.deviceNo!=''">
AND t.device_no LIKE CONCAT('%', #{request.deviceNo}, '%')
</if>
<if test="request.state!=null"> <if test="request.state!=null">
AND t.state=#{request.state} AND t.state=#{request.state}
</if> </if>
@ -48,7 +42,7 @@
AND t.component=#{request.component} AND t.component=#{request.component}
</if> </if>
<if test="request.handleUserName!=null and request.handleUserName!=''"> <if test="request.handleUserName!=null and request.handleUserName!=''">
AND u.handle LIKE CONCAT('%', #{request.handleUserName}, '%') AND t.handle_name LIKE CONCAT('%', #{request.handleUserName}, '%')
</if> </if>
<if test="request.companyId!=null"> <if test="request.companyId!=null">
AND u.company_id=#{request.companyId} AND u.company_id=#{request.companyId}
@ -59,8 +53,8 @@
<if test="request.question!=null and request.question!=''"> <if test="request.question!=null and request.question!=''">
AND t.question=#{request.question} AND t.question=#{request.question}
</if> </if>
<if test="request.createUserName!=null and request.createUserName!=''"> <if test="request.warrantyStatus!=null">
AND u.name LIKE CONCAT('%', #{request.createUserName}, '%') AND d.warranty_state=#{request.warrantyStatus}
</if> </if>
<if test="request.startTime!=null"> <if test="request.startTime!=null">
AND t.create_time>=#{request.startTime} AND t.create_time>=#{request.startTime}
@ -68,6 +62,15 @@
<if test="request.endTime!=null"> <if test="request.endTime!=null">
AND t.create_time &lt;= #{request.endTime} AND t.create_time &lt;= #{request.endTime}
</if> </if>
<if test="request.title!=null and request.title!=''">
AND (t.title LIKE CONCAT('%', #{request.title}, '%') OR t.no LIKE CONCAT('%', #{request.title}, '%'))
</if>
<if test="request.deviceNo!=null and request.deviceNo!=''">
AND t.device_no LIKE CONCAT('%', #{request.deviceNo}, '%')
</if>
<if test="request.createUserName!=null and request.createUserName!=''">
AND d.customer_name LIKE CONCAT('%', #{request.createUserName}, '%')
</if>
</where> </where>
</sql> </sql>
@ -81,7 +84,7 @@
LEFT JOIN ticket_follow tf ON t.id=tf.ticket_id AND tf.user_id=#{userId} AND tf.from=0 LEFT JOIN ticket_follow tf ON t.id=tf.ticket_id AND tf.user_id=#{userId} AND tf.from=0
WHERE t.user_id=#{userId} AND t.state!=4 WHERE t.user_id=#{userId} AND t.state!=4
<include refid="searchWhereCondition"/> <include refid="searchWhereCondition"/>
ORDER BY t.create_time DESC ORDER BY t.id DESC
</select> </select>
<select id="searchFollow" resultType="com.nflg.mobilebroken.common.pojo.vo.TicketVO"> <select id="searchFollow" resultType="com.nflg.mobilebroken.common.pojo.vo.TicketVO">
@ -93,7 +96,7 @@
LEFT JOIN ticket_follow tf ON t.id=tf.ticket_id AND tf.from=0 LEFT JOIN ticket_follow tf ON t.id=tf.ticket_id AND tf.from=0
WHERE tf.user_id=#{userId} AND t.state!=4 WHERE tf.user_id=#{userId} AND t.state!=4
<include refid="searchWhereCondition"/> <include refid="searchWhereCondition"/>
ORDER BY t.create_time DESC ORDER BY t.id DESC
</select> </select>
<select id="searchArea" resultType="com.nflg.mobilebroken.common.pojo.vo.TicketVO"> <select id="searchArea" resultType="com.nflg.mobilebroken.common.pojo.vo.TicketVO">
@ -109,24 +112,29 @@
#{companyId} #{companyId}
</foreach> </foreach>
<include refid="searchWhereCondition"/> <include refid="searchWhereCondition"/>
ORDER BY t.create_time DESC ORDER BY t.id DESC
</select> </select>
<select id="searchFromAdmin" resultType="com.nflg.mobilebroken.common.pojo.vo.AdminTicketVO"> <select id="searchFromAdmin" 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,a1.area_name,a2.`name`) AS 'areaName' SELECT t.id,t.`no`,t.title,t.state,t.urgency,t.component,t.question,t.solution,IF(u.is_primary,a1.area_name,a2.`name`) AS 'areaName'
,d.customer_name AS 'companyName',u.company_id AS 'companyId',u.`name` AS 'createBy',t.device_no AS 'deviceNo',t.use_time AS 'useTime' ,d.customer_name AS 'companyName',u.company_id AS 'companyId',u.`name` AS 'createBy',t.device_no AS 'deviceNo',t.use_time AS 'useTime'
,t.create_time AS 'createTime',t.handle,t.solve_time AS 'solveTime',di.name AS 'warrantyStatusDesc',d.device_type AS 'deviceType' ,t.create_time AS 'createTime',t.update_time AS 'completeTime',di.name AS 'warrantyStatusDesc',d.device_type AS 'deviceType'
,d.model_no AS 'equipmentModel',d.shipment_date AS 'shipmentDate',IF(tf.id IS NULL, false, true) AS 'followed',t.cqm ,d.model_no AS 'equipmentModel',d.shipment_date AS 'shipmentDate',IF(tf.id IS NULL, false, true) AS 'followed',auc.user_name AS 'cqm'
,t.solve_time AS 'closeTime',u.name AS 'primaryUserName',auh.user_name AS 'currentHandle',dt.cqm_person_name AS 'cqms'
,t.handle_name AS 'handle'
FROM ticket t FROM ticket t
LEFT JOIN app_user u ON t.user_id=u.id 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 t_base_customer c ON u.company_id=c.id
LEFT JOIN t_base_area a1 ON u.area_id=a1.id LEFT JOIN t_base_area a1 ON u.area_id=a1.id
LEFT JOIN app_area a2 ON u.area_id=a2.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 AND d.data_valid_state=1
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 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 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"/> <include refid="adminSearchWhereCondition"/>
ORDER BY t.create_time DESC ORDER BY t.id DESC
</select> </select>
<!-- <select id="completeTicket">--> <!-- <select id="completeTicket">-->
@ -141,23 +149,32 @@
<select id="searchAllFromAdmin" resultType="com.nflg.mobilebroken.common.pojo.vo.AdminTicketVO"> <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,a1.area_name,a2.`name`) AS 'areaName' SELECT t.id,t.`no`,t.title,t.state,t.urgency,t.component,t.question,t.solution,IF(u.is_primary,a1.area_name,a2.`name`) AS 'areaName'
,d.customer_name AS 'companyName',u.company_id AS 'companyId',u.`name` AS 'createBy',t.device_no AS 'deviceNo',t.use_time AS 'useTime' ,d.customer_name AS 'companyName',u.company_id AS 'companyId',u.`name` AS 'createBy',t.device_no AS 'deviceNo',t.use_time AS 'useTime'
,t.create_time AS 'createTime',t.handle,t.solve_time AS 'solveTime',di.name AS 'warrantyStatusDesc' ,t.create_time AS 'createTime',t.update_time AS 'completeTime',di.name AS 'warrantyStatusDesc',d.device_type AS 'deviceType'
,d.model_no AS 'equipmentModel',d.shipment_date AS 'shipmentDate',IF(tf.id IS NULL, false, true) AS 'followed',auc.user_name AS 'cqm'
,t.solve_time AS 'closeTime',u.name AS 'primaryUserName',auh.user_name AS 'currentHandle',dt.cqm_person_name AS 'cqms'
,t.handle_name AS 'handle'
FROM ticket t FROM ticket t
LEFT JOIN app_user u ON t.user_id=u.id 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 t_base_customer c ON u.company_id=c.id
LEFT JOIN t_base_area a1 ON u.area_id=a1.id LEFT JOIN t_base_area a1 ON u.area_id=a1.id
LEFT JOIN app_area a2 ON u.area_id=a2.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 AND d.data_valid_state=1
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 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"/> <include refid="adminSearchWhereCondition"/>
ORDER BY t.create_time DESC ORDER BY t.id DESC
</select> </select>
<select id="searchFromAdminAndFollow" resultType="com.nflg.mobilebroken.common.pojo.vo.AdminTicketVO"> <select id="searchFromAdminAndFollow" 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,a1.area_name,a2.`name`) AS 'areaName' SELECT t.id,t.`no`,t.title,t.state,t.urgency,t.component,t.question,t.solution,IF(u.is_primary,a1.area_name,a2.`name`) AS 'areaName'
,d.customer_name AS 'companyName',u.company_id AS 'companyId',u.`name` AS 'createBy',t.device_no AS 'deviceNo',t.use_time AS 'useTime' ,d.customer_name AS 'companyName',u.company_id AS 'companyId',u.`name` AS 'createBy',t.device_no AS 'deviceNo',t.use_time AS 'useTime'
,t.create_time AS 'createTime',t.handle,t.solve_time AS 'solveTime',di.name AS 'warrantyStatusDesc',d.device_type AS 'deviceType' ,t.create_time AS 'createTime',t.update_time AS 'completeTime',di.name AS 'warrantyStatusDesc',d.device_type AS 'deviceType'
,d.model_no AS 'equipmentModel',d.shipment_date AS 'shipmentDate',IF(tf.id IS NULL, false, true) AS 'followed',t.cqm ,d.model_no AS 'equipmentModel',d.shipment_date AS 'shipmentDate',IF(tf.id IS NULL, false, true) AS 'followed',auc.user_name AS 'cqm'
,t.solve_time AS 'closeTime',u.name AS 'primaryUserName',auh.user_name AS 'currentHandle',dt.cqm_person_name AS 'cqms'
,t.handle_name AS 'handle'
FROM ticket t FROM ticket t
LEFT JOIN app_user u ON t.user_id=u.id 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 t_base_customer c ON u.company_id=c.id
@ -165,15 +182,20 @@
LEFT JOIN app_area a2 ON u.area_id=a2.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 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 AND d.data_valid_state=1
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 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"/> <include refid="adminSearchWhereCondition"/>
ORDER BY t.create_time DESC ORDER BY t.id DESC
</select> </select>
<select id="searchAllFromAdminAndFollow" resultType="com.nflg.mobilebroken.common.pojo.vo.AdminTicketVO"> <select id="searchAllFromAdminAndFollow" 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,a1.area_name,a2.`name`) AS 'areaName' SELECT t.id,t.`no`,t.title,t.state,t.urgency,t.component,t.question,t.solution,IF(u.is_primary,a1.area_name,a2.`name`) AS 'areaName'
,d.customer_name AS 'companyName',u.company_id AS 'companyId',u.`name` AS 'createBy',t.device_no AS 'deviceNo',t.use_time AS 'useTime' ,d.customer_name AS 'companyName',u.company_id AS 'companyId',u.`name` AS 'createBy',t.device_no AS 'deviceNo',t.use_time AS 'useTime'
,t.create_time AS 'createTime',t.handle,t.solve_time AS 'solveTime',di.name AS 'warrantyStatusDesc',IF(tf.id IS NULL, false, true) AS 'followed' ,t.create_time AS 'createTime',t.update_time AS 'completeTime',di.name AS 'warrantyStatusDesc',IF(tf.id IS NULL, false, true) AS 'followed'
,auc.user_name AS 'cqm',t.solve_time AS 'closeTime',u.name AS 'primaryUserName',auh.user_name AS 'currentHandle'
,dt.cqm_person_name AS 'cqms',t.handle_name AS 'handle'
FROM ticket t FROM ticket t
LEFT JOIN app_user u ON t.user_id=u.id 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 t_base_customer c ON u.company_id=c.id
@ -181,8 +203,11 @@
LEFT JOIN app_area a2 ON u.area_id=a2.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 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 AND d.data_valid_state=1
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 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"/> <include refid="adminSearchWhereCondition"/>
ORDER BY t.create_time DESC ORDER BY t.id DESC
</select> </select>
</mapper> </mapper>