From 604895d758f66c7dafbf438c301753898a9446e4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9B=B9=E9=B9=8F=E9=A3=9E?= Date: Tue, 3 Feb 2026 10:16:19 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20bug-1286=20=E8=AE=BE=E5=A4=87=E5=94=AE?= =?UTF-8?q?=E5=90=8E=E5=85=AC=E5=8F=B8=E8=BD=AC=E7=A7=BB=20=E5=AF=BC?= =?UTF-8?q?=E5=85=A5=E5=92=8C=E5=AF=BC=E5=87=BA=E6=B7=BB=E5=8A=A0=E5=AF=B9?= =?UTF-8?q?=E6=9C=8D=E5=8A=A1=E4=BB=A3=E7=90=86=E5=95=86=E7=9A=84=E6=94=AF?= =?UTF-8?q?=E6=8C=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../admin/controller/DeviceController.java | 134 +++++++++++++----- .../admin/pojo/dto/DeviceAddImportDTO.java | 6 + .../admin/pojo/dto/DeviceExportDTO.java | 102 +++++++++++++ .../admin/pojo/dto/DeviceUpdateImportDTO.java | 2 +- .../gongfu/controller/DeviceController.java | 114 +++++++++++---- .../gongfu/pojo/dto/DeviceAddImportDTO.java | 6 + .../gongfu/pojo/dto/DeviceExportDTO.java | 108 ++++++++++++++ 7 files changed, 409 insertions(+), 63 deletions(-) create mode 100644 nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/pojo/dto/DeviceExportDTO.java create mode 100644 nflg-mobilebroken-gongfu/src/main/java/com/nflg/mobilebroken/gongfu/pojo/dto/DeviceExportDTO.java diff --git a/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/controller/DeviceController.java b/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/controller/DeviceController.java index 90f607ce..fe63e0ca 100644 --- a/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/controller/DeviceController.java +++ b/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/controller/DeviceController.java @@ -8,10 +8,7 @@ import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.google.common.collect.Sets; import com.nflg.mobilebroken.admin.annotation.ApiMark; -import com.nflg.mobilebroken.admin.pojo.dto.DeviceAddImportDTO; -import com.nflg.mobilebroken.admin.pojo.dto.DeviceDTO; -import com.nflg.mobilebroken.admin.pojo.dto.DeviceUpdateImportDTO; -import com.nflg.mobilebroken.admin.pojo.dto.SyncFromCrmDTO; +import com.nflg.mobilebroken.admin.pojo.dto.*; import com.nflg.mobilebroken.admin.pojo.query.ChangeServiceAgentCodeQuery; import com.nflg.mobilebroken.admin.pojo.query.DeviceQuery; import com.nflg.mobilebroken.admin.pojo.vo.DeviceDetailResultVO; @@ -37,6 +34,7 @@ import org.springframework.http.ResponseEntity; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; +import org.ttzero.excel.entity.ListSheet; import org.ttzero.excel.entity.TemplateSheet; import org.ttzero.excel.entity.Workbook; @@ -49,6 +47,7 @@ import java.io.ByteArrayOutputStream; import java.io.FileOutputStream; import java.io.IOException; import java.net.URLEncoder; +import java.nio.charset.StandardCharsets; import java.nio.file.Files; import java.nio.file.Path; import java.time.LocalDate; @@ -380,20 +379,44 @@ public class DeviceController extends ControllerBase { } else { device.setAgentName(customer.getAgencyCompanyName()); device.setAgentCode(customer.getAgencyCompanyCode()); + } + } + if (StrUtil.isNotBlank(dto.getServiceAgentName())) { + TBaseCustomer customer = customerService.lambdaQuery() + .eq(TBaseCustomer::getDelIs, 0) + .eq(TBaseCustomer::getAgencyCompanyName, dto.getServiceAgentName()) + .one(); + if (Objects.isNull(customer)) { + sb.append("服务代理商不存在;"); + } else if (customer.getEnableState() == 0) { + sb.append("服务代理商状态为禁用;"); + } else { device.setServiceAgentCode(customer.getAgencyCompanyCode()); device.setServiceAgentName(customer.getAgencyCompanyName()); } + }else { + device.setServiceAgentCode(device.getAgentCode()); + device.setServiceAgentName(device.getAgentName()); } if (StrUtil.isNotBlank(dto.getAreaName())) { - TBaseArea area = areaService.lambdaQuery().eq(TBaseArea::getDelIs, 0).eq(TBaseArea::getAreaName, dto.getAreaName()).one(); - if (Objects.isNull(area)) { - sb.append("区域不存在;"); - } else if (area.getAreaState().intValue() == 0) { - sb.append("区域为禁用;"); - } else { - device.setAreaName(area.getAreaName()); - device.setAreaCode(area.getAreaCode()); - } + List areaNames = StrUtil.split(dto.getAreaName(), ","); + List areas = areaService.lambdaQuery() + .eq(TBaseArea::getDelIs, 0) + .in(TBaseArea::getAreaName, areaNames) + .list(); + areaNames.forEach(name -> { + TBaseArea area = areas.stream().filter(a -> StrUtil.equals(a.getAreaName(), name)).findFirst().orElse(null); + if (Objects.isNull(area)) { + sb.append("区域").append(name).append("不存在;"); + } else if (area.getAreaState().intValue() == 0) { + sb.append("区域").append(name).append("为禁用;"); + } else { + device.setAreaName(area.getAreaName()); + device.setAreaCode(area.getAreaCode()); + } + }); + device.setAreaName(dto.getAreaName()); + device.setAreaCode(StrUtil.join(",",areas.stream().map(TBaseArea::getAreaCode).collect(Collectors.toList()))); } if (StrUtil.isNotBlank(dto.getShipmentDate())) { try { @@ -481,11 +504,11 @@ public class DeviceController extends ControllerBase { public void exportSelect(HttpServletResponse response,@Valid @RequestBody @NotEmpty List ids) throws Exception { List devices=deviceService.listByIds(ids); List states = dictionaryItemService.getListByDictionaryCode(Constant.DICTIONARY_DEVICE_STATE); - List datas=devices.stream().map(d->{ - DeviceUpdateImportDTO dto= new DeviceUpdateImportDTO(); - dto.setId(Long.valueOf(d.getId())); + List datas=devices.stream().map(d->{ + DeviceExportDTO dto= new DeviceExportDTO(); + dto.setId(String.valueOf(d.getId())); dto.setDeviceNo(d.getDeviceNo()); - dto.setDeviceName(d.getDeviceName()); + dto.setDeviceName(d.getCustomerName()+d.getDeviceNo()); dto.setDeviceType(d.getDeviceType()); dto.setDeviceTypeSub(d.getDeviceTypeSub()); dto.setModelNo(d.getModelNo()); @@ -499,17 +522,19 @@ public class DeviceController extends ControllerBase { if (Objects.nonNull(d.getWarrantyMonth())) { dto.setWarrantyMonth(String.valueOf(d.getWarrantyMonth())); } + dto.setServiceAgentName(d.getServiceAgentName()); return dto; }).collect(Collectors.toList()); response.setContentType(MediaType.APPLICATION_OCTET_STREAM_VALUE); - response.setHeader(HttpHeaders.CONTENT_DISPOSITION, "attachment;filename=" + URLEncoder.encode("设备更新.xlsx", "UTF-8")); - ClassPathResource resource = new ClassPathResource("templates/deviceForUpdate.xlsx"); - new Workbook() - .addSheet(new TemplateSheet(resource.getInputStream()) - .setData(datas) - .setData("@list:deviceStateDesc", dictionaryItemService.getListByDictionaryCode(Constant.DICTIONARY_DEVICE_STATE) - .stream().map(DictionaryItem::getName).collect(Collectors.toList()))) - .writeTo(response.getOutputStream()); + response.setHeader(HttpHeaders.CONTENT_DISPOSITION, "attachment;filename=" + URLEncoder.encode("设备导出.xlsx", StandardCharsets.UTF_8)); +// ClassPathResource resource = new ClassPathResource("templates/deviceForUpdate.xlsx"); +// new Workbook() +// .addSheet(new TemplateSheet(resource.getInputStream()) +// .setData(datas) +// .setData("@list:deviceStateDesc", dictionaryItemService.getListByDictionaryCode(Constant.DICTIONARY_DEVICE_STATE) +// .stream().map(DictionaryItem::getName).collect(Collectors.toList()))) +// .writeTo(response.getOutputStream()); + new Workbook().addSheet(new ListSheet<>(datas)).writeTo(response.getOutputStream()); } /** @@ -549,14 +574,16 @@ public class DeviceController extends ControllerBase { List devices = new ArrayList<>(); List deviceTypes = new ArrayList<>(); List deviceComponents = new ArrayList<>(); + List dbDevices = deviceService.listByIds(data.stream().map(DeviceUpdateImportDTO::getId).collect(Collectors.toList())); + List deviceAgentRecords = new ArrayList<>(); for (DeviceUpdateImportDTO dto : data) { Device device = new Device(); StringBuilder sb = new StringBuilder(); if (Objects.isNull(dto.getId())) { sb.append("id不能为空;"); }else { - device=deviceService.getById(dto.getId()); - if (Objects.isNull(device)){ + device = dbDevices.stream().filter(d -> d.getId().equals(dto.getId())).findFirst().orElse(null); + if (Objects.isNull(device)) { sb.append("设备不存在;"); device = new Device(); } @@ -611,16 +638,50 @@ public class DeviceController extends ControllerBase { device.setAgentName(""); device.setAgentCode(""); } - if (StrUtil.isNotBlank(dto.getAreaName())) { - TBaseArea area = areaService.lambdaQuery().eq(TBaseArea::getDelIs, 0).eq(TBaseArea::getAreaName, dto.getAreaName()).one(); - if (Objects.isNull(area)) { - sb.append("区域不存在;"); - } else if (area.getAreaState().intValue() == 0) { - sb.append("区域为禁用;"); + String oldServiceAgentName = device.getServiceAgentName(); + if (StrUtil.isNotBlank(dto.getServiceAgentName())) { + TBaseCustomer customer = customerService.lambdaQuery() + .eq(TBaseCustomer::getDelIs, 0) + .eq(TBaseCustomer::getAgencyCompanyName, dto.getServiceAgentName()) + .one(); + if (Objects.isNull(customer)) { + sb.append("服务代理商不存在;"); + } else if (customer.getEnableState() == 0) { + sb.append("服务代理商状态为禁用;"); } else { - device.setAreaName(area.getAreaName()); - device.setAreaCode(area.getAreaCode()); + device.setServiceAgentCode(customer.getAgencyCompanyName()); + device.setServiceAgentName(customer.getAgencyCompanyCode()); } + }else { + device.setServiceAgentCode(""); + device.setServiceAgentName(""); + } + if (Objects.nonNull(device.getId()) && StrUtil.equals(device.getServiceAgentName(),oldServiceAgentName)){ + deviceAgentRecords.add(new DeviceAgentRecord() + .setDeviceId(device.getId()) + .setAgentCode(device.getServiceAgentCode()) + .setAgentName(device.getServiceAgentName()) + .setCreateById(AdminUserUtil.getUserId()) + .setCreateBy(AdminUserUtil.getUserName()) + .setCreateTime(LocalDateTime.now()) + ); + } + if (StrUtil.isNotBlank(dto.getAreaName())) { + List areaNames = StrUtil.split(dto.getAreaName(), ","); + List areas = areaService.lambdaQuery() + .eq(TBaseArea::getDelIs, 0) + .in(TBaseArea::getAreaName, areaNames) + .list(); + areaNames.forEach(name -> { + TBaseArea area = areas.stream().filter(a -> StrUtil.equals(a.getAreaName(), name)).findFirst().orElse(null); + if (Objects.isNull(area)) { + sb.append("区域").append(name).append("不存在;"); + } else if (area.getAreaState().intValue() == 0) { + sb.append("区域").append(name).append("为禁用;"); + } + }); + device.setAreaName(dto.getAreaName()); + device.setAreaCode(StrUtil.join(",",areas.stream().map(TBaseArea::getAreaCode).collect(Collectors.toList()))); }else { device.setAreaName(""); device.setAreaCode(""); @@ -700,6 +761,9 @@ public class DeviceController extends ControllerBase { if (CollUtil.isNotEmpty(deviceComponents)){ deviceComponentService.saveBatch(deviceComponents); } + if (CollUtil.isNotEmpty(deviceAgentRecords)){ + deviceAgentRecordService.saveBatch(deviceAgentRecords); + } return true; } return false; diff --git a/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/pojo/dto/DeviceAddImportDTO.java b/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/pojo/dto/DeviceAddImportDTO.java index e096b4a6..e35084e7 100644 --- a/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/pojo/dto/DeviceAddImportDTO.java +++ b/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/pojo/dto/DeviceAddImportDTO.java @@ -56,6 +56,12 @@ public class DeviceAddImportDTO { @ExcelColumn("代理商") private String agentName; + /** + * 服务代理商名称 + */ + @ExcelColumn("服务代理商") + private String serviceAgentName; + /** * 区域名称 */ diff --git a/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/pojo/dto/DeviceExportDTO.java b/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/pojo/dto/DeviceExportDTO.java new file mode 100644 index 00000000..352db26b --- /dev/null +++ b/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/pojo/dto/DeviceExportDTO.java @@ -0,0 +1,102 @@ +package com.nflg.mobilebroken.admin.pojo.dto; + +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; +import org.ttzero.excel.annotation.ExcelColumn; + +@EqualsAndHashCode(callSuper = false) +@Data +@Accessors(chain = true) +public class DeviceExportDTO { + + /** + * id + */ + @ExcelColumn("id*") + private String id; + + /** + * 设备编号 + */ + @ExcelColumn("设备编号*") + private String deviceNo; + + /** + * 设备名称 + */ + @ExcelColumn("设备名称") + private String deviceName; + + /** + * 设备类型 + */ + @ExcelColumn("设备类型*") + private String deviceType; + + /** + * 设备类型细分 + */ + @ExcelColumn("设备类型细分*") + private String deviceTypeSub; + + /** + * 设备机型 + */ + @ExcelColumn("设备机型*") + private String modelNo; + + /** + * 设备状态-来自字典 + */ + @ExcelColumn("设备状态*") + private String deviceStateDesc; + + /** + * 客户名称 + */ + @ExcelColumn("客户名称") + private String customerName; + + /** + * 代理商名称 + */ + @ExcelColumn("代理商") + private String agentName; + + /** + * 服务代理商名称 + */ + @ExcelColumn("服务代理商") + private String serviceAgentName; + + /** + * 区域名称 + */ + @ExcelColumn("区域") + private String areaName; + + /** + * 发货日期 + */ + @ExcelColumn("发货日期") + private String shipmentDate; + + /** + * 开始质保日期 + */ + @ExcelColumn("开始质保日期") + private String startWarrantyDate; + + /** + * 质保期(月) + */ + @ExcelColumn("质保期(月)") + private String warrantyMonth; + + /** + * 设备地址 + */ + @ExcelColumn("设备地址") + private String address; +} diff --git a/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/pojo/dto/DeviceUpdateImportDTO.java b/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/pojo/dto/DeviceUpdateImportDTO.java index f16fdf55..0ba3b821 100644 --- a/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/pojo/dto/DeviceUpdateImportDTO.java +++ b/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/pojo/dto/DeviceUpdateImportDTO.java @@ -14,5 +14,5 @@ public class DeviceUpdateImportDTO extends DeviceAddImportDTO{ * id */ @ExcelColumn("id*") - private Long id; + private Integer id; } diff --git a/nflg-mobilebroken-gongfu/src/main/java/com/nflg/mobilebroken/gongfu/controller/DeviceController.java b/nflg-mobilebroken-gongfu/src/main/java/com/nflg/mobilebroken/gongfu/controller/DeviceController.java index 072ec5ed..cff1633c 100644 --- a/nflg-mobilebroken-gongfu/src/main/java/com/nflg/mobilebroken/gongfu/controller/DeviceController.java +++ b/nflg-mobilebroken-gongfu/src/main/java/com/nflg/mobilebroken/gongfu/controller/DeviceController.java @@ -17,10 +17,7 @@ import com.nflg.mobilebroken.common.pojo.vo.DeviceQRCodeVO; import com.nflg.mobilebroken.common.util.*; import com.nflg.mobilebroken.gongfu.annotation.ApiMark; import com.nflg.mobilebroken.gongfu.constant.Constant1; -import com.nflg.mobilebroken.gongfu.pojo.dto.DeviceAddImportDTO; -import com.nflg.mobilebroken.gongfu.pojo.dto.DeviceDTO; -import com.nflg.mobilebroken.gongfu.pojo.dto.DeviceUpdateImportDTO; -import com.nflg.mobilebroken.gongfu.pojo.dto.SyncFromCrmDTO; +import com.nflg.mobilebroken.gongfu.pojo.dto.*; import com.nflg.mobilebroken.gongfu.pojo.query.ChangeServiceAgentCodeQuery; import com.nflg.mobilebroken.gongfu.pojo.query.DeviceQuery; import com.nflg.mobilebroken.gongfu.pojo.vo.DeviceDetailResultVO; @@ -31,7 +28,6 @@ import com.nflg.mobilebroken.repository.service.*; import com.nflg.mobilebroken.starter.annotation.MethodInfoMark; import com.nflg.mobilebroken.starter.service.FileUploadService; import lombok.extern.slf4j.Slf4j; -import org.hibernate.validator.constraints.NotEmpty; import org.springframework.core.io.ClassPathResource; import org.springframework.http.HttpHeaders; import org.springframework.http.MediaType; @@ -39,16 +35,19 @@ import org.springframework.http.ResponseEntity; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; +import org.ttzero.excel.entity.ListSheet; import org.ttzero.excel.entity.TemplateSheet; import org.ttzero.excel.entity.Workbook; import javax.annotation.Resource; import javax.servlet.http.HttpServletResponse; +import javax.validation.constraints.NotEmpty; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.FileOutputStream; import java.io.IOException; import java.net.URLEncoder; +import java.nio.charset.StandardCharsets; import java.nio.file.Files; import java.nio.file.Path; import java.time.LocalDate; @@ -386,6 +385,23 @@ public class DeviceController extends ControllerBase { device.setServiceAgentName(customer.getAgencyCompanyName()); } } + if (StrUtil.isNotBlank(dto.getServiceAgentName())) { + TBaseCustomer customer = customerService.lambdaQuery() + .eq(TBaseCustomer::getDelIs, 0) + .eq(TBaseCustomer::getAgencyCompanyName, dto.getServiceAgentName()) + .one(); + if (Objects.isNull(customer)) { + sb.append("服务代理商不存在;"); + } else if (customer.getEnableState() == 0) { + sb.append("服务代理商状态为禁用;"); + } else { + device.setServiceAgentCode(customer.getAgencyCompanyCode()); + device.setServiceAgentName(customer.getAgencyCompanyName()); + } + }else { + device.setServiceAgentCode(device.getAgentCode()); + device.setServiceAgentName(device.getAgentName()); + } if (StrUtil.isNotBlank(dto.getAreaName())) { TBaseArea area = areaService.lambdaQuery().eq(TBaseArea::getDelIs, 0).eq(TBaseArea::getAreaName, dto.getAreaName()).one(); if (Objects.isNull(area)) { @@ -500,11 +516,11 @@ public class DeviceController extends ControllerBase { public void exportSelect(HttpServletResponse response, @RequestBody @NotEmpty List ids) throws Exception { List devices = deviceService.listByIds(ids); List states = dictionaryItemService.getListByDictionaryCode(Constant.DICTIONARY_DEVICE_STATE); - List datas = devices.stream().map(d -> { - DeviceUpdateImportDTO dto = new DeviceUpdateImportDTO(); - dto.setId(d.getId()); + List datas = devices.stream().map(d -> { + DeviceExportDTO dto = new DeviceExportDTO(); + dto.setId(String.valueOf(d.getId())); dto.setDeviceNo(d.getDeviceNo()); - dto.setDeviceName(d.getDeviceName()); + dto.setDeviceName(d.getCustomerName()+d.getDeviceNo()); dto.setDeviceType(d.getDeviceType()); dto.setDeviceTypeSub(d.getDeviceTypeSub()); dto.setModelNo(d.getModelNo()); @@ -512,22 +528,26 @@ public class DeviceController extends ControllerBase { dto.setCustomerName(d.getCustomerName()); dto.setAgentName(d.getAgentName()); dto.setAreaName(d.getAreaName()); + dto.setAddress(d.getAddress()); dto.setShipmentDate(DateTimeUtil.format(d.getShipmentDate(), "yyyy-MM-dd")); dto.setStartWarrantyDate(DateTimeUtil.format(d.getStartWarrantyDate(), "yyyy-MM-dd")); if (Objects.nonNull(d.getWarrantyMonth())) { dto.setWarrantyMonth(String.valueOf(d.getWarrantyMonth())); } + dto.setProductLine(d.getProductLine()); + dto.setServiceAgentName(d.getServiceAgentName()); return dto; }).collect(Collectors.toList()); response.setContentType(MediaType.APPLICATION_OCTET_STREAM_VALUE); - response.setHeader(HttpHeaders.CONTENT_DISPOSITION, "attachment;filename=" + URLEncoder.encode("设备更新.xlsx", "UTF-8")); - ClassPathResource resource = new ClassPathResource("templates/deviceForUpdate.xlsx"); - new Workbook() - .addSheet(new TemplateSheet(resource.getInputStream()) - .setData(datas) - .setData("@list:deviceStateDesc", dictionaryItemService.getListByDictionaryCode(Constant.DICTIONARY_DEVICE_STATE) - .stream().map(DictionaryItem::getName).collect(Collectors.toList()))) - .writeTo(response.getOutputStream()); + response.setHeader(HttpHeaders.CONTENT_DISPOSITION, "attachment;filename=" + URLEncoder.encode("设备导出.xlsx", StandardCharsets.UTF_8)); +// ClassPathResource resource = new ClassPathResource("templates/deviceForUpdate.xlsx"); +// new Workbook() +// .addSheet(new TemplateSheet(resource.getInputStream()) +// .setData(datas) +// .setData("@list:deviceStateDesc", dictionaryItemService.getListByDictionaryCode(Constant.DICTIONARY_DEVICE_STATE) +// .stream().map(DictionaryItem::getName).collect(Collectors.toList()))) +// .writeTo(response.getOutputStream()); + new Workbook().addSheet(new ListSheet<>(datas)).writeTo(response.getOutputStream()); } /** @@ -567,13 +587,16 @@ public class DeviceController extends ControllerBase { List devices = new ArrayList<>(); List deviceTypes = new ArrayList<>(); List deviceComponents = new ArrayList<>(); + List dbDevices = deviceService.listByIds(data.stream().map(DeviceUpdateImportDTO::getId).collect(Collectors.toList())); + List deviceAgentRecords = new ArrayList<>(); + List customers = customerService.list(); for (DeviceUpdateImportDTO dto : data) { GongfuDevice device = new GongfuDevice(); StringBuilder sb = new StringBuilder(); if (Objects.isNull(dto.getId())) { sb.append("id不能为空;"); } else { - device = deviceService.getById(dto.getId()); + device = dbDevices.stream().filter(d -> d.getId().equals(dto.getId())).findFirst().orElse(null); if (Objects.isNull(device)) { sb.append("设备不存在;"); device = new GongfuDevice(); @@ -638,17 +661,51 @@ public class DeviceController extends ControllerBase { device.setAgentName(""); device.setAgentCode(""); } - if (StrUtil.isNotBlank(dto.getAreaName())) { - TBaseArea area = areaService.lambdaQuery().eq(TBaseArea::getDelIs, 0).eq(TBaseArea::getAreaName, dto.getAreaName()).one(); - if (Objects.isNull(area)) { - sb.append("区域不存在;"); - } else if (area.getAreaState().intValue() == 0) { - sb.append("区域为禁用;"); + String oldServiceAgentName = device.getServiceAgentName(); + if (StrUtil.isNotBlank(dto.getServiceAgentName())) { + TBaseCustomer customer = customerService.lambdaQuery() + .eq(TBaseCustomer::getDelIs, 0) + .eq(TBaseCustomer::getAgencyCompanyName, dto.getServiceAgentName()) + .one(); + if (Objects.isNull(customer)) { + sb.append("服务代理商不存在;"); + } else if (customer.getEnableState() == 0) { + sb.append("服务代理商状态为禁用;"); } else { - device.setAreaName(area.getAreaName()); - device.setAreaCode(area.getAreaCode()); + device.setServiceAgentCode(customer.getAgencyCompanyName()); + device.setServiceAgentName(customer.getAgencyCompanyCode()); } - } else { + }else { + device.setServiceAgentCode(""); + device.setServiceAgentName(""); + } + if (Objects.nonNull(device.getId()) && StrUtil.equals(device.getServiceAgentName(),oldServiceAgentName)){ + deviceAgentRecords.add(new GongfuDeviceAgentRecord() + .setDeviceId(device.getId()) + .setAgentCode(device.getServiceAgentCode()) + .setAgentName(device.getServiceAgentName()) + .setCreateById(AdminUserUtil.getUserId()) + .setCreateBy(AdminUserUtil.getUserName()) + .setCreateTime(LocalDateTime.now()) + ); + } + if (StrUtil.isNotBlank(dto.getAreaName())) { + List areaNames = StrUtil.split(dto.getAreaName(), ","); + List areas = areaService.lambdaQuery() + .eq(TBaseArea::getDelIs, 0) + .in(TBaseArea::getAreaName, areaNames) + .list(); + areaNames.forEach(name -> { + TBaseArea area = areas.stream().filter(a -> StrUtil.equals(a.getAreaName(), name)).findFirst().orElse(null); + if (Objects.isNull(area)) { + sb.append("区域").append(name).append("不存在;"); + } else if (area.getAreaState().intValue() == 0) { + sb.append("区域").append(name).append("为禁用;"); + } + }); + device.setAreaName(dto.getAreaName()); + device.setAreaCode(StrUtil.join(",",areas.stream().map(TBaseArea::getAreaCode).collect(Collectors.toList()))); + }else { device.setAreaName(""); device.setAreaCode(""); } @@ -739,6 +796,9 @@ public class DeviceController extends ControllerBase { if (CollUtil.isNotEmpty(deviceComponents)) { deviceComponentService.saveBatch(deviceComponents); } + if (CollUtil.isNotEmpty(deviceAgentRecords)){ + gongfuDeviceAgentRecordService.saveBatch(deviceAgentRecords); + } return true; } return false; diff --git a/nflg-mobilebroken-gongfu/src/main/java/com/nflg/mobilebroken/gongfu/pojo/dto/DeviceAddImportDTO.java b/nflg-mobilebroken-gongfu/src/main/java/com/nflg/mobilebroken/gongfu/pojo/dto/DeviceAddImportDTO.java index ed372b4b..e7824d7e 100644 --- a/nflg-mobilebroken-gongfu/src/main/java/com/nflg/mobilebroken/gongfu/pojo/dto/DeviceAddImportDTO.java +++ b/nflg-mobilebroken-gongfu/src/main/java/com/nflg/mobilebroken/gongfu/pojo/dto/DeviceAddImportDTO.java @@ -62,6 +62,12 @@ public class DeviceAddImportDTO { @ExcelColumn("代理商") private String agentName; + /** + * 服务代理商名称 + */ + @ExcelColumn("服务代理商") + private String serviceAgentName; + /** * 区域名称 */ diff --git a/nflg-mobilebroken-gongfu/src/main/java/com/nflg/mobilebroken/gongfu/pojo/dto/DeviceExportDTO.java b/nflg-mobilebroken-gongfu/src/main/java/com/nflg/mobilebroken/gongfu/pojo/dto/DeviceExportDTO.java new file mode 100644 index 00000000..068f0631 --- /dev/null +++ b/nflg-mobilebroken-gongfu/src/main/java/com/nflg/mobilebroken/gongfu/pojo/dto/DeviceExportDTO.java @@ -0,0 +1,108 @@ +package com.nflg.mobilebroken.gongfu.pojo.dto; + +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; +import org.ttzero.excel.annotation.ExcelColumn; + +@EqualsAndHashCode(callSuper = false) +@Data +@Accessors(chain = true) +public class DeviceExportDTO { + + /** + * id + */ + @ExcelColumn("id*") + private String id; + + /** + * 产品线 + */ + @ExcelColumn("产品线*") + private String productLine; + + /** + * 设备编号 + */ + @ExcelColumn("设备编号*") + private String deviceNo; + + /** + * 设备名称 + */ + @ExcelColumn("设备名称") + private String deviceName; + + /** + * 设备类型 + */ + @ExcelColumn("设备类型*") + private String deviceType; + + /** + * 设备类型细分 + */ + @ExcelColumn("设备类型细分*") + private String deviceTypeSub; + + /** + * 设备机型 + */ + @ExcelColumn("设备机型*") + private String modelNo; + + /** + * 设备状态-来自字典 + */ + @ExcelColumn("设备状态*") + private String deviceStateDesc; + + /** + * 客户名称 + */ + @ExcelColumn("客户名称") + private String customerName; + + /** + * 代理商名称 + */ + @ExcelColumn("代理商") + private String agentName; + + /** + * 服务代理商名称 + */ + @ExcelColumn("服务代理商") + private String serviceAgentName; + + /** + * 区域名称 + */ + @ExcelColumn("区域") + private String areaName; + + /** + * 发货日期 + */ + @ExcelColumn("发货日期") + private String shipmentDate; + + /** + * 开始质保日期 + */ + @ExcelColumn("开始质保日期") + private String startWarrantyDate; + + /** + * 质保期(月) + */ + @ExcelColumn("质保期(月)") + private String warrantyMonth; + + /** + * 设备地址 + */ + @ExcelColumn("设备地址") + private String address; +}