diff --git a/nflg-mobilebroken-admin/pom.xml b/nflg-mobilebroken-admin/pom.xml index 1016298f..3b4d44b6 100644 --- a/nflg-mobilebroken-admin/pom.xml +++ b/nflg-mobilebroken-admin/pom.xml @@ -89,7 +89,7 @@ org.xhtmlrenderer flying-saucer-pdf - 9.1.22 + 9.3.1 diff --git a/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/controller/TicketController.java b/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/controller/TicketController.java index 2c45598b..b9c27639 100644 --- a/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/controller/TicketController.java +++ b/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/controller/TicketController.java @@ -78,9 +78,6 @@ public class TicketController extends ControllerBase { @Resource private IAppAreaService appAreaService; - @Resource - private ITBaseAreaService adminAreaService; - @Resource private IDictionaryItemService dictionaryItemService; @@ -99,6 +96,9 @@ public class TicketController extends ControllerBase { @Resource private ITicketFavoritesService ticketFavoritesService; + @Resource + private ITBasePartService partService; + /** * 获取问题类型 * @return 问题类型列表 @@ -195,6 +195,16 @@ public class TicketController extends ControllerBase { return ApiResult.success(); } + /** + * 获取所有设备部件 + * @param name 部件名称,模糊查询 + * @return 部件列表 + */ + @GetMapping("getDeviceComponents") + public ApiResult> getDeviceComponents(@RequestParam String name){ + return ApiResult.success(partService.getSimpleList(name)); + } + /** * 搜索工单 * @param request 请求参数 @@ -427,9 +437,9 @@ public class TicketController extends ControllerBase { if (StrUtil.isNotBlank(ticket.getAttachments())) { StrUtil.split(ticket.getAttachments(), ",").forEach(item -> { if (item.endsWith(".jpg") || item.endsWith(".png") || item.endsWith(".jpeg")) { - images.add(new FileInfo(item.substring(item.lastIndexOf("/")+1),item)); + images.add(new FileInfo(item.substring(item.lastIndexOf("/")+1),urlEncode(item))); } else { - files.add(new FileInfo(item.substring(item.lastIndexOf("/")+1),item)); + files.add(new FileInfo(item.substring(item.lastIndexOf("/")+1),urlEncode(item))); } }); } @@ -438,6 +448,24 @@ public class TicketController extends ControllerBase { images.add(new FileInfo(item.substring(item.lastIndexOf("/")+1),item)); }); } + //加上聊天中的图片和文件 + List messageVOS=ticketChatService.getMessages(ticket.getId()); + messageVOS.forEach(messageVO -> { + if (CollectionUtil.isNotEmpty(messageVO.getImages())){ + messageVO.getImages().forEach(image -> { + images.add(new FileInfo(image.substring(image.lastIndexOf("/")+1),image)); + }); + } + if (CollectionUtil.isNotEmpty(messageVO.getAttachments())){ + messageVO.getAttachments().forEach(attachment -> { + if (attachment.endsWith(".jpg") || attachment.endsWith(".png") || attachment.endsWith(".jpeg")) { + images.add(new FileInfo(attachment.substring(attachment.lastIndexOf("/")+1),urlEncode(attachment))); + } else { + files.add(new FileInfo(attachment.substring(attachment.lastIndexOf("/")+1),urlEncode(attachment))); + } + }); + } + }); TicketPdfVO vo = new TicketPdfVO() .setNo(ticket.getNo()) .setTitle(ticket.getTitle()) @@ -489,7 +517,7 @@ public class TicketController extends ControllerBase { // renderer.layout(); // renderer.createPDF(response.getOutputStream()); ITextRenderer renderer = new ITextRenderer(); - BaseFont baseFont = BaseFont.createFont("fonts/simsun.ttc,0", BaseFont.IDENTITY_H, BaseFont.EMBEDDED); +// BaseFont baseFont = BaseFont.createFont("fonts/simsun.ttc,0", BaseFont.IDENTITY_H, BaseFont.EMBEDDED); renderer.getFontResolver().addFont("fonts/simsun.ttc", BaseFont.IDENTITY_H, BaseFont.EMBEDDED); renderer.setDocumentFromString(html); renderer.layout(); @@ -503,6 +531,13 @@ public class TicketController extends ControllerBase { } } + private String urlEncode(String url){ + int index = url.lastIndexOf("/"); + String pre= url.substring(0,index+1); + String end = url.substring(index+1); + return pre+URLEncoder.encode(end, StandardCharsets.UTF_8); + } + /** * 获取工单详情 * @param id 工单编号 diff --git a/nflg-mobilebroken-admin/src/main/resources/templates/ticketpdf.html b/nflg-mobilebroken-admin/src/main/resources/templates/ticketpdf.html index 17fc0b4d..1a47e256 100644 --- a/nflg-mobilebroken-admin/src/main/resources/templates/ticketpdf.html +++ b/nflg-mobilebroken-admin/src/main/resources/templates/ticketpdf.html @@ -88,8 +88,8 @@ -
- +
+
@@ -98,7 +98,7 @@ -
+
diff --git a/nflg-mobilebroken-cfs-app/src/main/java/com/nflg/mobilebroken/cfs/controller/TiketController.java b/nflg-mobilebroken-cfs-app/src/main/java/com/nflg/mobilebroken/cfs/controller/TiketController.java index 3ec4613b..c68e8c8f 100644 --- a/nflg-mobilebroken-cfs-app/src/main/java/com/nflg/mobilebroken/cfs/controller/TiketController.java +++ b/nflg-mobilebroken-cfs-app/src/main/java/com/nflg/mobilebroken/cfs/controller/TiketController.java @@ -186,6 +186,7 @@ public class TiketController extends ControllerBase { @GetMapping("getTicket") public ApiResult getTicket(@Valid @RequestParam @NotNull Integer id) { Ticket ticket = ticketService.getById(id); + VUtils.trueThrowBusinessError(Objects.isNull(ticket)).throwMessage("未找到工单"); AppUser user = appUserService.getById(ticket.getUserId()); String areaName; if (user.getIsPrimary()){ diff --git a/nflg-mobilebroken-cfs-app/src/main/java/com/nflg/mobilebroken/cfs/controller/UserController.java b/nflg-mobilebroken-cfs-app/src/main/java/com/nflg/mobilebroken/cfs/controller/UserController.java index b062a808..e0e14338 100644 --- a/nflg-mobilebroken-cfs-app/src/main/java/com/nflg/mobilebroken/cfs/controller/UserController.java +++ b/nflg-mobilebroken-cfs-app/src/main/java/com/nflg/mobilebroken/cfs/controller/UserController.java @@ -4,6 +4,7 @@ import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.util.RandomUtil; import cn.hutool.core.util.StrUtil; import cn.hutool.json.JSONUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.nflg.mobilebroken.cfs.service.WXQRCodeService; import com.nflg.mobilebroken.common.constant.Constant; import com.nflg.mobilebroken.common.constant.MessageSubType; @@ -265,7 +266,16 @@ public class UserController extends ControllerBase { @PostMapping("deleteUser") //@SaUserCheckRole("primary") public ApiResult deleteUser(@Valid @RequestBody @NotEmpty List ids){ - return ApiResult.success(appUserService.removeByIds(ids)); + appUserService.remove(new LambdaQueryWrapper() + .eq(AppUser::getIsPrimary, false) + .eq(AppUser::getCreateBy, AppUserUtil.getUserName()) + .in(AppUser::getId, ids)); + appUserApplyforService.remove(new LambdaQueryWrapper() + .eq(AppUserApplyfor::getState, 0) + .eq(AppUserApplyfor::getIsPrimary, false) + .eq(AppUserApplyfor::getCreateBy, AppUserUtil.getUserId()) + .in(AppUserApplyfor::getId, ids)); + return ApiResult.success(true); } /** diff --git a/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/request/AdminTicketSearchRequest.java b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/request/AdminTicketSearchRequest.java index 0896cf60..c0b0215b 100644 --- a/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/request/AdminTicketSearchRequest.java +++ b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/request/AdminTicketSearchRequest.java @@ -32,4 +32,7 @@ public class AdminTicketSearchRequest extends TicketSearchRequest { //收藏夹id private Integer favouritesId; + + //区域编码 + private String areaCode; } \ No newline at end of file diff --git a/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/vo/AdminTicketVO.java b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/vo/AdminTicketVO.java index 501590bb..fc1d38b2 100644 --- a/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/vo/AdminTicketVO.java +++ b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/vo/AdminTicketVO.java @@ -55,7 +55,11 @@ public class AdminTicketVO { @ExcelColumn("解决方案") private String solution; - //区域名称 + //代理区域 + @ExcelColumn("代理区域") + private String agentAreaName; + + //区域 @ExcelColumn("区域") private String areaName; 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 641af3bd..939be1ea 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 @@ -27,6 +27,10 @@ public class FileVO { public String getSourceDesc() { if (source == 0) { return "工单"; + }else if (source==1){ + return "代理商"; + }else if (source==2){ + return "账号"; } return "未知"; } diff --git a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/entity/AppUserApplyfor.java b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/entity/AppUserApplyfor.java index 75d8ef92..8c47dddb 100644 --- a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/entity/AppUserApplyfor.java +++ b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/entity/AppUserApplyfor.java @@ -94,6 +94,11 @@ public class AppUserApplyfor implements Serializable { */ private String salesUserName; + /** + * 是否主账号 + */ + private Boolean isPrimary; + /** * 创建人id */ diff --git a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/ITBasePartService.java b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/ITBasePartService.java index 0bee56cb..7602cafa 100644 --- a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/ITBasePartService.java +++ b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/ITBasePartService.java @@ -4,9 +4,6 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; import com.nflg.mobilebroken.common.pojo.dto.ExportPartDTO; import com.nflg.mobilebroken.common.pojo.query.PageBaseQuery; -import com.nflg.mobilebroken.common.pojo.vo.DepartmentSimpleVO; -import com.nflg.mobilebroken.repository.entity.DeviceComponent; -import com.nflg.mobilebroken.repository.entity.TBaseDepartment; import com.nflg.mobilebroken.repository.entity.TBasePart; import org.apache.ibatis.annotations.Param; @@ -25,4 +22,6 @@ public interface ITBasePartService extends IService { Page selectListByPage(@Param("query") PageBaseQuery query); List exportPart(@Param("partNo")String partNo, @Param("partName") String partName); + + List getSimpleList(String name); } diff --git a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/TBasePartServiceImpl.java b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/TBasePartServiceImpl.java index 146daac4..1fe6ab87 100644 --- a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/TBasePartServiceImpl.java +++ b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/TBasePartServiceImpl.java @@ -1,5 +1,6 @@ package com.nflg.mobilebroken.repository.service.impl; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.nflg.mobilebroken.common.pojo.dto.ExportPartDTO; @@ -11,6 +12,7 @@ import org.apache.ibatis.annotations.Param; import org.springframework.stereotype.Service; import java.util.List; +import java.util.stream.Collectors; /** *

@@ -31,4 +33,15 @@ public class TBasePartServiceImpl extends ServiceImpl exportPart(@Param("partNo")String partNo, @Param("partName") String partName){ return this.getBaseMapper().exportPart(partNo,partName); } + + @Override + public List getSimpleList(String name) { + return lambdaQuery() + .eq(TBasePart::getEnable, 1) + .like(StrUtil.isNotBlank(name),TBasePart::getPartName, name) + .list() + .stream() + .map(TBasePart::getPartName) + .collect(Collectors.toList()); + } } diff --git a/nflg-mobilebroken-repository/src/main/resources/mapper/DeviceMapper.xml b/nflg-mobilebroken-repository/src/main/resources/mapper/DeviceMapper.xml index 986a7f24..37a3ef41 100644 --- a/nflg-mobilebroken-repository/src/main/resources/mapper/DeviceMapper.xml +++ b/nflg-mobilebroken-repository/src/main/resources/mapper/DeviceMapper.xml @@ -51,7 +51,8 @@ SELECT d.device_no AS 'deviceNo',d.device_name AS 'deviceName',d.model_no AS 'modelNo',d.device_type AS 'deviceType',d.shipment_date AS 'shipmentDate' FROM device d INNER JOIN t_base_customer c ON d.agent_code=c.agency_company_code - WHERE d.data_valid_state=1 AND c.id IN + INNER JOIN dictionary_item di ON di.id=d.device_state + WHERE d.data_valid_state=1 AND di.`code`='Normal' AND c.id IN #{companyId} @@ -90,10 +91,10 @@ diff --git a/nflg-mobilebroken-repository/src/main/resources/mapper/TicketMapper.xml b/nflg-mobilebroken-repository/src/main/resources/mapper/TicketMapper.xml index 214000d8..84409a7e 100644 --- a/nflg-mobilebroken-repository/src/main/resources/mapper/TicketMapper.xml +++ b/nflg-mobilebroken-repository/src/main/resources/mapper/TicketMapper.xml @@ -50,8 +50,8 @@ AND u.company_id=#{request.companyId} - - AND u.area_id=#{request.areaId} + + AND FIND_IN_SET(#{request.areaCode},c.area_code)>0 AND t.question=#{request.question} @@ -78,11 +78,10 @@ - SELECT t.id,t.`no`,t.title,t.state,t.urgency,t.component,t.question,t.solution,IF(u.is_primary,a1.area_name,a2.`name`) AS 'areaName' + SELECT t.id,t.`no`,t.title,t.state,t.urgency,t.component,t.question,t.solution + ,IF(u.is_primary,fun_getPrimaryUserArea(u.company_id),'') AS 'areaName',IF(u.is_primary,'',a2.`name`) AS 'agentAreaName' ,d.customer_name AS 'companyName',u.company_id AS 'companyId',u.`name` AS 'createBy',t.device_no AS 'deviceNo',t.use_time AS 'useTime' ,t.create_time AS 'createTime',t.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' @@ -159,7 +157,6 @@ FROM ticket t LEFT JOIN app_user u ON t.user_id=u.id LEFT JOIN t_base_customer c ON u.company_id=c.id - LEFT JOIN t_base_area a1 ON u.area_id=a1.id LEFT JOIN app_area a2 ON u.area_id=a2.id LEFT JOIN device d ON t.device_no=d.device_no AND d.data_valid_state=1 LEFT JOIN t_base_device_type dt ON d.device_type=dt.device_type @@ -172,7 +169,8 @@