feat(dispatch): 优化派工单功能并完善相关数据结构
- 在派工单创建时新增自动生成编码,保持编码格式7位数字且递增 - 增加派工单延期审批逻辑,防止已完成的派工单延期 - 更新派工单延期处理,完善计划开始和结束时间的设置及状态判定 - 在派工单实体及VO中新增编码字段,丰富数据内容 - 修改工单相关SQL查询,调整表连接及字段映射,增加相关信息查询 - 更新工单消息推送逻辑,支持基于工单视图对象的推送 - 增加TicketService接口新方法,支持通过视图对象获取工单详情 - 修改用户和客户相关逻辑,新增客户名称字段及区域权限判断改进 - 支持查询时按是否工服工单处理人筛选账户,提高查询灵活性 - 修改文件相关请求及响应对象,调整关联ID数据类型为Long - 重构相关Mapper XML文件,统一工单关注表名及字段,优化查询效率 - 其他小范围代码和注释优化,提升代码整洁及可维护性
This commit is contained in:
parent
27c345fdfc
commit
ced5b87a67
|
|
@ -179,7 +179,7 @@ public class FileController extends ControllerBase {
|
||||||
*/
|
*/
|
||||||
@PostMapping("deleteFile")
|
@PostMapping("deleteFile")
|
||||||
@ApiMark(moduleName = "文件管理", apiName = "删除文件")
|
@ApiMark(moduleName = "文件管理", apiName = "删除文件")
|
||||||
public ApiResult<Void> deleteFile(@Valid @RequestBody @NotEmpty List<Integer> ids) {
|
public ApiResult<Void> deleteFile(@Valid @RequestBody @NotEmpty List<Long> ids) {
|
||||||
fileUploadRecordService.removeBatchByIds(ids);
|
fileUploadRecordService.removeBatchByIds(ids);
|
||||||
return ApiResult.success();
|
return ApiResult.success();
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -90,10 +90,7 @@ public class PositionController extends ControllerBase {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
result.setLanguage(positionLanguageResult);
|
result.setLanguage(positionLanguageResult);
|
||||||
result.setTicketManage(ent.getTicketManage());
|
|
||||||
return ApiResult.success(result);
|
return ApiResult.success(result);
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
||||||
|
|
@ -40,10 +40,6 @@ public class PositionDetailDTO {
|
||||||
*/
|
*/
|
||||||
private Boolean gongFuTicketManage;
|
private Boolean gongFuTicketManage;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 职位语言
|
* 职位语言
|
||||||
*/
|
*/
|
||||||
|
|
|
||||||
|
|
@ -33,6 +33,11 @@ public class PositionDetailVO {
|
||||||
*/
|
*/
|
||||||
private Boolean ticketManage;
|
private Boolean ticketManage;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 是否授予工服工单权限
|
||||||
|
*/
|
||||||
|
private Boolean gongFuTicketManage;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 创建人-账号
|
* 创建人-账号
|
||||||
*/
|
*/
|
||||||
|
|
|
||||||
|
|
@ -109,6 +109,9 @@ public class TicketController extends ControllerBase {
|
||||||
@Resource
|
@Resource
|
||||||
private ITicketSolutionAuditService ticketSolutionAuditService;
|
private ITicketSolutionAuditService ticketSolutionAuditService;
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private ITBaseAreaService baseAreaService;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 搜索设备
|
* 搜索设备
|
||||||
* @param request 搜索条件
|
* @param request 搜索条件
|
||||||
|
|
@ -236,6 +239,7 @@ public class TicketController extends ControllerBase {
|
||||||
AppUser user = appUserService.getById(ticket.getUserId());
|
AppUser user = appUserService.getById(ticket.getUserId());
|
||||||
userName = user.getName();
|
userName = user.getName();
|
||||||
userAvatar = user.getAvatar();
|
userAvatar = user.getAvatar();
|
||||||
|
if (user.getType() == 0) {
|
||||||
if (user.getIsPrimary()) {
|
if (user.getIsPrimary()) {
|
||||||
areaName = StrUtil.join(",", customerService.getAreas(Arrays.stream(user.getCompanyId().split(",")).map(Integer::parseInt).collect(Collectors.toList())));
|
areaName = StrUtil.join(",", customerService.getAreas(Arrays.stream(user.getCompanyId().split(",")).map(Integer::parseInt).collect(Collectors.toList())));
|
||||||
} else if (Objects.nonNull(user.getAreaId())) {
|
} else if (Objects.nonNull(user.getAreaId())) {
|
||||||
|
|
@ -245,6 +249,14 @@ public class TicketController extends ControllerBase {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
companys = customerService.listByIds(Arrays.stream(user.getCompanyId().split(",")).map(Integer::parseInt).collect(Collectors.toList()));
|
companys = customerService.listByIds(Arrays.stream(user.getCompanyId().split(",")).map(Integer::parseInt).collect(Collectors.toList()));
|
||||||
|
} else if (user.getType() == 1) {
|
||||||
|
if (Objects.nonNull(user.getAreaId())) {
|
||||||
|
TBaseArea area = baseAreaService.getById(user.getAreaId());
|
||||||
|
if (Objects.nonNull(area)) {
|
||||||
|
areaName = area.getAreaName();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
AdminUser adminUser = adminUserService.getById(ticket.getUserId());
|
AdminUser adminUser = adminUserService.getById(ticket.getUserId());
|
||||||
userName = adminUser.getUserName();
|
userName = adminUser.getUserName();
|
||||||
|
|
@ -388,7 +400,7 @@ public class TicketController extends ControllerBase {
|
||||||
**/
|
**/
|
||||||
@PostMapping("addChatMessage")
|
@PostMapping("addChatMessage")
|
||||||
public ApiResult<Void> addChatMessage(@Valid @RequestBody AddChatMessageRequest request) {
|
public ApiResult<Void> addChatMessage(@Valid @RequestBody AddChatMessageRequest request) {
|
||||||
Ticket ticket = ticketService.getById(request.getTicketId());
|
TicketVO ticket = ticketService.getFromView(request.getTicketId());
|
||||||
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("当前工单状态不允许发送消息");
|
||||||
|
|
@ -417,7 +429,7 @@ public class TicketController extends ControllerBase {
|
||||||
}
|
}
|
||||||
ticketChatService.addMessage(request.getTicketId(), message);
|
ticketChatService.addMessage(request.getTicketId(), message);
|
||||||
//推送消息
|
//推送消息
|
||||||
ssePushService.sendTicketMessageToAdmin(Long.valueOf(ticket.getId()), message);
|
ssePushService.sendTicketMessageToAdmin(ticket.getId(), message);
|
||||||
ticketEventPublisher.publishTicketReplyEvent(ticket, MultilingualUtil.getLanguage(), MultilingualUtil.getZone());
|
ticketEventPublisher.publishTicketReplyEvent(ticket, MultilingualUtil.getLanguage(), MultilingualUtil.getZone());
|
||||||
return ApiResult.success();
|
return ApiResult.success();
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -6,10 +6,10 @@ import cn.hutool.core.util.StrUtil;
|
||||||
import com.nflg.mobilebroken.common.constant.Constant;
|
import com.nflg.mobilebroken.common.constant.Constant;
|
||||||
import com.nflg.mobilebroken.common.constant.MessageSubType;
|
import com.nflg.mobilebroken.common.constant.MessageSubType;
|
||||||
import com.nflg.mobilebroken.common.constant.MessageType;
|
import com.nflg.mobilebroken.common.constant.MessageType;
|
||||||
|
import com.nflg.mobilebroken.common.pojo.vo.TicketVO;
|
||||||
import com.nflg.mobilebroken.repository.entity.AdminMessage;
|
import com.nflg.mobilebroken.repository.entity.AdminMessage;
|
||||||
import com.nflg.mobilebroken.repository.entity.AdminUser;
|
import com.nflg.mobilebroken.repository.entity.AdminUser;
|
||||||
import com.nflg.mobilebroken.repository.entity.AppUser;
|
import com.nflg.mobilebroken.repository.entity.AppUser;
|
||||||
import com.nflg.mobilebroken.repository.entity.Ticket;
|
|
||||||
import com.nflg.mobilebroken.repository.service.IAdminMessageService;
|
import com.nflg.mobilebroken.repository.service.IAdminMessageService;
|
||||||
import com.nflg.mobilebroken.repository.service.IAdminUserService;
|
import com.nflg.mobilebroken.repository.service.IAdminUserService;
|
||||||
import com.nflg.mobilebroken.repository.service.IAppUserService;
|
import com.nflg.mobilebroken.repository.service.IAppUserService;
|
||||||
|
|
@ -32,7 +32,7 @@ import java.util.stream.Collectors;
|
||||||
public class TicketReplyEvent extends ApplicationEvent implements ApplicationContextAware {
|
public class TicketReplyEvent extends ApplicationEvent implements ApplicationContextAware {
|
||||||
|
|
||||||
private static final DateTimeFormatter FORMATTER= DateTimeFormatter.ofPattern(DatePattern.NORM_DATETIME_PATTERN);
|
private static final DateTimeFormatter FORMATTER= DateTimeFormatter.ofPattern(DatePattern.NORM_DATETIME_PATTERN);
|
||||||
private final Ticket ticket;
|
private final TicketVO ticket;
|
||||||
private final String language;
|
private final String language;
|
||||||
private final String zone;
|
private final String zone;
|
||||||
private IDictionaryItemTranslateService dictionaryItemTranslateService;
|
private IDictionaryItemTranslateService dictionaryItemTranslateService;
|
||||||
|
|
@ -41,7 +41,7 @@ public class TicketReplyEvent extends ApplicationEvent implements ApplicationCon
|
||||||
private IAdminUserService adminUserService;
|
private IAdminUserService adminUserService;
|
||||||
private IAdminMessageService adminMessageService;
|
private IAdminMessageService adminMessageService;
|
||||||
|
|
||||||
public TicketReplyEvent(Object source, Ticket ticket, String language, String zone) {
|
public TicketReplyEvent(Object source, TicketVO ticket, String language, String zone) {
|
||||||
super(source);
|
super(source);
|
||||||
this.ticket = ticket;
|
this.ticket = ticket;
|
||||||
this.language = language;
|
this.language = language;
|
||||||
|
|
@ -73,7 +73,7 @@ public class TicketReplyEvent extends ApplicationEvent implements ApplicationCon
|
||||||
.setNo(ticket.getNo())
|
.setNo(ticket.getNo())
|
||||||
.setTitle(ticket.getTitle())
|
.setTitle(ticket.getTitle())
|
||||||
.setUserId(c.getId())
|
.setUserId(c.getId())
|
||||||
.setSourceId(Long.valueOf(ticket.getId()))
|
.setSourceId(ticket.getId())
|
||||||
.setSource(0)
|
.setSource(0)
|
||||||
.setType(MessageType.WorkOrderAssignment.getState())
|
.setType(MessageType.WorkOrderAssignment.getState())
|
||||||
.setSubType(MessageSubType.TicketNewMessage.getState())
|
.setSubType(MessageSubType.TicketNewMessage.getState())
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,7 @@
|
||||||
package com.nflg.mobilebroken.cfs.publisher;
|
package com.nflg.mobilebroken.cfs.publisher;
|
||||||
|
|
||||||
import com.nflg.mobilebroken.cfs.event.*;
|
import com.nflg.mobilebroken.cfs.event.*;
|
||||||
|
import com.nflg.mobilebroken.common.pojo.vo.TicketVO;
|
||||||
import com.nflg.mobilebroken.repository.entity.Ticket;
|
import com.nflg.mobilebroken.repository.entity.Ticket;
|
||||||
import org.springframework.context.ApplicationContext;
|
import org.springframework.context.ApplicationContext;
|
||||||
import org.springframework.context.ApplicationEventPublisher;
|
import org.springframework.context.ApplicationEventPublisher;
|
||||||
|
|
@ -23,7 +24,7 @@ public class TicketEventPublisher {
|
||||||
eventPublisher.publishEvent(event);
|
eventPublisher.publishEvent(event);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void publishTicketReplyEvent(Ticket ticket, String language, String zone) {
|
public void publishTicketReplyEvent(TicketVO ticket, String language, String zone) {
|
||||||
TicketReplyEvent event = new TicketReplyEvent(this, ticket, language, zone);
|
TicketReplyEvent event = new TicketReplyEvent(this, ticket, language, zone);
|
||||||
event.setApplicationContext(applicationContext);
|
event.setApplicationContext(applicationContext);
|
||||||
eventPublisher.publishEvent(event);
|
eventPublisher.publishEvent(event);
|
||||||
|
|
|
||||||
|
|
@ -16,7 +16,7 @@ public class FileSearchRequest extends PageRequest {
|
||||||
private Integer source;
|
private Integer source;
|
||||||
|
|
||||||
//文件来源id
|
//文件来源id
|
||||||
private Integer sourceId;
|
private Long sourceId;
|
||||||
|
|
||||||
//文件类型
|
//文件类型
|
||||||
private String fileType;
|
private String fileType;
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,6 @@ import lombok.Data;
|
||||||
|
|
||||||
import javax.validation.constraints.Email;
|
import javax.validation.constraints.Email;
|
||||||
import javax.validation.constraints.NotBlank;
|
import javax.validation.constraints.NotBlank;
|
||||||
import javax.validation.constraints.NotEmpty;
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@Data
|
@Data
|
||||||
|
|
@ -22,11 +21,9 @@ public class PrimaryAppUserAddRequest {
|
||||||
private String userName;
|
private String userName;
|
||||||
|
|
||||||
//公司id列表
|
//公司id列表
|
||||||
@NotEmpty
|
|
||||||
private List<Integer> companyIds;
|
private List<Integer> companyIds;
|
||||||
|
|
||||||
//销售人员姓名
|
//销售人员姓名
|
||||||
@NotBlank
|
|
||||||
private String salesUserName;
|
private String salesUserName;
|
||||||
|
|
||||||
//邮箱
|
//邮箱
|
||||||
|
|
|
||||||
|
|
@ -18,4 +18,7 @@ public class SearchAccountRequest extends PageRequest {
|
||||||
|
|
||||||
// 状态
|
// 状态
|
||||||
private Byte state;
|
private Byte state;
|
||||||
|
|
||||||
|
// 是否是工服工单处理人
|
||||||
|
private Boolean gongfuHandler;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -24,6 +24,9 @@ public class SolutionMeasuresSaveRequest {
|
||||||
@NotNull
|
@NotNull
|
||||||
private Byte accidentLevel;
|
private Byte accidentLevel;
|
||||||
|
|
||||||
|
//问题类型
|
||||||
|
private String question;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 根本原因
|
* 根本原因
|
||||||
*/
|
*/
|
||||||
|
|
|
||||||
|
|
@ -14,5 +14,5 @@ public class ZipDownloadRequest {
|
||||||
* 文件id列表
|
* 文件id列表
|
||||||
*/
|
*/
|
||||||
@NotEmpty
|
@NotEmpty
|
||||||
private List<Integer> fileIds;
|
private List<Long> fileIds;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -111,6 +111,11 @@ public class AppUserForAdminVO {
|
||||||
*/
|
*/
|
||||||
private Integer type;
|
private Integer type;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 客户名称,仅终端用户使用
|
||||||
|
*/
|
||||||
|
private String customerName;
|
||||||
|
|
||||||
//下级账号
|
//下级账号
|
||||||
private List<AppUserForAdminVO> children=new ArrayList<>();
|
private List<AppUserForAdminVO> children=new ArrayList<>();
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -13,6 +13,11 @@ public class DispatchVO {
|
||||||
|
|
||||||
private Long id;
|
private Long id;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 编码
|
||||||
|
*/
|
||||||
|
private String code;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 个案编号
|
* 个案编号
|
||||||
*/
|
*/
|
||||||
|
|
@ -87,10 +92,10 @@ public class DispatchVO {
|
||||||
return DateUtil.betweenDay(DateUtil.parseDate(planStartDate), DateUtil.parseDate(planEndDate), true) + 1;
|
return DateUtil.betweenDay(DateUtil.parseDate(planStartDate), DateUtil.parseDate(planEndDate), true) + 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
// /**
|
||||||
* 延期结束日期
|
// * 延期结束日期
|
||||||
*/
|
// */
|
||||||
private String delayEndDate;
|
// private String delayEndDate;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 是否延期过
|
* 是否延期过
|
||||||
|
|
|
||||||
|
|
@ -9,18 +9,26 @@ public class FileVO {
|
||||||
|
|
||||||
//关联
|
//关联
|
||||||
public byte source;
|
public byte source;
|
||||||
|
|
||||||
public String sourceDesc;
|
public String sourceDesc;
|
||||||
|
|
||||||
//关联ID
|
//关联ID
|
||||||
public String sourceId;
|
public Long sourceId;
|
||||||
|
|
||||||
//文件路径
|
//文件路径
|
||||||
public String url;
|
public String url;
|
||||||
|
|
||||||
//上传时间
|
//上传时间
|
||||||
public LocalDateTime createTime;
|
public LocalDateTime createTime;
|
||||||
|
|
||||||
//上传人
|
//上传人
|
||||||
public String createBy;
|
public String createBy;
|
||||||
|
|
||||||
private Integer id;
|
private Integer id;
|
||||||
|
|
||||||
// 文件名
|
// 文件名
|
||||||
private String fileName;
|
private String fileName;
|
||||||
|
|
||||||
// 文件类型
|
// 文件类型
|
||||||
private String fileType;
|
private String fileType;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -60,4 +60,14 @@ public class TicketVO {
|
||||||
|
|
||||||
//是否已关注
|
//是否已关注
|
||||||
private boolean followed;
|
private boolean followed;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 创建人id
|
||||||
|
*/
|
||||||
|
private Integer userId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 用户来源平台,app或者admin
|
||||||
|
*/
|
||||||
|
private String userPlatform;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -5,7 +5,7 @@ import com.nflg.mobilebroken.common.pojo.PageData;
|
||||||
import com.nflg.mobilebroken.common.pojo.request.AnonymousTicketSearchRequest;
|
import com.nflg.mobilebroken.common.pojo.request.AnonymousTicketSearchRequest;
|
||||||
import com.nflg.mobilebroken.common.pojo.vo.AnonymousTicketInfoVO;
|
import com.nflg.mobilebroken.common.pojo.vo.AnonymousTicketInfoVO;
|
||||||
import com.nflg.mobilebroken.common.pojo.vo.AnonymousTicketSearchVO;
|
import com.nflg.mobilebroken.common.pojo.vo.AnonymousTicketSearchVO;
|
||||||
import com.nflg.mobilebroken.repository.service.IAnonymousTicketService;
|
import com.nflg.mobilebroken.repository.service.IGongfuAnonymousTicketService;
|
||||||
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
|
|
@ -20,7 +20,7 @@ import javax.validation.constraints.NotNull;
|
||||||
public class AnonymousTicketController {
|
public class AnonymousTicketController {
|
||||||
|
|
||||||
@Resource
|
@Resource
|
||||||
private IAnonymousTicketService anonymousTicketService;
|
private IGongfuAnonymousTicketService anonymousTicketService;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 搜索匿名工单
|
* 搜索匿名工单
|
||||||
|
|
|
||||||
|
|
@ -80,12 +80,18 @@ public class DispatchController extends ControllerBase {
|
||||||
.setRemark(request.getRemark())
|
.setRemark(request.getRemark())
|
||||||
.setCreateById(AdminUserUtil.getUserId())
|
.setCreateById(AdminUserUtil.getUserId())
|
||||||
.setCreateBy(AdminUserUtil.getUserName())
|
.setCreateBy(AdminUserUtil.getUserName())
|
||||||
.setCreateTime(LocalDateTime.now());
|
.setCreateTime(LocalDateTime.now())
|
||||||
|
.setCode(genCode(dispatchService.getMaxCode()));
|
||||||
dispatchService.save(dispatch);
|
dispatchService.save(dispatch);
|
||||||
dispatchEventPublisher.publishDispatchCreateEvent(dispatch);
|
dispatchEventPublisher.publishDispatchCreateEvent(dispatch);
|
||||||
return ApiResult.success();
|
return ApiResult.success();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private String genCode(String code) {
|
||||||
|
int index = Integer.parseInt(code);
|
||||||
|
return String.format("%07d", index + 1);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 修改派工单
|
* 修改派工单
|
||||||
*/
|
*/
|
||||||
|
|
@ -235,6 +241,7 @@ public class DispatchController extends ControllerBase {
|
||||||
VUtils.trueThrowBusinessError(!Objects.equals(applyfor.getAuditState(), 0)).throwMessage("已经审核过了");
|
VUtils.trueThrowBusinessError(!Objects.equals(applyfor.getAuditState(), 0)).throwMessage("已经审核过了");
|
||||||
GongfuDispatch dispatch = dispatchService.getById(applyfor.getTicketId());
|
GongfuDispatch dispatch = dispatchService.getById(applyfor.getTicketId());
|
||||||
VUtils.trueThrowBusinessError(Objects.isNull(dispatch)).throwMessage("派工单不存在");
|
VUtils.trueThrowBusinessError(Objects.isNull(dispatch)).throwMessage("派工单不存在");
|
||||||
|
VUtils.trueThrowBusinessError(dispatch.getState() == 2).throwMessage("派工单已完成不能延期");
|
||||||
VUtils.trueThrowBusinessError(!Objects.equals(dispatch.getCreateById(), AdminUserUtil.getUserId()))
|
VUtils.trueThrowBusinessError(!Objects.equals(dispatch.getCreateById(), AdminUserUtil.getUserId()))
|
||||||
.throwMessage("你不是派工单创建人,无法审核延期申请");
|
.throwMessage("你不是派工单创建人,无法审核延期申请");
|
||||||
applyfor.setAuditState(request.getPass() ? 1 : 2);
|
applyfor.setAuditState(request.getPass() ? 1 : 2);
|
||||||
|
|
@ -243,8 +250,11 @@ public class DispatchController extends ControllerBase {
|
||||||
applyfor.setAuditMsg(request.getReason());
|
applyfor.setAuditMsg(request.getReason());
|
||||||
dispatchApplyforService.updateById(applyfor);
|
dispatchApplyforService.updateById(applyfor);
|
||||||
if (request.getPass()) {
|
if (request.getPass()) {
|
||||||
dispatch.setDelayEndDate(applyfor.getEndDate());
|
dispatch.setPlanStartDate(applyfor.getStartDate());
|
||||||
|
dispatch.setPlanEndDate(applyfor.getEndDate());
|
||||||
dispatch.setIsDelay(true);
|
dispatch.setIsDelay(true);
|
||||||
|
String now = DateTimeUtil.format(LocalDate.now(), "yyyy-MM-dd");
|
||||||
|
dispatch.setState(dispatch.getPlanStartDate().compareTo(now) >= 0 ? 1 : 0);
|
||||||
dispatchService.updateById(dispatch);
|
dispatchService.updateById(dispatch);
|
||||||
}
|
}
|
||||||
adminMessageService.add(
|
adminMessageService.add(
|
||||||
|
|
|
||||||
|
|
@ -1,33 +0,0 @@
|
||||||
package com.nflg.mobilebroken.gongfu.controller;
|
|
||||||
|
|
||||||
import com.nflg.mobilebroken.gongfu.service.ITranslate;
|
|
||||||
import com.nflg.mobilebroken.common.pojo.ApiResult;
|
|
||||||
import com.nflg.mobilebroken.common.pojo.request.TranslateWordRequest;
|
|
||||||
import org.springframework.web.bind.annotation.PostMapping;
|
|
||||||
import org.springframework.web.bind.annotation.RequestBody;
|
|
||||||
import org.springframework.web.bind.annotation.RequestMapping;
|
|
||||||
import org.springframework.web.bind.annotation.RestController;
|
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
|
||||||
import javax.validation.Valid;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 翻译相关
|
|
||||||
*/
|
|
||||||
@RestController
|
|
||||||
@RequestMapping("/translate")
|
|
||||||
public class TranslateController extends ControllerBase {
|
|
||||||
|
|
||||||
@Resource
|
|
||||||
private ITranslate translate;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 文字翻译
|
|
||||||
* @param request 请求参数
|
|
||||||
* @return 翻译结果
|
|
||||||
*/
|
|
||||||
@PostMapping("word")
|
|
||||||
public ApiResult<String> translateWord(@Valid @RequestBody TranslateWordRequest request) {
|
|
||||||
return ApiResult.success(translate.translateWord(request.getText(), "auto", request.getTargetLanguage(), "html"));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -0,0 +1,9 @@
|
||||||
|
import org.junit.jupiter.api.Test;
|
||||||
|
|
||||||
|
public class NTest {
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void test1() {
|
||||||
|
System.out.println(String.format("%07d", Integer.parseInt("0000001") + 1));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -25,6 +25,11 @@ public class GongfuDispatch implements Serializable {
|
||||||
|
|
||||||
private Long id;
|
private Long id;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 编码
|
||||||
|
*/
|
||||||
|
private String code;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 名称
|
* 名称
|
||||||
*/
|
*/
|
||||||
|
|
@ -70,10 +75,10 @@ public class GongfuDispatch implements Serializable {
|
||||||
*/
|
*/
|
||||||
private String planEndDate;
|
private String planEndDate;
|
||||||
|
|
||||||
/**
|
// /**
|
||||||
* 延期结束日期
|
// * 延期结束日期
|
||||||
*/
|
// */
|
||||||
private String delayEndDate;
|
// private String delayEndDate;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 地址
|
* 地址
|
||||||
|
|
|
||||||
|
|
@ -44,4 +44,6 @@ public interface TicketMapper extends BaseMapper<Ticket> {
|
||||||
IPage<AdminTicketVO> searchByFavouritesId(Integer userId, Integer favouritesId, Page<?> page);
|
IPage<AdminTicketVO> searchByFavouritesId(Integer userId, Integer favouritesId, Page<?> page);
|
||||||
|
|
||||||
TicketDTO getDto(Long id);
|
TicketDTO getDto(Long id);
|
||||||
|
|
||||||
|
TicketVO getById(Long id);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -18,4 +18,6 @@ public interface IGongfuDispatchService extends IService<GongfuDispatch> {
|
||||||
IPage<DispatchVO> search(DispatchSearchRequest request);
|
IPage<DispatchVO> search(DispatchSearchRequest request);
|
||||||
|
|
||||||
DispatchVO getInfo(Long id);
|
DispatchVO getInfo(Long id);
|
||||||
|
|
||||||
|
String getMaxCode();
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -59,4 +59,6 @@ public interface ITicketService extends IService<Ticket> {
|
||||||
boolean close(Ticket ticket);
|
boolean close(Ticket ticket);
|
||||||
|
|
||||||
TicketDTO getDto(Long id);
|
TicketDTO getDto(Long id);
|
||||||
|
|
||||||
|
TicketVO getFromView(Long ticketId);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -136,6 +136,7 @@ public class AdminUserServiceImpl extends ServiceImpl<AdminUserMapper, AdminUser
|
||||||
.eq(AdminUser::getIsDel, false)
|
.eq(AdminUser::getIsDel, false)
|
||||||
.eq(Objects.nonNull(request.getState()), AdminUser::getState, request.getState())
|
.eq(Objects.nonNull(request.getState()), AdminUser::getState, request.getState())
|
||||||
.eq(Objects.nonNull(request.getDepartmentId()), AdminUser::getDepartmentId, request.getDepartmentId())
|
.eq(Objects.nonNull(request.getDepartmentId()), AdminUser::getDepartmentId, request.getDepartmentId())
|
||||||
|
.eq(Objects.nonNull(request.getGongfuHandler()), AdminUser::isGongFuHandler, request.getGongfuHandler())
|
||||||
.like(StrUtil.isNotBlank(request.getLoginName()), AdminUser::getLoginName, request.getLoginName())
|
.like(StrUtil.isNotBlank(request.getLoginName()), AdminUser::getLoginName, request.getLoginName())
|
||||||
.like(StrUtil.isNotBlank(request.getUserName()), AdminUser::getUserName, request.getUserName())
|
.like(StrUtil.isNotBlank(request.getUserName()), AdminUser::getUserName, request.getUserName())
|
||||||
.orderByAsc(AdminUser::getState)
|
.orderByAsc(AdminUser::getState)
|
||||||
|
|
|
||||||
|
|
@ -276,6 +276,7 @@ public class AppUserServiceImpl extends ServiceImpl<AppUserMapper, AppUser> impl
|
||||||
return vos;
|
return vos;
|
||||||
} else {
|
} else {
|
||||||
AppUser user = getById(userId);
|
AppUser user = getById(userId);
|
||||||
|
if (user.getType() == 0) {
|
||||||
if (user.getIsPrimary()) {
|
if (user.getIsPrimary()) {
|
||||||
List<TBaseArea> datas = adminAreaService.lambdaQuery().eq(TBaseArea::getAreaState, 1).eq(TBaseArea::getParentAreaRowId, 0).list();
|
List<TBaseArea> datas = adminAreaService.lambdaQuery().eq(TBaseArea::getAreaState, 1).eq(TBaseArea::getParentAreaRowId, 0).list();
|
||||||
List<AreaSimpleVO> vos = datas.stream().map(d -> new AreaSimpleVO().setId(d.getId()).setName(d.getAreaName())).collect(Collectors.toList());
|
List<AreaSimpleVO> vos = datas.stream().map(d -> new AreaSimpleVO().setId(d.getId()).setName(d.getAreaName())).collect(Collectors.toList());
|
||||||
|
|
@ -288,6 +289,8 @@ public class AppUserServiceImpl extends ServiceImpl<AppUserMapper, AppUser> impl
|
||||||
return vos;
|
return vos;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
return Collections.emptyList();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
||||||
|
|
@ -10,6 +10,8 @@ import com.nflg.mobilebroken.repository.mapper.GongfuDispatchMapper;
|
||||||
import com.nflg.mobilebroken.repository.service.IGongfuDispatchService;
|
import com.nflg.mobilebroken.repository.service.IGongfuDispatchService;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
import java.util.Objects;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* <p>
|
* <p>
|
||||||
* 派工单 服务实现类
|
* 派工单 服务实现类
|
||||||
|
|
@ -29,4 +31,14 @@ public class GongfuDispatchServiceImpl extends ServiceImpl<GongfuDispatchMapper,
|
||||||
public DispatchVO getInfo(Long id) {
|
public DispatchVO getInfo(Long id) {
|
||||||
return baseMapper.getInfo(id);
|
return baseMapper.getInfo(id);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getMaxCode() {
|
||||||
|
GongfuDispatch dispatch = lambdaQuery().orderByDesc(GongfuDispatch::getId).last("limit 1").one();
|
||||||
|
if (Objects.isNull(dispatch)) {
|
||||||
|
return "1";
|
||||||
|
} else {
|
||||||
|
return dispatch.getCode();
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -15,6 +15,7 @@ import org.apache.ibatis.annotations.Param;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
|
import java.util.ArrayList;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
|
|
@ -24,7 +25,6 @@ import java.util.stream.Collectors;
|
||||||
* <p>
|
* <p>
|
||||||
* 客户管理 服务实现类
|
* 客户管理 服务实现类
|
||||||
* </p>
|
* </p>
|
||||||
*
|
|
||||||
* @author 代码生成器生成
|
* @author 代码生成器生成
|
||||||
* @since 2025
|
* @since 2025
|
||||||
*/
|
*/
|
||||||
|
|
@ -74,7 +74,7 @@ public class TBaseCustomerServiceImpl extends ServiceImpl<TBaseCustomerMapper, T
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<CompanySimpleVO> getSimpleCompanysFromAdmin(Integer userId) {
|
public List<CompanySimpleVO> getSimpleCompanysFromAdmin(Integer userId) {
|
||||||
List<TBaseCustomer> datas;
|
List<TBaseCustomer> datas = new ArrayList<>();
|
||||||
if (Objects.isNull(userId)) {
|
if (Objects.isNull(userId)) {
|
||||||
datas = lambdaQuery()
|
datas = lambdaQuery()
|
||||||
.eq(TBaseCustomer::getEnableState, 1)
|
.eq(TBaseCustomer::getEnableState, 1)
|
||||||
|
|
@ -83,6 +83,7 @@ public class TBaseCustomerServiceImpl extends ServiceImpl<TBaseCustomerMapper, T
|
||||||
} else {
|
} else {
|
||||||
AppUser appUser = appUserService.getById(userId);
|
AppUser appUser = appUserService.getById(userId);
|
||||||
VUtils.trueThrowBusinessError(Objects.isNull(appUser)).throwMessage("用户不存在");
|
VUtils.trueThrowBusinessError(Objects.isNull(appUser)).throwMessage("用户不存在");
|
||||||
|
if (appUser.getType() == 0) {
|
||||||
if (appUser.getIsPrimary()) {
|
if (appUser.getIsPrimary()) {
|
||||||
datas = lambdaQuery()
|
datas = lambdaQuery()
|
||||||
.eq(TBaseCustomer::getEnableState, 1)
|
.eq(TBaseCustomer::getEnableState, 1)
|
||||||
|
|
@ -96,6 +97,7 @@ public class TBaseCustomerServiceImpl extends ServiceImpl<TBaseCustomerMapper, T
|
||||||
.list();
|
.list();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
return datas.stream()
|
return datas.stream()
|
||||||
.map(d -> new CompanySimpleVO()
|
.map(d -> new CompanySimpleVO()
|
||||||
.setId(d.getId())
|
.setId(d.getId())
|
||||||
|
|
|
||||||
|
|
@ -365,7 +365,7 @@ public class TicketServiceImpl extends ServiceImpl<TicketMapper, Ticket> impleme
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<AdminUserSimpleVO> getTicketHandle(Long id) {
|
public List<AdminUserSimpleVO> getTicketHandle(Long id) {
|
||||||
Ticket ticket = lambdaQuery().select(Ticket::getHandle, Ticket::getId).eq(Ticket::getId, id).one();
|
TicketVO ticket = baseMapper.getById(id);
|
||||||
VUtils.trueThrowBusinessError(Objects.isNull(ticket)).throwMessage("未找到工单");
|
VUtils.trueThrowBusinessError(Objects.isNull(ticket)).throwMessage("未找到工单");
|
||||||
List<Integer> handles = StrUtil.split(ticket.getHandle(), ",")
|
List<Integer> handles = StrUtil.split(ticket.getHandle(), ",")
|
||||||
.stream()
|
.stream()
|
||||||
|
|
@ -432,4 +432,9 @@ public class TicketServiceImpl extends ServiceImpl<TicketMapper, Ticket> impleme
|
||||||
public TicketDTO getDto(Long id) {
|
public TicketDTO getDto(Long id) {
|
||||||
return baseMapper.getDto(id);
|
return baseMapper.getDto(id);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public TicketVO getFromView(Long ticketId) {
|
||||||
|
return baseMapper.getById(ticketId);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||||
import com.nflg.mobilebroken.common.constant.Constant;
|
import com.nflg.mobilebroken.common.constant.Constant;
|
||||||
import com.nflg.mobilebroken.common.constant.TicketState;
|
import com.nflg.mobilebroken.common.constant.TicketState;
|
||||||
|
import com.nflg.mobilebroken.common.pojo.dto.TicketDTO;
|
||||||
import com.nflg.mobilebroken.common.pojo.request.SolutionMeasuresSaveRequest;
|
import com.nflg.mobilebroken.common.pojo.request.SolutionMeasuresSaveRequest;
|
||||||
import com.nflg.mobilebroken.common.pojo.vo.SolutionMeasuresDataItemVO;
|
import com.nflg.mobilebroken.common.pojo.vo.SolutionMeasuresDataItemVO;
|
||||||
import com.nflg.mobilebroken.common.pojo.vo.SolutionMeasuresItemVO;
|
import com.nflg.mobilebroken.common.pojo.vo.SolutionMeasuresItemVO;
|
||||||
|
|
@ -28,7 +29,6 @@ import java.util.stream.Collectors;
|
||||||
* <p>
|
* <p>
|
||||||
* 服务实现类
|
* 服务实现类
|
||||||
* </p>
|
* </p>
|
||||||
*
|
|
||||||
* @author 代码生成器生成
|
* @author 代码生成器生成
|
||||||
* @since 2025
|
* @since 2025
|
||||||
*/
|
*/
|
||||||
|
|
@ -55,7 +55,7 @@ public class TicketSolutionServiceImpl extends ServiceImpl<TicketSolutionMapper,
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public SolutionMeasuresVO getSolutionMeasures(Long ticketId) {
|
public SolutionMeasuresVO getSolutionMeasures(Long ticketId) {
|
||||||
Ticket ticket = ticketService.getById(ticketId);
|
TicketDTO ticket = ticketService.getDto(ticketId);
|
||||||
VUtils.trueThrowBusinessError(Objects.isNull(ticket)).throwMessage("工单不存在");
|
VUtils.trueThrowBusinessError(Objects.isNull(ticket)).throwMessage("工单不存在");
|
||||||
List<DictionaryItem> initial = new ArrayList<>();
|
List<DictionaryItem> initial = new ArrayList<>();
|
||||||
if (Objects.equals(ticket.getState(), TicketState.Processing.getState()) || Objects.equals(ticket.getState(), TicketState.ProcessingCompleted.getState())) {
|
if (Objects.equals(ticket.getState(), TicketState.Processing.getState()) || Objects.equals(ticket.getState(), TicketState.ProcessingCompleted.getState())) {
|
||||||
|
|
@ -64,6 +64,7 @@ public class TicketSolutionServiceImpl extends ServiceImpl<TicketSolutionMapper,
|
||||||
List<TicketSolution> solutions = lambdaQuery().eq(TicketSolution::getTicketId, ticketId).orderByAsc(TicketSolution::getId).list();
|
List<TicketSolution> solutions = lambdaQuery().eq(TicketSolution::getTicketId, ticketId).orderByAsc(TicketSolution::getId).list();
|
||||||
Map<String, List<TicketSolution>> groupedSolutions = solutions.stream().collect(Collectors.groupingBy(TicketSolution::getDictionaryItemName, LinkedHashMap::new, Collectors.toList()));
|
Map<String, List<TicketSolution>> groupedSolutions = solutions.stream().collect(Collectors.groupingBy(TicketSolution::getDictionaryItemName, LinkedHashMap::new, Collectors.toList()));
|
||||||
SolutionMeasuresVO vo = new SolutionMeasuresVO();
|
SolutionMeasuresVO vo = new SolutionMeasuresVO();
|
||||||
|
if (ticket.getType() == 0) {
|
||||||
if (SaTokenAdminUtil.isLogin()) {
|
if (SaTokenAdminUtil.isLogin()) {
|
||||||
TicketSolutionAudit audit = ticketSolutionAuditService.getByTicketAndUser(Math.toIntExact(ticketId), AdminUserUtil.getUserId());
|
TicketSolutionAudit audit = ticketSolutionAuditService.getByTicketAndUser(Math.toIntExact(ticketId), AdminUserUtil.getUserId());
|
||||||
if (Objects.nonNull(audit)) {
|
if (Objects.nonNull(audit)) {
|
||||||
|
|
@ -71,6 +72,7 @@ public class TicketSolutionServiceImpl extends ServiceImpl<TicketSolutionMapper,
|
||||||
vo.setApproved(Objects.isNull(audit.getState()) ? null : Objects.equals(audit.getState(), 1));
|
vo.setApproved(Objects.isNull(audit.getState()) ? null : Objects.equals(audit.getState(), 1));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
List<SolutionMeasuresItemVO> items = new ArrayList<>();
|
List<SolutionMeasuresItemVO> items = new ArrayList<>();
|
||||||
if (CollectionUtil.isEmpty(groupedSolutions)) {
|
if (CollectionUtil.isEmpty(groupedSolutions)) {
|
||||||
items = initial.stream().map(it -> new SolutionMeasuresItemVO()
|
items = initial.stream().map(it -> new SolutionMeasuresItemVO()
|
||||||
|
|
@ -170,6 +172,7 @@ public class TicketSolutionServiceImpl extends ServiceImpl<TicketSolutionMapper,
|
||||||
}
|
}
|
||||||
ticketService.lambdaUpdate()
|
ticketService.lambdaUpdate()
|
||||||
.set(Ticket::getReason, request.getReason())
|
.set(Ticket::getReason, request.getReason())
|
||||||
|
.set(StrUtil.isNotBlank(request.getQuestion()), Ticket::getQuestion, request.getQuestion())
|
||||||
.set(Ticket::getAccidentLevel, request.getAccidentLevel())
|
.set(Ticket::getAccidentLevel, request.getAccidentLevel())
|
||||||
.eq(Ticket::getId, request.getTicketId())
|
.eq(Ticket::getId, request.getTicketId())
|
||||||
.update();
|
.update();
|
||||||
|
|
|
||||||
|
|
@ -121,7 +121,7 @@
|
||||||
,au.expire_time,IF(aua.id IS NOT NULL,0
|
,au.expire_time,IF(aua.id IS NOT NULL,0
|
||||||
,IF(CONVERT_TZ(NOW(), @@session.time_zone, '+00:00') < au.expire_time,1,2)) AS 'state',au.create_by
|
,IF(CONVERT_TZ(NOW(), @@session.time_zone, '+00:00') < au.expire_time,1,2)) AS 'state',au.create_by
|
||||||
,au.create_time,au.update_by,au.update_time,au.last_login_time,au.is_primary,au.company_id,au.phone,au.area_id
|
,au.create_time,au.update_by,au.update_time,au.last_login_time,au.is_primary,au.company_id,au.phone,au.area_id
|
||||||
,au.language_code,p.position_name AS 'title',au.title_id,au.type
|
,au.language_code,p.position_name AS 'title',au.title_id,au.type,au.customer_name
|
||||||
FROM app_user au
|
FROM app_user au
|
||||||
LEFT JOIN app_area aa ON au.area_id=aa.id
|
LEFT JOIN app_area aa ON au.area_id=aa.id
|
||||||
LEFT JOIN app_user_applyfor aua ON aua.user_id=au.id AND aua.state=0
|
LEFT JOIN app_user_applyfor aua ON aua.user_id=au.id AND aua.state=0
|
||||||
|
|
|
||||||
|
|
@ -41,13 +41,15 @@
|
||||||
)
|
)
|
||||||
</if>
|
</if>
|
||||||
</where>
|
</where>
|
||||||
|
ORDER BY da.state,da.id DESC
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
<select id="getInfo" resultType="com.nflg.mobilebroken.common.pojo.vo.DispatchVO">
|
<select id="getInfo" resultType="com.nflg.mobilebroken.common.pojo.vo.DispatchVO">
|
||||||
SELECT da.*,dv.customer_name,bc.agency_company_name as agent_name
|
SELECT da.*,dv.customer_name,bc.agency_company_name as agent_name,af.reason as "delayReason"
|
||||||
FROM gongfu_dispatch da
|
FROM gongfu_dispatch da
|
||||||
LEFT JOIN v_gongfu_device dv ON da.device_no=dv.device_no
|
LEFT JOIN v_gongfu_device dv ON da.device_no=dv.device_no
|
||||||
LEFT JOIN t_base_customer bc ON dv.agent_code=bc.agency_company_code
|
LEFT JOIN t_base_customer bc ON dv.agent_code=bc.agency_company_code
|
||||||
|
left join v_dispatch_applyfor af on da.id=af.ticket_id
|
||||||
where da.id = #{id}
|
where da.id = #{id}
|
||||||
</select>
|
</select>
|
||||||
</mapper>
|
</mapper>
|
||||||
|
|
|
||||||
|
|
@ -132,8 +132,8 @@
|
||||||
LEFT JOIN app_user u ON t.user_id=u.id
|
LEFT JOIN app_user u ON t.user_id=u.id
|
||||||
LEFT JOIN admin_user au ON t.user_id=au.id
|
LEFT JOIN admin_user au ON t.user_id=au.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 gongfu_ticket_follow tf ON t.id=tf.ticket_id AND tf.user_id=#{userId} AND tf.from=IF(#{from}='app',0,1)
|
LEFT JOIN ticket_follow tf ON t.id=tf.ticket_id AND tf.user_id=#{userId} AND tf.from=IF(#{from}='app',0,1)
|
||||||
LEFT JOIN gongfu_ticket_evaluate te ON t.id=te.ticket_id AND t.state=2
|
LEFT JOIN ticket_evaluate te ON t.id=te.ticket_id AND t.state=2
|
||||||
LEFT JOIN gongfu_device_part p ON t.component_id=p.id
|
LEFT JOIN gongfu_device_part p ON t.component_id=p.id
|
||||||
LEFT JOIN gongfu_device_part_language_data l ON p.id=l.source_id AND l.language_code=#{language}
|
LEFT JOIN gongfu_device_part_language_data l ON p.id=l.source_id AND l.language_code=#{language}
|
||||||
LEFT JOIN v_device vd ON t.device_no=vd.device_no
|
LEFT JOIN v_device vd ON t.device_no=vd.device_no
|
||||||
|
|
@ -153,20 +153,20 @@
|
||||||
|
|
||||||
<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,p.part_name AS 'component',t.question,t.reason
|
SELECT t.id,t.`no`,t.title,t.state,t.urgency,p.part_name AS 'component',t.question,t.reason
|
||||||
,IF(u.is_primary,fun_getPrimaryUserArea(u.company_id),'') AS 'areaName',IF(u.is_primary,'',a2.`name`) AS 'agentAreaName'
|
,a1.area_name AS 'areaName','' AS 'agentAreaName',d.customer_name AS 'customerName',d.agent_name AS 'agentName'
|
||||||
,d.customer_name AS 'customerName',d.agent_name AS 'agentName',IF(t.user_platform='admin',au.user_name,u.`name`) AS 'createBy',t.device_no AS 'deviceNo',t.use_time AS 'useTime'
|
,IF(t.user_platform='admin',au.user_name,u.`name`) AS 'createBy',t.device_no AS 'deviceNo',t.use_time AS 'useTime'
|
||||||
,t.create_time AS 'createTime',t.update_time AS 'completeTime',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',auc.user_name AS 'cqm'
|
,d.model_no AS 'equipmentModel',d.shipment_date AS 'shipmentDate',IF(tf.id IS NULL, false, true) AS 'followed'
|
||||||
,t.solve_time AS 'closeTime',auh.user_name AS 'currentHandle',dt.cqm_person_name AS 'cqms'
|
,auc.user_name AS 'cqm',t.solve_time AS 'closeTime',auh.user_name AS 'currentHandle',dt.cqm_person_name AS 'cqms'
|
||||||
,t.handle_name AS 'handle',t.description
|
,t.handle_name AS 'handle',t.description
|
||||||
FROM gongfu_ticket t
|
FROM gongfu_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 admin_user au ON t.user_id=au.id
|
LEFT JOIN admin_user au ON t.user_id=au.id
|
||||||
LEFT JOIN app_area a2 ON u.area_id=a2.id
|
LEFT JOIN t_base_area a1 ON u.area_id=a1.id
|
||||||
LEFT JOIN gongfu_device d ON t.device_no=d.device_no and d.data_valid_state=1
|
LEFT JOIN gongfu_device d ON t.device_no=d.device_no and d.data_valid_state=1
|
||||||
LEFT JOIN gongfu_device_type dt ON d.device_type=dt.device_type
|
LEFT JOIN gongfu_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 gongfu_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 auc ON t.cqm=auc.id
|
||||||
LEFT JOIN admin_user auh ON t.current_handle=auh.id
|
LEFT JOIN admin_user auh ON t.current_handle=auh.id
|
||||||
LEFT JOIN gongfu_device_part p ON t.component_id=p.id
|
LEFT JOIN gongfu_device_part p ON t.component_id=p.id
|
||||||
|
|
@ -176,20 +176,20 @@
|
||||||
|
|
||||||
<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,p.part_name AS 'component',t.question,t.reason
|
SELECT t.id,t.`no`,t.title,t.state,t.urgency,p.part_name AS 'component',t.question,t.reason
|
||||||
,IF(u.is_primary,fun_getPrimaryUserArea(u.company_id),'') AS 'areaName',IF(u.is_primary,'',a2.`name`) AS 'agentAreaName'
|
,a1.area_name AS 'areaName','' AS 'agentAreaName',d.customer_name AS 'customerName',d.agent_name AS 'agentName'
|
||||||
,d.customer_name AS 'customerName',d.agent_name AS 'agentName',IF(t.user_platform='admin',au.user_name,u.`name`) AS 'createBy',t.device_no AS 'deviceNo',t.use_time AS 'useTime'
|
,IF(t.user_platform='admin',au.user_name,u.`name`) AS 'createBy',t.device_no AS 'deviceNo',t.use_time AS 'useTime'
|
||||||
,t.create_time AS 'createTime',t.update_time AS 'completeTime',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',auc.user_name AS 'cqm'
|
,d.model_no AS 'equipmentModel',d.shipment_date AS 'shipmentDate',IF(tf.id IS NULL, false, true) AS 'followed'
|
||||||
,t.solve_time AS 'closeTime',auh.user_name AS 'currentHandle',dt.cqm_person_name AS 'cqms'
|
,auc.user_name AS 'cqm',t.solve_time AS 'closeTime',auh.user_name AS 'currentHandle',dt.cqm_person_name AS 'cqms'
|
||||||
,t.handle_name AS 'handle',t.description
|
,t.handle_name AS 'handle',t.description
|
||||||
FROM gongfu_ticket t
|
FROM gongfu_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 admin_user au ON t.user_id=au.id
|
LEFT JOIN admin_user au ON t.user_id=au.id
|
||||||
LEFT JOIN app_area a2 ON u.area_id=a2.id
|
LEFT JOIN t_base_area a1 ON u.area_id=a1.id
|
||||||
LEFT JOIN gongfu_device d ON t.device_no=d.device_no and d.data_valid_state=1
|
LEFT JOIN gongfu_device d ON t.device_no=d.device_no and d.data_valid_state=1
|
||||||
LEFT JOIN gongfu_device_type dt ON d.device_type=dt.device_type
|
LEFT JOIN gongfu_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 gongfu_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 auc ON t.cqm=auc.id
|
||||||
LEFT JOIN admin_user auh ON t.current_handle=auh.id
|
LEFT JOIN admin_user auh ON t.current_handle=auh.id
|
||||||
LEFT JOIN gongfu_device_part p ON t.component_id=p.id
|
LEFT JOIN gongfu_device_part p ON t.component_id=p.id
|
||||||
|
|
@ -199,8 +199,8 @@
|
||||||
|
|
||||||
<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,p.part_name AS 'component',t.question,t.reason
|
SELECT t.id,t.`no`,t.title,t.state,t.urgency,p.part_name AS 'component',t.question,t.reason
|
||||||
,IF(u.is_primary,fun_getPrimaryUserArea(u.company_id),'') AS 'areaName',IF(u.is_primary,'',a2.`name`) AS 'agentAreaName'
|
,a1.area_name AS 'areaName','' AS 'agentAreaName',d.customer_name AS 'customerName',d.agent_name AS 'agentName'
|
||||||
,d.customer_name AS 'customerName',d.agent_name AS 'agentName',IF(t.user_platform='admin',au.user_name,u.`name`) AS 'createBy',t.device_no AS 'deviceNo',t.use_time AS 'useTime'
|
,IF(t.user_platform='admin',au.user_name,u.`name`) AS 'createBy',t.device_no AS 'deviceNo',t.use_time AS 'useTime'
|
||||||
,t.create_time AS 'createTime',t.update_time AS 'completeTime',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',true AS 'followed',auc.user_name AS 'cqm'
|
,d.model_no AS 'equipmentModel',d.shipment_date AS 'shipmentDate',true AS 'followed',auc.user_name AS 'cqm'
|
||||||
,t.solve_time AS 'closeTime',auh.user_name AS 'currentHandle',dt.cqm_person_name AS 'cqms'
|
,t.solve_time AS 'closeTime',auh.user_name AS 'currentHandle',dt.cqm_person_name AS 'cqms'
|
||||||
|
|
@ -208,8 +208,8 @@
|
||||||
FROM gongfu_ticket t
|
FROM gongfu_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 admin_user au ON t.user_id=au.id
|
LEFT JOIN admin_user au ON t.user_id=au.id
|
||||||
LEFT JOIN app_area a2 ON u.area_id=a2.id
|
LEFT JOIN t_base_area a1 ON u.area_id=a1.id
|
||||||
INNER JOIN gongfu_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 gongfu_device d ON t.device_no=d.device_no and d.data_valid_state=1
|
LEFT JOIN gongfu_device d ON t.device_no=d.device_no and d.data_valid_state=1
|
||||||
LEFT JOIN gongfu_device_type dt ON d.device_type=dt.device_type
|
LEFT JOIN gongfu_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
|
||||||
|
|
@ -222,16 +222,16 @@
|
||||||
|
|
||||||
<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,p.part_name AS 'component',t.question,t.reason
|
SELECT t.id,t.`no`,t.title,t.state,t.urgency,p.part_name AS 'component',t.question,t.reason
|
||||||
,IF(u.is_primary,fun_getPrimaryUserArea(u.company_id),'') AS 'areaName',IF(u.is_primary,'',a2.`name`) AS 'agentAreaName'
|
,a1.area_name AS 'areaName','' AS 'agentAreaName',d.customer_name AS 'customerName',d.agent_name AS 'agentName'
|
||||||
,d.customer_name AS 'customerName',d.agent_name AS 'agentName',IF(t.user_platform='admin',au.user_name,u.`name`) AS 'createBy',t.device_no AS 'deviceNo',t.use_time AS 'useTime'
|
,IF(t.user_platform='admin',au.user_name,u.`name`) AS 'createBy',t.device_no AS 'deviceNo',t.use_time AS 'useTime'
|
||||||
,t.create_time AS 'createTime',t.update_time AS 'completeTime',di.name AS 'warrantyStatusDesc',true AS 'followed'
|
,t.create_time AS 'createTime',t.update_time AS 'completeTime',di.name AS 'warrantyStatusDesc',true AS 'followed'
|
||||||
,auc.user_name AS 'cqm',t.solve_time AS 'closeTime',auh.user_name AS 'currentHandle'
|
,auc.user_name AS 'cqm',t.solve_time AS 'closeTime',auh.user_name AS 'currentHandle'
|
||||||
,dt.cqm_person_name AS 'cqms',t.handle_name AS 'handle',t.description
|
,dt.cqm_person_name AS 'cqms',t.handle_name AS 'handle',t.description
|
||||||
FROM gongfu_ticket t
|
FROM gongfu_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 admin_user au ON t.user_id=au.id
|
LEFT JOIN admin_user au ON t.user_id=au.id
|
||||||
LEFT JOIN app_area a2 ON u.area_id=a2.id
|
LEFT JOIN t_base_area a1 ON u.area_id=a1.id
|
||||||
INNER JOIN gongfu_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 gongfu_device d ON t.device_no=d.device_no and d.data_valid_state=1
|
LEFT JOIN gongfu_device d ON t.device_no=d.device_no and d.data_valid_state=1
|
||||||
LEFT JOIN gongfu_device_type dt ON d.device_type=dt.device_type
|
LEFT JOIN gongfu_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
|
||||||
|
|
@ -244,7 +244,7 @@
|
||||||
|
|
||||||
<select id="getAdminFavorites" resultType="com.nflg.mobilebroken.common.pojo.vo.TicketVO">
|
<select id="getAdminFavorites" resultType="com.nflg.mobilebroken.common.pojo.vo.TicketVO">
|
||||||
SELECT t.id, t.no, t.title
|
SELECT t.id, t.no, t.title
|
||||||
FROM gongfu_ticket_follow tf
|
FROM ticket_follow tf
|
||||||
INNER JOIN gongfu_ticket t ON tf.ticket_id = t.id
|
INNER JOIN gongfu_ticket t ON tf.ticket_id = t.id
|
||||||
WHERE tf.`from` = 1
|
WHERE tf.`from` = 1
|
||||||
AND tf.user_id = #{userId} AND tf.from=IF(#{from}='app',0,1)
|
AND tf.user_id = #{userId} AND tf.from=IF(#{from}='app',0,1)
|
||||||
|
|
@ -254,8 +254,8 @@
|
||||||
|
|
||||||
<select id="searchByFavouritesId" resultType="com.nflg.mobilebroken.common.pojo.vo.AdminTicketVO">
|
<select id="searchByFavouritesId" resultType="com.nflg.mobilebroken.common.pojo.vo.AdminTicketVO">
|
||||||
SELECT t.id,t.`no`,t.title,t.state,t.urgency,p.part_name AS 'component',t.question,t.reason
|
SELECT t.id,t.`no`,t.title,t.state,t.urgency,p.part_name AS 'component',t.question,t.reason
|
||||||
,IF(u.is_primary,fun_getPrimaryUserArea(u.company_id),'') AS 'areaName',IF(u.is_primary,'',a2.`name`) AS 'agentAreaName'
|
,a1.area_name AS 'areaName','' AS 'agentAreaName',d.customer_name AS 'customerName',d.agent_name AS 'agentName'
|
||||||
,d.customer_name AS 'customerName',d.agent_name AS 'agentName',IF(t.user_platform='admin',au.user_name,u.`name`) AS 'createBy',t.device_no AS 'deviceNo',t.use_time AS 'useTime'
|
,IF(t.user_platform='admin',au.user_name,u.`name`) AS 'createBy',t.device_no AS 'deviceNo',t.use_time AS 'useTime'
|
||||||
,t.create_time AS 'createTime',t.update_time AS 'completeTime',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',true AS 'followed',auc.user_name AS 'cqm'
|
,d.model_no AS 'equipmentModel',d.shipment_date AS 'shipmentDate',true AS 'followed',auc.user_name AS 'cqm'
|
||||||
,t.solve_time AS 'closeTime',auh.user_name AS 'currentHandle',dt.cqm_person_name AS 'cqms'
|
,t.solve_time AS 'closeTime',auh.user_name AS 'currentHandle',dt.cqm_person_name AS 'cqms'
|
||||||
|
|
@ -263,8 +263,8 @@
|
||||||
FROM gongfu_ticket t
|
FROM gongfu_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 admin_user au ON t.user_id=au.id
|
LEFT JOIN admin_user au ON t.user_id=au.id
|
||||||
LEFT JOIN app_area a2 ON u.area_id=a2.id
|
LEFT JOIN t_base_area a1 ON u.area_id=a1.id
|
||||||
INNER JOIN gongfu_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
|
||||||
<if test="favouritesId>0">
|
<if test="favouritesId>0">
|
||||||
AND tf.favorites_id=#{favouritesId}
|
AND tf.favorites_id=#{favouritesId}
|
||||||
</if>
|
</if>
|
||||||
|
|
|
||||||
|
|
@ -285,4 +285,8 @@
|
||||||
from v_all_ticket
|
from v_all_ticket
|
||||||
where id = #{id}
|
where id = #{id}
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
|
<select id="getById" resultType="com.nflg.mobilebroken.common.pojo.vo.TicketVO">
|
||||||
|
select * from v_all_ticket where id = #{id}
|
||||||
|
</select>
|
||||||
</mapper>
|
</mapper>
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue