From ced5b87a676f781766ccb03cf7ea89c39b8bd4c6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9B=B9=E9=B9=8F=E9=A3=9E?= Date: Wed, 26 Nov 2025 18:03:19 +0800 Subject: [PATCH] =?UTF-8?q?feat(dispatch):=20=E4=BC=98=E5=8C=96=E6=B4=BE?= =?UTF-8?q?=E5=B7=A5=E5=8D=95=E5=8A=9F=E8=83=BD=E5=B9=B6=E5=AE=8C=E5=96=84?= =?UTF-8?q?=E7=9B=B8=E5=85=B3=E6=95=B0=E6=8D=AE=E7=BB=93=E6=9E=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 在派工单创建时新增自动生成编码,保持编码格式7位数字且递增 - 增加派工单延期审批逻辑,防止已完成的派工单延期 - 更新派工单延期处理,完善计划开始和结束时间的设置及状态判定 - 在派工单实体及VO中新增编码字段,丰富数据内容 - 修改工单相关SQL查询,调整表连接及字段映射,增加相关信息查询 - 更新工单消息推送逻辑,支持基于工单视图对象的推送 - 增加TicketService接口新方法,支持通过视图对象获取工单详情 - 修改用户和客户相关逻辑,新增客户名称字段及区域权限判断改进 - 支持查询时按是否工服工单处理人筛选账户,提高查询灵活性 - 修改文件相关请求及响应对象,调整关联ID数据类型为Long - 重构相关Mapper XML文件,统一工单关注表名及字段,优化查询效率 - 其他小范围代码和注释优化,提升代码整洁及可维护性 --- .../admin/controller/FileController.java | 2 +- .../admin/controller/PositionController.java | 3 - .../admin/pojo/dto/PositionDetailDTO.java | 4 -- .../admin/pojo/vo/PositionDetailVO.java | 5 ++ .../cfs/controller/TicketController.java | 30 +++++--- .../cfs/event/TicketReplyEvent.java | 8 +-- .../cfs/publisher/TicketEventPublisher.java | 3 +- .../pojo/request/FileSearchRequest.java | 2 +- .../request/PrimaryAppUserAddRequest.java | 3 - .../pojo/request/SearchAccountRequest.java | 3 + .../request/SolutionMeasuresSaveRequest.java | 3 + .../pojo/request/ZipDownloadRequest.java | 2 +- .../common/pojo/vo/AppUserForAdminVO.java | 5 ++ .../common/pojo/vo/DispatchVO.java | 13 ++-- .../mobilebroken/common/pojo/vo/FileVO.java | 10 ++- .../mobilebroken/common/pojo/vo/TicketVO.java | 10 +++ .../controller/AnonymousTicketController.java | 4 +- .../gongfu/controller/DispatchController.java | 14 +++- .../controller/TranslateController.java | 33 --------- .../src/test/java/NTest.java | 9 +++ .../repository/entity/GongfuDispatch.java | 13 ++-- .../repository/mapper/TicketMapper.java | 2 + .../service/IGongfuDispatchService.java | 2 + .../repository/service/ITicketService.java | 2 + .../service/impl/AdminUserServiceImpl.java | 1 + .../service/impl/AppUserServiceImpl.java | 23 +++--- .../impl/GongfuDispatchServiceImpl.java | 12 ++++ .../impl/TBaseCustomerServiceImpl.java | 44 ++++++------ .../service/impl/TicketServiceImpl.java | 7 +- .../impl/TicketSolutionServiceImpl.java | 71 ++++++++++--------- .../main/resources/mapper/AppUserMapper.xml | 2 +- .../resources/mapper/GongfuDispatchMapper.xml | 4 +- .../resources/mapper/GongfuTicketMapper.xml | 54 +++++++------- .../main/resources/mapper/TicketMapper.xml | 4 ++ 34 files changed, 239 insertions(+), 168 deletions(-) delete mode 100644 nflg-mobilebroken-gongfu/src/main/java/com/nflg/mobilebroken/gongfu/controller/TranslateController.java create mode 100644 nflg-mobilebroken-gongfu/src/test/java/NTest.java diff --git a/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/controller/FileController.java b/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/controller/FileController.java index cec79528..482e42e3 100644 --- a/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/controller/FileController.java +++ b/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/controller/FileController.java @@ -179,7 +179,7 @@ public class FileController extends ControllerBase { */ @PostMapping("deleteFile") @ApiMark(moduleName = "文件管理", apiName = "删除文件") - public ApiResult deleteFile(@Valid @RequestBody @NotEmpty List ids) { + public ApiResult deleteFile(@Valid @RequestBody @NotEmpty List ids) { fileUploadRecordService.removeBatchByIds(ids); return ApiResult.success(); } diff --git a/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/controller/PositionController.java b/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/controller/PositionController.java index f76fb1f3..2397b36f 100644 --- a/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/controller/PositionController.java +++ b/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/controller/PositionController.java @@ -90,10 +90,7 @@ public class PositionController extends ControllerBase { } } result.setLanguage(positionLanguageResult); - result.setTicketManage(ent.getTicketManage()); return ApiResult.success(result); - - } /** diff --git a/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/pojo/dto/PositionDetailDTO.java b/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/pojo/dto/PositionDetailDTO.java index 0749a05d..618a6d22 100644 --- a/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/pojo/dto/PositionDetailDTO.java +++ b/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/pojo/dto/PositionDetailDTO.java @@ -40,10 +40,6 @@ public class PositionDetailDTO { */ private Boolean gongFuTicketManage; - - - - /** * 职位语言 */ diff --git a/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/pojo/vo/PositionDetailVO.java b/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/pojo/vo/PositionDetailVO.java index c889349e..ee40a58e 100644 --- a/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/pojo/vo/PositionDetailVO.java +++ b/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/pojo/vo/PositionDetailVO.java @@ -33,6 +33,11 @@ public class PositionDetailVO { */ private Boolean ticketManage; + /** + * 是否授予工服工单权限 + */ + private Boolean gongFuTicketManage; + /** * 创建人-账号 */ diff --git a/nflg-mobilebroken-cfs-app/src/main/java/com/nflg/mobilebroken/cfs/controller/TicketController.java b/nflg-mobilebroken-cfs-app/src/main/java/com/nflg/mobilebroken/cfs/controller/TicketController.java index 4393da57..6979d544 100644 --- a/nflg-mobilebroken-cfs-app/src/main/java/com/nflg/mobilebroken/cfs/controller/TicketController.java +++ b/nflg-mobilebroken-cfs-app/src/main/java/com/nflg/mobilebroken/cfs/controller/TicketController.java @@ -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 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(); } diff --git a/nflg-mobilebroken-cfs-app/src/main/java/com/nflg/mobilebroken/cfs/event/TicketReplyEvent.java b/nflg-mobilebroken-cfs-app/src/main/java/com/nflg/mobilebroken/cfs/event/TicketReplyEvent.java index dee0b533..5d109a66 100644 --- a/nflg-mobilebroken-cfs-app/src/main/java/com/nflg/mobilebroken/cfs/event/TicketReplyEvent.java +++ b/nflg-mobilebroken-cfs-app/src/main/java/com/nflg/mobilebroken/cfs/event/TicketReplyEvent.java @@ -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()) diff --git a/nflg-mobilebroken-cfs-app/src/main/java/com/nflg/mobilebroken/cfs/publisher/TicketEventPublisher.java b/nflg-mobilebroken-cfs-app/src/main/java/com/nflg/mobilebroken/cfs/publisher/TicketEventPublisher.java index e2c671dc..925a1a9e 100644 --- a/nflg-mobilebroken-cfs-app/src/main/java/com/nflg/mobilebroken/cfs/publisher/TicketEventPublisher.java +++ b/nflg-mobilebroken-cfs-app/src/main/java/com/nflg/mobilebroken/cfs/publisher/TicketEventPublisher.java @@ -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); diff --git a/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/request/FileSearchRequest.java b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/request/FileSearchRequest.java index 60f88ab9..5b7d558e 100644 --- a/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/request/FileSearchRequest.java +++ b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/request/FileSearchRequest.java @@ -16,7 +16,7 @@ public class FileSearchRequest extends PageRequest { private Integer source; //文件来源id - private Integer sourceId; + private Long sourceId; //文件类型 private String fileType; diff --git a/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/request/PrimaryAppUserAddRequest.java b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/request/PrimaryAppUserAddRequest.java index dedba80f..07dd285f 100644 --- a/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/request/PrimaryAppUserAddRequest.java +++ b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/request/PrimaryAppUserAddRequest.java @@ -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 companyIds; //销售人员姓名 - @NotBlank private String salesUserName; //邮箱 diff --git a/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/request/SearchAccountRequest.java b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/request/SearchAccountRequest.java index 94c983c2..88e28134 100644 --- a/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/request/SearchAccountRequest.java +++ b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/request/SearchAccountRequest.java @@ -18,4 +18,7 @@ public class SearchAccountRequest extends PageRequest { // 状态 private Byte state; + + // 是否是工服工单处理人 + private Boolean gongfuHandler; } diff --git a/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/request/SolutionMeasuresSaveRequest.java b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/request/SolutionMeasuresSaveRequest.java index 113a2ac9..4297a321 100644 --- a/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/request/SolutionMeasuresSaveRequest.java +++ b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/request/SolutionMeasuresSaveRequest.java @@ -24,6 +24,9 @@ public class SolutionMeasuresSaveRequest { @NotNull private Byte accidentLevel; + //问题类型 + private String question; + /** * 根本原因 */ diff --git a/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/request/ZipDownloadRequest.java b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/request/ZipDownloadRequest.java index fc009cc2..3d0bd127 100644 --- a/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/request/ZipDownloadRequest.java +++ b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/request/ZipDownloadRequest.java @@ -14,5 +14,5 @@ public class ZipDownloadRequest { * 文件id列表 */ @NotEmpty - private List fileIds; + private List fileIds; } diff --git a/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/vo/AppUserForAdminVO.java b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/vo/AppUserForAdminVO.java index 219663fd..cb636966 100644 --- a/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/vo/AppUserForAdminVO.java +++ b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/vo/AppUserForAdminVO.java @@ -111,6 +111,11 @@ public class AppUserForAdminVO { */ private Integer type; + /** + * 客户名称,仅终端用户使用 + */ + private String customerName; + //下级账号 private List children=new ArrayList<>(); diff --git a/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/vo/DispatchVO.java b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/vo/DispatchVO.java index c2e241ea..b8edc5a6 100644 --- a/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/vo/DispatchVO.java +++ b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/vo/DispatchVO.java @@ -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; /** * 是否延期过 diff --git a/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/vo/FileVO.java b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/vo/FileVO.java index 939be1ea..6616b8b3 100644 --- a/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/vo/FileVO.java +++ b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/vo/FileVO.java @@ -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; diff --git a/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/vo/TicketVO.java b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/vo/TicketVO.java index 22fca7ee..0b0fe347 100644 --- a/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/vo/TicketVO.java +++ b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/vo/TicketVO.java @@ -60,4 +60,14 @@ public class TicketVO { //是否已关注 private boolean followed; + + /** + * 创建人id + */ + private Integer userId; + + /** + * 用户来源平台,app或者admin + */ + private String userPlatform; } diff --git a/nflg-mobilebroken-gongfu/src/main/java/com/nflg/mobilebroken/gongfu/controller/AnonymousTicketController.java b/nflg-mobilebroken-gongfu/src/main/java/com/nflg/mobilebroken/gongfu/controller/AnonymousTicketController.java index bd94c52f..5734f8ef 100644 --- a/nflg-mobilebroken-gongfu/src/main/java/com/nflg/mobilebroken/gongfu/controller/AnonymousTicketController.java +++ b/nflg-mobilebroken-gongfu/src/main/java/com/nflg/mobilebroken/gongfu/controller/AnonymousTicketController.java @@ -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; /** * 搜索匿名工单 diff --git a/nflg-mobilebroken-gongfu/src/main/java/com/nflg/mobilebroken/gongfu/controller/DispatchController.java b/nflg-mobilebroken-gongfu/src/main/java/com/nflg/mobilebroken/gongfu/controller/DispatchController.java index bb6d46d1..6f6d6677 100644 --- a/nflg-mobilebroken-gongfu/src/main/java/com/nflg/mobilebroken/gongfu/controller/DispatchController.java +++ b/nflg-mobilebroken-gongfu/src/main/java/com/nflg/mobilebroken/gongfu/controller/DispatchController.java @@ -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( diff --git a/nflg-mobilebroken-gongfu/src/main/java/com/nflg/mobilebroken/gongfu/controller/TranslateController.java b/nflg-mobilebroken-gongfu/src/main/java/com/nflg/mobilebroken/gongfu/controller/TranslateController.java deleted file mode 100644 index f1b0b37e..00000000 --- a/nflg-mobilebroken-gongfu/src/main/java/com/nflg/mobilebroken/gongfu/controller/TranslateController.java +++ /dev/null @@ -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 translateWord(@Valid @RequestBody TranslateWordRequest request) { - return ApiResult.success(translate.translateWord(request.getText(), "auto", request.getTargetLanguage(), "html")); - } -} diff --git a/nflg-mobilebroken-gongfu/src/test/java/NTest.java b/nflg-mobilebroken-gongfu/src/test/java/NTest.java new file mode 100644 index 00000000..150fb601 --- /dev/null +++ b/nflg-mobilebroken-gongfu/src/test/java/NTest.java @@ -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)); + } +} diff --git a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/entity/GongfuDispatch.java b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/entity/GongfuDispatch.java index 5c48d5d4..b32ccea8 100644 --- a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/entity/GongfuDispatch.java +++ b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/entity/GongfuDispatch.java @@ -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; /** * 地址 diff --git a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/mapper/TicketMapper.java b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/mapper/TicketMapper.java index 3af6d763..25021254 100644 --- a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/mapper/TicketMapper.java +++ b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/mapper/TicketMapper.java @@ -44,4 +44,6 @@ public interface TicketMapper extends BaseMapper { IPage searchByFavouritesId(Integer userId, Integer favouritesId, Page page); TicketDTO getDto(Long id); + + TicketVO getById(Long id); } diff --git a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/IGongfuDispatchService.java b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/IGongfuDispatchService.java index 14583c0a..8c18dde2 100644 --- a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/IGongfuDispatchService.java +++ b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/IGongfuDispatchService.java @@ -18,4 +18,6 @@ public interface IGongfuDispatchService extends IService { IPage search(DispatchSearchRequest request); DispatchVO getInfo(Long id); + + String getMaxCode(); } diff --git a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/ITicketService.java b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/ITicketService.java index 9c7542e7..144ab9d2 100644 --- a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/ITicketService.java +++ b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/ITicketService.java @@ -59,4 +59,6 @@ public interface ITicketService extends IService { boolean close(Ticket ticket); TicketDTO getDto(Long id); + + TicketVO getFromView(Long ticketId); } diff --git a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/AdminUserServiceImpl.java b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/AdminUserServiceImpl.java index b420dd45..9e6b1b9c 100644 --- a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/AdminUserServiceImpl.java +++ b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/AdminUserServiceImpl.java @@ -136,6 +136,7 @@ public class AdminUserServiceImpl extends ServiceImpl impl return vos; } else { AppUser user = getById(userId); - if (user.getIsPrimary()) { - List datas = adminAreaService.lambdaQuery().eq(TBaseArea::getAreaState, 1).eq(TBaseArea::getParentAreaRowId, 0).list(); - List vos = datas.stream().map(d -> new AreaSimpleVO().setId(d.getId()).setName(d.getAreaName())).collect(Collectors.toList()); - vos.forEach(this::bindChildren); - return vos; - } else { - List datas = appAreaService.lambdaQuery().eq(AppArea::getEnable, true).eq(AppArea::getParentId, 0).list(); - List 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 datas = adminAreaService.lambdaQuery().eq(TBaseArea::getAreaState, 1).eq(TBaseArea::getParentAreaRowId, 0).list(); + List vos = datas.stream().map(d -> new AreaSimpleVO().setId(d.getId()).setName(d.getAreaName())).collect(Collectors.toList()); + vos.forEach(this::bindChildren); + return vos; + } else { + List datas = appAreaService.lambdaQuery().eq(AppArea::getEnable, true).eq(AppArea::getParentId, 0).list(); + List 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(); } } diff --git a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/GongfuDispatchServiceImpl.java b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/GongfuDispatchServiceImpl.java index 6676f450..2b3f72c5 100644 --- a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/GongfuDispatchServiceImpl.java +++ b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/GongfuDispatchServiceImpl.java @@ -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; + /** *

* 派工单 服务实现类 @@ -29,4 +31,14 @@ public class GongfuDispatchServiceImpl extends ServiceImpl * 客户管理 服务实现类 *

- * * @author 代码生成器生成 * @since 2025 */ @@ -34,13 +34,13 @@ public class TBaseCustomerServiceImpl extends ServiceImpl getList(@Param("page")Page page, @Param("query") PageBaseQuery query){ - return this.getBaseMapper().getList(page, query); - } + public Page getList(@Param("page") Page page, @Param("query") PageBaseQuery query) { + return this.getBaseMapper().getList(page, query); + } - public void delByIds(@Param("ids") List ids ,@Param("userNo")String userNo , @Param("userName") String userName){ - this.getBaseMapper().delByIds(ids,userNo,userName); - } + public void delByIds(@Param("ids") List ids, @Param("userNo") String userNo, @Param("userName") String userName) { + this.getBaseMapper().delByIds(ids, userNo, userName); + } @Override public List getSimpleCompanys(Integer userId) { @@ -74,26 +74,28 @@ public class TBaseCustomerServiceImpl extends ServiceImpl getSimpleCompanysFromAdmin(Integer userId) { - List datas; - if (Objects.isNull(userId)){ + List 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() diff --git a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/TicketServiceImpl.java b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/TicketServiceImpl.java index 65c8856e..6d58bd30 100644 --- a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/TicketServiceImpl.java +++ b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/TicketServiceImpl.java @@ -365,7 +365,7 @@ public class TicketServiceImpl extends ServiceImpl impleme @Override public List 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 handles = StrUtil.split(ticket.getHandle(), ",") .stream() @@ -432,4 +432,9 @@ public class TicketServiceImpl extends ServiceImpl impleme public TicketDTO getDto(Long id) { return baseMapper.getDto(id); } + + @Override + public TicketVO getFromView(Long ticketId) { + return baseMapper.getById(ticketId); + } } diff --git a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/TicketSolutionServiceImpl.java b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/TicketSolutionServiceImpl.java index 01b6c845..970a6fde 100644 --- a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/TicketSolutionServiceImpl.java +++ b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/TicketSolutionServiceImpl.java @@ -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; *

* 服务实现类 *

- * * @author 代码生成器生成 * @since 2025 */ @@ -55,31 +55,33 @@ public class TicketSolutionServiceImpl extends ServiceImpl initial= new ArrayList<>(); + List 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 solutions = lambdaQuery().eq(TicketSolution::getTicketId, ticketId).orderByAsc(TicketSolution::getId).list(); Map> 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 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 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 cqmIds=adminUserService.getCQMIds(); - List handleIds= StrUtil.split(ticket.getHandle(),",").stream().map(Integer::parseInt).collect(Collectors.toList()); + List cqmIds = adminUserService.getCQMIds(); + List 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 forAdd=new ArrayList<>(); - List forUpdate=new ArrayList<>(); + && handleIds.stream().noneMatch(uid -> Objects.equals(uid, userId))) + .throwMessage("无权修改解决方案"); + List forAdd = new ArrayList<>(); + List 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 idForReserve=forUpdate.stream().map(TicketSolution::getId).collect(Collectors.toList()); - List solutions=lambdaQuery().eq(TicketSolution::getTicketId, request.getTicketId()).orderByAsc(TicketSolution::getId).list(); - if (!cqmIds.contains(userId)){ - List solutions1=solutions.stream().filter(s->idForReserve.contains(s.getId())).collect(Collectors.toList()); + List idForReserve = forUpdate.stream().map(TicketSolution::getId).collect(Collectors.toList()); + List solutions = lambdaQuery().eq(TicketSolution::getTicketId, request.getTicketId()).orderByAsc(TicketSolution::getId).list(); + if (!cqmIds.contains(userId)) { + List 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 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 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() .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; diff --git a/nflg-mobilebroken-repository/src/main/resources/mapper/AppUserMapper.xml b/nflg-mobilebroken-repository/src/main/resources/mapper/AppUserMapper.xml index cc8b05b5..df18059f 100644 --- a/nflg-mobilebroken-repository/src/main/resources/mapper/AppUserMapper.xml +++ b/nflg-mobilebroken-repository/src/main/resources/mapper/AppUserMapper.xml @@ -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 diff --git a/nflg-mobilebroken-repository/src/main/resources/mapper/GongfuDispatchMapper.xml b/nflg-mobilebroken-repository/src/main/resources/mapper/GongfuDispatchMapper.xml index 5159e86a..43ca2d5c 100644 --- a/nflg-mobilebroken-repository/src/main/resources/mapper/GongfuDispatchMapper.xml +++ b/nflg-mobilebroken-repository/src/main/resources/mapper/GongfuDispatchMapper.xml @@ -41,13 +41,15 @@ ) + ORDER BY da.state,da.id DESC diff --git a/nflg-mobilebroken-repository/src/main/resources/mapper/GongfuTicketMapper.xml b/nflg-mobilebroken-repository/src/main/resources/mapper/GongfuTicketMapper.xml index 8a95b799..a845f94a 100644 --- a/nflg-mobilebroken-repository/src/main/resources/mapper/GongfuTicketMapper.xml +++ b/nflg-mobilebroken-repository/src/main/resources/mapper/GongfuTicketMapper.xml @@ -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 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 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 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 AND tf.favorites_id=#{favouritesId} diff --git a/nflg-mobilebroken-repository/src/main/resources/mapper/TicketMapper.xml b/nflg-mobilebroken-repository/src/main/resources/mapper/TicketMapper.xml index 1bd2c3d1..898fc3af 100644 --- a/nflg-mobilebroken-repository/src/main/resources/mapper/TicketMapper.xml +++ b/nflg-mobilebroken-repository/src/main/resources/mapper/TicketMapper.xml @@ -285,4 +285,8 @@ from v_all_ticket where id = #{id} + +