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")
|
||||
@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);
|
||||
return ApiResult.success();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -90,10 +90,7 @@ public class PositionController extends ControllerBase {
|
|||
}
|
||||
}
|
||||
result.setLanguage(positionLanguageResult);
|
||||
result.setTicketManage(ent.getTicketManage());
|
||||
return ApiResult.success(result);
|
||||
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -40,10 +40,6 @@ public class PositionDetailDTO {
|
|||
*/
|
||||
private Boolean gongFuTicketManage;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 职位语言
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -33,6 +33,11 @@ public class PositionDetailVO {
|
|||
*/
|
||||
private Boolean ticketManage;
|
||||
|
||||
/**
|
||||
* 是否授予工服工单权限
|
||||
*/
|
||||
private Boolean gongFuTicketManage;
|
||||
|
||||
/**
|
||||
* 创建人-账号
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -109,6 +109,9 @@ public class TicketController extends ControllerBase {
|
|||
@Resource
|
||||
private ITicketSolutionAuditService ticketSolutionAuditService;
|
||||
|
||||
@Resource
|
||||
private ITBaseAreaService baseAreaService;
|
||||
|
||||
/**
|
||||
* 搜索设备
|
||||
* @param request 搜索条件
|
||||
|
|
@ -236,15 +239,24 @@ public class TicketController extends ControllerBase {
|
|||
AppUser user = appUserService.getById(ticket.getUserId());
|
||||
userName = user.getName();
|
||||
userAvatar = user.getAvatar();
|
||||
if (user.getIsPrimary()) {
|
||||
areaName = StrUtil.join(",", customerService.getAreas(Arrays.stream(user.getCompanyId().split(",")).map(Integer::parseInt).collect(Collectors.toList())));
|
||||
} else if (Objects.nonNull(user.getAreaId())) {
|
||||
AppArea area = appAreaService.getById(user.getAreaId());
|
||||
if (Objects.nonNull(area)) {
|
||||
areaName = area.getName();
|
||||
if (user.getType() == 0) {
|
||||
if (user.getIsPrimary()) {
|
||||
areaName = StrUtil.join(",", customerService.getAreas(Arrays.stream(user.getCompanyId().split(",")).map(Integer::parseInt).collect(Collectors.toList())));
|
||||
} else if (Objects.nonNull(user.getAreaId())) {
|
||||
AppArea area = appAreaService.getById(user.getAreaId());
|
||||
if (Objects.nonNull(area)) {
|
||||
areaName = area.getName();
|
||||
}
|
||||
}
|
||||
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();
|
||||
}
|
||||
}
|
||||
}
|
||||
companys = customerService.listByIds(Arrays.stream(user.getCompanyId().split(",")).map(Integer::parseInt).collect(Collectors.toList()));
|
||||
} else {
|
||||
AdminUser adminUser = adminUserService.getById(ticket.getUserId());
|
||||
userName = adminUser.getUserName();
|
||||
|
|
@ -388,7 +400,7 @@ public class TicketController extends ControllerBase {
|
|||
**/
|
||||
@PostMapping("addChatMessage")
|
||||
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(Byte.compare(ticket.getState(), TicketState.Processing.getState()) > 1)
|
||||
.throwMessage("当前工单状态不允许发送消息");
|
||||
|
|
@ -417,7 +429,7 @@ public class TicketController extends ControllerBase {
|
|||
}
|
||||
ticketChatService.addMessage(request.getTicketId(), message);
|
||||
//推送消息
|
||||
ssePushService.sendTicketMessageToAdmin(Long.valueOf(ticket.getId()), message);
|
||||
ssePushService.sendTicketMessageToAdmin(ticket.getId(), message);
|
||||
ticketEventPublisher.publishTicketReplyEvent(ticket, MultilingualUtil.getLanguage(), MultilingualUtil.getZone());
|
||||
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.MessageSubType;
|
||||
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.AdminUser;
|
||||
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.IAdminUserService;
|
||||
import com.nflg.mobilebroken.repository.service.IAppUserService;
|
||||
|
|
@ -32,7 +32,7 @@ import java.util.stream.Collectors;
|
|||
public class TicketReplyEvent extends ApplicationEvent implements ApplicationContextAware {
|
||||
|
||||
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 zone;
|
||||
private IDictionaryItemTranslateService dictionaryItemTranslateService;
|
||||
|
|
@ -41,7 +41,7 @@ public class TicketReplyEvent extends ApplicationEvent implements ApplicationCon
|
|||
private IAdminUserService adminUserService;
|
||||
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);
|
||||
this.ticket = ticket;
|
||||
this.language = language;
|
||||
|
|
@ -73,7 +73,7 @@ public class TicketReplyEvent extends ApplicationEvent implements ApplicationCon
|
|||
.setNo(ticket.getNo())
|
||||
.setTitle(ticket.getTitle())
|
||||
.setUserId(c.getId())
|
||||
.setSourceId(Long.valueOf(ticket.getId()))
|
||||
.setSourceId(ticket.getId())
|
||||
.setSource(0)
|
||||
.setType(MessageType.WorkOrderAssignment.getState())
|
||||
.setSubType(MessageSubType.TicketNewMessage.getState())
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
package com.nflg.mobilebroken.cfs.publisher;
|
||||
|
||||
import com.nflg.mobilebroken.cfs.event.*;
|
||||
import com.nflg.mobilebroken.common.pojo.vo.TicketVO;
|
||||
import com.nflg.mobilebroken.repository.entity.Ticket;
|
||||
import org.springframework.context.ApplicationContext;
|
||||
import org.springframework.context.ApplicationEventPublisher;
|
||||
|
|
@ -23,7 +24,7 @@ public class TicketEventPublisher {
|
|||
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);
|
||||
event.setApplicationContext(applicationContext);
|
||||
eventPublisher.publishEvent(event);
|
||||
|
|
|
|||
|
|
@ -16,7 +16,7 @@ public class FileSearchRequest extends PageRequest {
|
|||
private Integer source;
|
||||
|
||||
//文件来源id
|
||||
private Integer sourceId;
|
||||
private Long sourceId;
|
||||
|
||||
//文件类型
|
||||
private String fileType;
|
||||
|
|
|
|||
|
|
@ -6,7 +6,6 @@ import lombok.Data;
|
|||
|
||||
import javax.validation.constraints.Email;
|
||||
import javax.validation.constraints.NotBlank;
|
||||
import javax.validation.constraints.NotEmpty;
|
||||
import java.util.List;
|
||||
|
||||
@Data
|
||||
|
|
@ -22,11 +21,9 @@ public class PrimaryAppUserAddRequest {
|
|||
private String userName;
|
||||
|
||||
//公司id列表
|
||||
@NotEmpty
|
||||
private List<Integer> companyIds;
|
||||
|
||||
//销售人员姓名
|
||||
@NotBlank
|
||||
private String salesUserName;
|
||||
|
||||
//邮箱
|
||||
|
|
|
|||
|
|
@ -18,4 +18,7 @@ public class SearchAccountRequest extends PageRequest {
|
|||
|
||||
// 状态
|
||||
private Byte state;
|
||||
|
||||
// 是否是工服工单处理人
|
||||
private Boolean gongfuHandler;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -24,6 +24,9 @@ public class SolutionMeasuresSaveRequest {
|
|||
@NotNull
|
||||
private Byte accidentLevel;
|
||||
|
||||
//问题类型
|
||||
private String question;
|
||||
|
||||
/**
|
||||
* 根本原因
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -14,5 +14,5 @@ public class ZipDownloadRequest {
|
|||
* 文件id列表
|
||||
*/
|
||||
@NotEmpty
|
||||
private List<Integer> fileIds;
|
||||
private List<Long> fileIds;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -111,6 +111,11 @@ public class AppUserForAdminVO {
|
|||
*/
|
||||
private Integer type;
|
||||
|
||||
/**
|
||||
* 客户名称,仅终端用户使用
|
||||
*/
|
||||
private String customerName;
|
||||
|
||||
//下级账号
|
||||
private List<AppUserForAdminVO> children=new ArrayList<>();
|
||||
|
||||
|
|
|
|||
|
|
@ -13,6 +13,11 @@ public class DispatchVO {
|
|||
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 编码
|
||||
*/
|
||||
private String code;
|
||||
|
||||
/**
|
||||
* 个案编号
|
||||
*/
|
||||
|
|
@ -87,10 +92,10 @@ public class DispatchVO {
|
|||
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 String sourceDesc;
|
||||
|
||||
//关联ID
|
||||
public String sourceId;
|
||||
public Long sourceId;
|
||||
|
||||
//文件路径
|
||||
public String url;
|
||||
|
||||
//上传时间
|
||||
public LocalDateTime createTime;
|
||||
|
||||
//上传人
|
||||
public String createBy;
|
||||
|
||||
private Integer id;
|
||||
|
||||
// 文件名
|
||||
private String fileName;
|
||||
|
||||
// 文件类型
|
||||
private String fileType;
|
||||
|
||||
|
|
|
|||
|
|
@ -60,4 +60,14 @@ public class TicketVO {
|
|||
|
||||
//是否已关注
|
||||
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.vo.AnonymousTicketInfoVO;
|
||||
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 javax.annotation.Resource;
|
||||
|
|
@ -20,7 +20,7 @@ import javax.validation.constraints.NotNull;
|
|||
public class AnonymousTicketController {
|
||||
|
||||
@Resource
|
||||
private IAnonymousTicketService anonymousTicketService;
|
||||
private IGongfuAnonymousTicketService anonymousTicketService;
|
||||
|
||||
/**
|
||||
* 搜索匿名工单
|
||||
|
|
|
|||
|
|
@ -80,12 +80,18 @@ public class DispatchController extends ControllerBase {
|
|||
.setRemark(request.getRemark())
|
||||
.setCreateById(AdminUserUtil.getUserId())
|
||||
.setCreateBy(AdminUserUtil.getUserName())
|
||||
.setCreateTime(LocalDateTime.now());
|
||||
.setCreateTime(LocalDateTime.now())
|
||||
.setCode(genCode(dispatchService.getMaxCode()));
|
||||
dispatchService.save(dispatch);
|
||||
dispatchEventPublisher.publishDispatchCreateEvent(dispatch);
|
||||
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("已经审核过了");
|
||||
GongfuDispatch dispatch = dispatchService.getById(applyfor.getTicketId());
|
||||
VUtils.trueThrowBusinessError(Objects.isNull(dispatch)).throwMessage("派工单不存在");
|
||||
VUtils.trueThrowBusinessError(dispatch.getState() == 2).throwMessage("派工单已完成不能延期");
|
||||
VUtils.trueThrowBusinessError(!Objects.equals(dispatch.getCreateById(), AdminUserUtil.getUserId()))
|
||||
.throwMessage("你不是派工单创建人,无法审核延期申请");
|
||||
applyfor.setAuditState(request.getPass() ? 1 : 2);
|
||||
|
|
@ -243,8 +250,11 @@ public class DispatchController extends ControllerBase {
|
|||
applyfor.setAuditMsg(request.getReason());
|
||||
dispatchApplyforService.updateById(applyfor);
|
||||
if (request.getPass()) {
|
||||
dispatch.setDelayEndDate(applyfor.getEndDate());
|
||||
dispatch.setPlanStartDate(applyfor.getStartDate());
|
||||
dispatch.setPlanEndDate(applyfor.getEndDate());
|
||||
dispatch.setIsDelay(true);
|
||||
String now = DateTimeUtil.format(LocalDate.now(), "yyyy-MM-dd");
|
||||
dispatch.setState(dispatch.getPlanStartDate().compareTo(now) >= 0 ? 1 : 0);
|
||||
dispatchService.updateById(dispatch);
|
||||
}
|
||||
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 String code;
|
||||
|
||||
/**
|
||||
* 名称
|
||||
*/
|
||||
|
|
@ -70,10 +75,10 @@ public class GongfuDispatch implements Serializable {
|
|||
*/
|
||||
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);
|
||||
|
||||
TicketDTO getDto(Long id);
|
||||
|
||||
TicketVO getById(Long id);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -18,4 +18,6 @@ public interface IGongfuDispatchService extends IService<GongfuDispatch> {
|
|||
IPage<DispatchVO> search(DispatchSearchRequest request);
|
||||
|
||||
DispatchVO getInfo(Long id);
|
||||
|
||||
String getMaxCode();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -59,4 +59,6 @@ public interface ITicketService extends IService<Ticket> {
|
|||
boolean close(Ticket ticket);
|
||||
|
||||
TicketDTO getDto(Long id);
|
||||
|
||||
TicketVO getFromView(Long ticketId);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -136,6 +136,7 @@ public class AdminUserServiceImpl extends ServiceImpl<AdminUserMapper, AdminUser
|
|||
.eq(AdminUser::getIsDel, false)
|
||||
.eq(Objects.nonNull(request.getState()), AdminUser::getState, request.getState())
|
||||
.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.getUserName()), AdminUser::getUserName, request.getUserName())
|
||||
.orderByAsc(AdminUser::getState)
|
||||
|
|
|
|||
|
|
@ -276,17 +276,20 @@ public class AppUserServiceImpl extends ServiceImpl<AppUserMapper, AppUser> impl
|
|||
return vos;
|
||||
} else {
|
||||
AppUser user = getById(userId);
|
||||
if (user.getIsPrimary()) {
|
||||
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());
|
||||
vos.forEach(this::bindChildren);
|
||||
return vos;
|
||||
} else {
|
||||
List<AppArea> datas = appAreaService.lambdaQuery().eq(AppArea::getEnable, true).eq(AppArea::getParentId, 0).list();
|
||||
List<AreaSimpleVO> vos = datas.stream().map(d -> new AreaSimpleVO().setId(d.getId()).setName(d.getName())).collect(Collectors.toList());
|
||||
vos.forEach(this::bindChildren1);
|
||||
return vos;
|
||||
if (user.getType() == 0) {
|
||||
if (user.getIsPrimary()) {
|
||||
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());
|
||||
vos.forEach(this::bindChildren);
|
||||
return vos;
|
||||
} else {
|
||||
List<AppArea> datas = appAreaService.lambdaQuery().eq(AppArea::getEnable, true).eq(AppArea::getParentId, 0).list();
|
||||
List<AreaSimpleVO> vos = datas.stream().map(d -> new AreaSimpleVO().setId(d.getId()).setName(d.getName())).collect(Collectors.toList());
|
||||
vos.forEach(this::bindChildren1);
|
||||
return vos;
|
||||
}
|
||||
}
|
||||
return Collections.emptyList();
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -10,6 +10,8 @@ import com.nflg.mobilebroken.repository.mapper.GongfuDispatchMapper;
|
|||
import com.nflg.mobilebroken.repository.service.IGongfuDispatchService;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.Objects;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 派工单 服务实现类
|
||||
|
|
@ -29,4 +31,14 @@ public class GongfuDispatchServiceImpl extends ServiceImpl<GongfuDispatchMapper,
|
|||
public DispatchVO getInfo(Long 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 javax.annotation.Resource;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
|
|
@ -24,7 +25,6 @@ import java.util.stream.Collectors;
|
|||
* <p>
|
||||
* 客户管理 服务实现类
|
||||
* </p>
|
||||
*
|
||||
* @author 代码生成器生成
|
||||
* @since 2025
|
||||
*/
|
||||
|
|
@ -34,13 +34,13 @@ public class TBaseCustomerServiceImpl extends ServiceImpl<TBaseCustomerMapper, T
|
|||
@Resource
|
||||
private IAppUserService appUserService;
|
||||
|
||||
public Page<TBaseCustomer> getList(@Param("page")Page<PageBaseQuery> page, @Param("query") PageBaseQuery query){
|
||||
return this.getBaseMapper().getList(page, query);
|
||||
}
|
||||
public Page<TBaseCustomer> getList(@Param("page") Page<PageBaseQuery> page, @Param("query") PageBaseQuery query) {
|
||||
return this.getBaseMapper().getList(page, query);
|
||||
}
|
||||
|
||||
public void delByIds(@Param("ids") List<Long> ids ,@Param("userNo")String userNo , @Param("userName") String userName){
|
||||
this.getBaseMapper().delByIds(ids,userNo,userName);
|
||||
}
|
||||
public void delByIds(@Param("ids") List<Long> ids, @Param("userNo") String userNo, @Param("userName") String userName) {
|
||||
this.getBaseMapper().delByIds(ids, userNo, userName);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<CompanySimpleVO> getSimpleCompanys(Integer userId) {
|
||||
|
|
@ -74,26 +74,28 @@ public class TBaseCustomerServiceImpl extends ServiceImpl<TBaseCustomerMapper, T
|
|||
|
||||
@Override
|
||||
public List<CompanySimpleVO> getSimpleCompanysFromAdmin(Integer userId) {
|
||||
List<TBaseCustomer> datas;
|
||||
if (Objects.isNull(userId)){
|
||||
List<TBaseCustomer> datas = new ArrayList<>();
|
||||
if (Objects.isNull(userId)) {
|
||||
datas = lambdaQuery()
|
||||
.eq(TBaseCustomer::getEnableState, 1)
|
||||
.eq(TBaseCustomer::getDelIs, 0)
|
||||
.list();
|
||||
}else {
|
||||
} else {
|
||||
AppUser appUser = appUserService.getById(userId);
|
||||
VUtils.trueThrowBusinessError(Objects.isNull(appUser)).throwMessage("用户不存在");
|
||||
if (appUser.getIsPrimary()){
|
||||
datas = lambdaQuery()
|
||||
.eq(TBaseCustomer::getEnableState, 1)
|
||||
.eq(TBaseCustomer::getDelIs, 0)
|
||||
.list();
|
||||
}else {
|
||||
datas = lambdaQuery()
|
||||
.eq(TBaseCustomer::getEnableState, 1)
|
||||
.eq(TBaseCustomer::getDelIs, 0)
|
||||
.in(TBaseCustomer::getId, StrUtil.split(appUser.getCompanyId(), ",").stream().map(Integer::parseInt).collect(Collectors.toList()))
|
||||
.list();
|
||||
if (appUser.getType() == 0) {
|
||||
if (appUser.getIsPrimary()) {
|
||||
datas = lambdaQuery()
|
||||
.eq(TBaseCustomer::getEnableState, 1)
|
||||
.eq(TBaseCustomer::getDelIs, 0)
|
||||
.list();
|
||||
} else {
|
||||
datas = lambdaQuery()
|
||||
.eq(TBaseCustomer::getEnableState, 1)
|
||||
.eq(TBaseCustomer::getDelIs, 0)
|
||||
.in(TBaseCustomer::getId, StrUtil.split(appUser.getCompanyId(), ",").stream().map(Integer::parseInt).collect(Collectors.toList()))
|
||||
.list();
|
||||
}
|
||||
}
|
||||
}
|
||||
return datas.stream()
|
||||
|
|
|
|||
|
|
@ -365,7 +365,7 @@ public class TicketServiceImpl extends ServiceImpl<TicketMapper, Ticket> impleme
|
|||
|
||||
@Override
|
||||
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("未找到工单");
|
||||
List<Integer> handles = StrUtil.split(ticket.getHandle(), ",")
|
||||
.stream()
|
||||
|
|
@ -432,4 +432,9 @@ public class TicketServiceImpl extends ServiceImpl<TicketMapper, Ticket> impleme
|
|||
public TicketDTO getDto(Long 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.nflg.mobilebroken.common.constant.Constant;
|
||||
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.vo.SolutionMeasuresDataItemVO;
|
||||
import com.nflg.mobilebroken.common.pojo.vo.SolutionMeasuresItemVO;
|
||||
|
|
@ -28,7 +29,6 @@ import java.util.stream.Collectors;
|
|||
* <p>
|
||||
* 服务实现类
|
||||
* </p>
|
||||
*
|
||||
* @author 代码生成器生成
|
||||
* @since 2025
|
||||
*/
|
||||
|
|
@ -55,31 +55,33 @@ public class TicketSolutionServiceImpl extends ServiceImpl<TicketSolutionMapper,
|
|||
|
||||
@Override
|
||||
public SolutionMeasuresVO getSolutionMeasures(Long ticketId) {
|
||||
Ticket ticket = ticketService.getById(ticketId);
|
||||
TicketDTO ticket = ticketService.getDto(ticketId);
|
||||
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())) {
|
||||
initial = dictionaryItemService.getListByDictionaryCode(Constant.DICTIONARY_SOLUTION_MEASURES,Constant.DEFAULT_LANGUAGE_CODE);
|
||||
initial = dictionaryItemService.getListByDictionaryCode(Constant.DICTIONARY_SOLUTION_MEASURES, Constant.DEFAULT_LANGUAGE_CODE);
|
||||
}
|
||||
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()));
|
||||
SolutionMeasuresVO vo=new SolutionMeasuresVO();
|
||||
if (SaTokenAdminUtil.isLogin()) {
|
||||
TicketSolutionAudit audit = ticketSolutionAuditService.getByTicketAndUser(Math.toIntExact(ticketId), AdminUserUtil.getUserId());
|
||||
if (Objects.nonNull(audit)) {
|
||||
vo.setInAudit(true);
|
||||
vo.setApproved(Objects.isNull(audit.getState()) ? null : Objects.equals(audit.getState(), 1));
|
||||
SolutionMeasuresVO vo = new SolutionMeasuresVO();
|
||||
if (ticket.getType() == 0) {
|
||||
if (SaTokenAdminUtil.isLogin()) {
|
||||
TicketSolutionAudit audit = ticketSolutionAuditService.getByTicketAndUser(Math.toIntExact(ticketId), AdminUserUtil.getUserId());
|
||||
if (Objects.nonNull(audit)) {
|
||||
vo.setInAudit(true);
|
||||
vo.setApproved(Objects.isNull(audit.getState()) ? null : Objects.equals(audit.getState(), 1));
|
||||
}
|
||||
}
|
||||
}
|
||||
List<SolutionMeasuresItemVO> items = new ArrayList<>();
|
||||
if (CollectionUtil.isEmpty(groupedSolutions)) {
|
||||
items= initial.stream().map(it -> new SolutionMeasuresItemVO()
|
||||
items = initial.stream().map(it -> new SolutionMeasuresItemVO()
|
||||
.setId(it.getId())
|
||||
.setName(it.getName())
|
||||
.setItems(Collections.emptyList()))
|
||||
.collect(Collectors.toList());
|
||||
} else if (CollectionUtil.isEmpty(initial)) {
|
||||
items= groupedSolutions.entrySet().stream().map(ks -> new SolutionMeasuresItemVO()
|
||||
items = groupedSolutions.entrySet().stream().map(ks -> new SolutionMeasuresItemVO()
|
||||
.setName(ks.getKey())
|
||||
.setItems(ks.getValue().stream().map(v -> new SolutionMeasuresDataItemVO()
|
||||
.setId(Long.valueOf(v.getId()))
|
||||
|
|
@ -91,7 +93,7 @@ public class TicketSolutionServiceImpl extends ServiceImpl<TicketSolutionMapper,
|
|||
.setCreateUserId(v.getCreateUserId())).collect(Collectors.toList())
|
||||
)).collect(Collectors.toList());
|
||||
} else {
|
||||
for (DictionaryItem it : initial){
|
||||
for (DictionaryItem it : initial) {
|
||||
List<TicketSolution> values = groupedSolutions.get(it.getName());
|
||||
if (CollectionUtil.isEmpty(values)) {
|
||||
items.add(new SolutionMeasuresItemVO().setId(it.getId()).setName(it.getName()).setItems(Collections.emptyList()));
|
||||
|
|
@ -119,7 +121,7 @@ public class TicketSolutionServiceImpl extends ServiceImpl<TicketSolutionMapper,
|
|||
@Transactional
|
||||
@Override
|
||||
public Ticket saveSolutionMeasures(SolutionMeasuresSaveRequest request) {
|
||||
Ticket ticket=ticketService.getById(request.getTicketId());
|
||||
Ticket ticket = ticketService.getById(request.getTicketId());
|
||||
VUtils.trueThrowBusinessError(Objects.isNull(ticket)).throwMessage("工单不存在");
|
||||
VUtils.trueThrowBusinessError(!Objects.equals(ticket.getState(), TicketState.Processing.getState())
|
||||
&& !Objects.equals(ticket.getState(), TicketState.ProcessingCompleted.getState()))
|
||||
|
|
@ -128,16 +130,16 @@ public class TicketSolutionServiceImpl extends ServiceImpl<TicketSolutionMapper,
|
|||
&& !ticketSolutionAuditService.canUpdate(Math.toIntExact(request.getTicketId())))
|
||||
.throwMessage("部门主管审核中,不允许修改解决方案");
|
||||
Integer userId = AdminUserUtil.getUserId();
|
||||
List<Integer> cqmIds=adminUserService.getCQMIds();
|
||||
List<Integer> handleIds= StrUtil.split(ticket.getHandle(),",").stream().map(Integer::parseInt).collect(Collectors.toList());
|
||||
List<Integer> cqmIds = adminUserService.getCQMIds();
|
||||
List<Integer> handleIds = StrUtil.split(ticket.getHandle(), ",").stream().map(Integer::parseInt).collect(Collectors.toList());
|
||||
VUtils.trueThrowBusinessError(cqmIds.stream().noneMatch(uid -> Objects.equals(uid, userId))
|
||||
&& handleIds.stream().noneMatch(uid -> Objects.equals(uid, userId)))
|
||||
.throwMessage("无权修改解决方案");
|
||||
List<TicketSolution> forAdd=new ArrayList<>();
|
||||
List<TicketSolution> forUpdate=new ArrayList<>();
|
||||
&& handleIds.stream().noneMatch(uid -> Objects.equals(uid, userId)))
|
||||
.throwMessage("无权修改解决方案");
|
||||
List<TicketSolution> forAdd = new ArrayList<>();
|
||||
List<TicketSolution> forUpdate = new ArrayList<>();
|
||||
for (SolutionMeasuresItemVO solutionMeasuresItemVO : request.getSolutionMeasures()) {
|
||||
for (SolutionMeasuresDataItemVO solutionMeasuresDataItemVO : solutionMeasuresItemVO.getItems()){
|
||||
TicketSolution solution=new TicketSolution()
|
||||
for (SolutionMeasuresDataItemVO solutionMeasuresDataItemVO : solutionMeasuresItemVO.getItems()) {
|
||||
TicketSolution solution = new TicketSolution()
|
||||
.setTicketId(request.getTicketId())
|
||||
.setDictionaryItemId(solutionMeasuresItemVO.getId())
|
||||
.setDictionaryItemName(solutionMeasuresItemVO.getName())
|
||||
|
|
@ -170,6 +172,7 @@ public class TicketSolutionServiceImpl extends ServiceImpl<TicketSolutionMapper,
|
|||
}
|
||||
ticketService.lambdaUpdate()
|
||||
.set(Ticket::getReason, request.getReason())
|
||||
.set(StrUtil.isNotBlank(request.getQuestion()), Ticket::getQuestion, request.getQuestion())
|
||||
.set(Ticket::getAccidentLevel, request.getAccidentLevel())
|
||||
.eq(Ticket::getId, request.getTicketId())
|
||||
.update();
|
||||
|
|
@ -215,26 +218,26 @@ public class TicketSolutionServiceImpl extends ServiceImpl<TicketSolutionMapper,
|
|||
.setScheduleDate(solutionMeasuresDataItemVO.getScheduleDate())
|
||||
.setConfirmedDate(solutionMeasuresDataItemVO.getConfirmedDate())
|
||||
.setRemark(solutionMeasuresDataItemVO.getRemark());
|
||||
if (Objects.isNull(solutionMeasuresDataItemVO.getId())){
|
||||
if (Objects.isNull(solutionMeasuresDataItemVO.getId())) {
|
||||
solution.setCreateUserId(userId)
|
||||
.setCreateTime(LocalDateTime.now());
|
||||
forAdd.add(solution);
|
||||
}else {
|
||||
} else {
|
||||
solution.setId(Math.toIntExact(solutionMeasuresDataItemVO.getId()));
|
||||
solution.setCreateUserId(solutionMeasuresDataItemVO.getCreateUserId());
|
||||
forUpdate.add(solution);
|
||||
}
|
||||
}
|
||||
}
|
||||
List<Integer> idForReserve=forUpdate.stream().map(TicketSolution::getId).collect(Collectors.toList());
|
||||
List<TicketSolution> solutions=lambdaQuery().eq(TicketSolution::getTicketId, request.getTicketId()).orderByAsc(TicketSolution::getId).list();
|
||||
if (!cqmIds.contains(userId)){
|
||||
List<TicketSolution> solutions1=solutions.stream().filter(s->idForReserve.contains(s.getId())).collect(Collectors.toList());
|
||||
List<Integer> idForReserve = forUpdate.stream().map(TicketSolution::getId).collect(Collectors.toList());
|
||||
List<TicketSolution> solutions = lambdaQuery().eq(TicketSolution::getTicketId, request.getTicketId()).orderByAsc(TicketSolution::getId).list();
|
||||
if (!cqmIds.contains(userId)) {
|
||||
List<TicketSolution> solutions1 = solutions.stream().filter(s -> idForReserve.contains(s.getId())).collect(Collectors.toList());
|
||||
solutions.removeAll(solutions1);
|
||||
VUtils.trueThrowBusinessError(solutions.stream().anyMatch(s->!Objects.equals(s.getCreateUserId(), userId)))
|
||||
VUtils.trueThrowBusinessError(solutions.stream().anyMatch(s -> !Objects.equals(s.getCreateUserId(), userId)))
|
||||
.throwMessage("不能删除他人创建的措施");
|
||||
solutions1.removeIf(s->Objects.equals(s.getCreateUserId(), userId));
|
||||
List<TicketSolution> ts=forUpdate.stream().filter(s->!Objects.equals(s.getCreateUserId(), userId)).sorted(Comparator.comparing(TicketSolution::getId)).collect(Collectors.toList());
|
||||
solutions1.removeIf(s -> Objects.equals(s.getCreateUserId(), userId));
|
||||
List<TicketSolution> ts = forUpdate.stream().filter(s -> !Objects.equals(s.getCreateUserId(), userId)).sorted(Comparator.comparing(TicketSolution::getId)).collect(Collectors.toList());
|
||||
VUtils.trueThrowBusinessError(!ts.equals(solutions1)).throwMessage("不能修改他人创建的措施");
|
||||
}
|
||||
ticketService.lambdaUpdate()
|
||||
|
|
@ -244,16 +247,16 @@ public class TicketSolutionServiceImpl extends ServiceImpl<TicketSolutionMapper,
|
|||
.set(Ticket::getSolveTime, LocalDateTime.now())
|
||||
.eq(Ticket::getId, request.getTicketId())
|
||||
.update();
|
||||
if(CollectionUtil.isNotEmpty(idForReserve)) {
|
||||
if (CollectionUtil.isNotEmpty(idForReserve)) {
|
||||
baseMapper.delete(new LambdaQueryWrapper<TicketSolution>()
|
||||
.eq(TicketSolution::getTicketId, request.getTicketId())
|
||||
.notIn(TicketSolution::getId, idForReserve)
|
||||
);
|
||||
}
|
||||
if (CollectionUtil.isNotEmpty(forAdd)){
|
||||
if (CollectionUtil.isNotEmpty(forAdd)) {
|
||||
saveBatch(forAdd);
|
||||
}
|
||||
if (CollectionUtil.isNotEmpty(forUpdate)){
|
||||
if (CollectionUtil.isNotEmpty(forUpdate)) {
|
||||
updateBatchById(forUpdate);
|
||||
}
|
||||
return ticket;
|
||||
|
|
|
|||
|
|
@ -121,7 +121,7 @@
|
|||
,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
|
||||
,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
|
||||
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
|
||||
|
|
|
|||
|
|
@ -41,13 +41,15 @@
|
|||
)
|
||||
</if>
|
||||
</where>
|
||||
ORDER BY da.state,da.id DESC
|
||||
</select>
|
||||
|
||||
<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
|
||||
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 v_dispatch_applyfor af on da.id=af.ticket_id
|
||||
where da.id = #{id}
|
||||
</select>
|
||||
</mapper>
|
||||
|
|
|
|||
|
|
@ -132,8 +132,8 @@
|
|||
LEFT JOIN app_user u ON t.user_id=u.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 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 gongfu_ticket_evaluate te ON t.id=te.ticket_id AND t.state=2
|
||||
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 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_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
|
||||
|
|
@ -153,20 +153,20 @@
|
|||
|
||||
<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
|
||||
,IF(u.is_primary,fun_getPrimaryUserArea(u.company_id),'') AS 'areaName',IF(u.is_primary,'',a2.`name`) AS 'agentAreaName'
|
||||
,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'
|
||||
,a1.area_name AS 'areaName','' AS 'agentAreaName',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'
|
||||
,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',auh.user_name AS 'currentHandle',dt.cqm_person_name AS 'cqms'
|
||||
,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',auh.user_name AS 'currentHandle',dt.cqm_person_name AS 'cqms'
|
||||
,t.handle_name AS 'handle',t.description
|
||||
FROM gongfu_ticket t
|
||||
LEFT JOIN app_user u ON t.user_id=u.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_type dt ON d.device_type=dt.device_type
|
||||
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 auh ON t.current_handle=auh.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 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'
|
||||
,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'
|
||||
,a1.area_name AS 'areaName','' AS 'agentAreaName',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'
|
||||
,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',auh.user_name AS 'currentHandle',dt.cqm_person_name AS 'cqms'
|
||||
,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',auh.user_name AS 'currentHandle',dt.cqm_person_name AS 'cqms'
|
||||
,t.handle_name AS 'handle',t.description
|
||||
FROM gongfu_ticket t
|
||||
LEFT JOIN app_user u ON t.user_id=u.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_type dt ON d.device_type=dt.device_type
|
||||
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 auh ON t.current_handle=auh.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 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'
|
||||
,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'
|
||||
,a1.area_name AS 'areaName','' AS 'agentAreaName',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'
|
||||
,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'
|
||||
,t.solve_time AS 'closeTime',auh.user_name AS 'currentHandle',dt.cqm_person_name AS 'cqms'
|
||||
|
|
@ -208,8 +208,8 @@
|
|||
FROM gongfu_ticket t
|
||||
LEFT JOIN app_user u ON t.user_id=u.id
|
||||
LEFT JOIN admin_user au ON t.user_id=au.id
|
||||
LEFT JOIN app_area a2 ON u.area_id=a2.id
|
||||
INNER JOIN gongfu_ticket_follow tf ON t.id=tf.ticket_id AND tf.user_id=#{userId} AND tf.from=1
|
||||
LEFT JOIN t_base_area a1 ON u.area_id=a1.id
|
||||
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_type dt ON d.device_type=dt.device_type
|
||||
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 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'
|
||||
,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'
|
||||
,a1.area_name AS 'areaName','' AS 'agentAreaName',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'
|
||||
,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'
|
||||
,dt.cqm_person_name AS 'cqms',t.handle_name AS 'handle',t.description
|
||||
FROM gongfu_ticket t
|
||||
LEFT JOIN app_user u ON t.user_id=u.id
|
||||
LEFT JOIN admin_user au ON t.user_id=au.id
|
||||
LEFT JOIN app_area a2 ON u.area_id=a2.id
|
||||
INNER JOIN gongfu_ticket_follow tf ON t.id=tf.ticket_id AND tf.user_id=#{userId} AND tf.from=1
|
||||
LEFT JOIN t_base_area a1 ON u.area_id=a1.id
|
||||
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_type dt ON d.device_type=dt.device_type
|
||||
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 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
|
||||
WHERE tf.`from` = 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 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'
|
||||
,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'
|
||||
,a1.area_name AS 'areaName','' AS 'agentAreaName',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'
|
||||
,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'
|
||||
,t.solve_time AS 'closeTime',auh.user_name AS 'currentHandle',dt.cqm_person_name AS 'cqms'
|
||||
|
|
@ -263,8 +263,8 @@
|
|||
FROM gongfu_ticket t
|
||||
LEFT JOIN app_user u ON t.user_id=u.id
|
||||
LEFT JOIN admin_user au ON t.user_id=au.id
|
||||
LEFT JOIN app_area a2 ON u.area_id=a2.id
|
||||
INNER JOIN gongfu_ticket_follow tf ON t.id=tf.ticket_id AND tf.user_id=#{userId} AND tf.from=1
|
||||
LEFT JOIN t_base_area a1 ON u.area_id=a1.id
|
||||
INNER JOIN ticket_follow tf ON t.id=tf.ticket_id AND tf.user_id=#{userId} AND tf.from=1
|
||||
<if test="favouritesId>0">
|
||||
AND tf.favorites_id=#{favouritesId}
|
||||
</if>
|
||||
|
|
|
|||
|
|
@ -285,4 +285,8 @@
|
|||
from v_all_ticket
|
||||
where id = #{id}
|
||||
</select>
|
||||
|
||||
<select id="getById" resultType="com.nflg.mobilebroken.common.pojo.vo.TicketVO">
|
||||
select * from v_all_ticket where id = #{id}
|
||||
</select>
|
||||
</mapper>
|
||||
|
|
|
|||
Loading…
Reference in New Issue