diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/customer/CustomerController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/customer/CustomerController.java index 31464eb..9f900d4 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/customer/CustomerController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/customer/CustomerController.java @@ -14,19 +14,22 @@ import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.exception.BusinessException; import com.casic.missiles.model.customer.CustomerInfo; +import com.casic.missiles.model.customer.CustomerInfoImport; +import com.casic.missiles.model.customer.CustomerSampleInfo; +import com.casic.missiles.model.customer.CustomerSampleInfoImport; import com.casic.missiles.model.exception.enums.CoreExceptionEnum; import com.casic.missiles.service.customer.CustomerService; +import com.casic.missiles.utils.ConvertUtils; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.AllArgsConstructor; import org.springframework.validation.BindingResult; -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 org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletResponse; import javax.validation.Valid; +import java.util.ArrayList; import java.util.List; import java.util.Objects; @@ -66,6 +69,19 @@ return customerService.addCustomer(customerInfo); } + @ApiOperation("批量导入客户") + @PostMapping(value = "/import", headers = "content-type=multipart/form-data") + @ResponseBody + public ReturnDTO importBatch(@RequestParam MultipartFile[] multipartFile) throws Exception { + List sourceList = new ArrayList(); + for (MultipartFile file : multipartFile) { + List list = super.importExcel(CustomerInfoImport.class, file, null, null); + sourceList.addAll(list); + } + List targetList = ConvertUtils.sourceToTarget(sourceList, CustomerInfo.class); + return customerService.addCustomerList(targetList); + } + @ApiOperation("客户更新") @PostMapping("/update") public ReturnDTO updateCustomer(@RequestBody @Valid CustomerInfo customerInfo, BindingResult bindingResult) { diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/customer/CustomerController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/customer/CustomerController.java index 31464eb..9f900d4 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/customer/CustomerController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/customer/CustomerController.java @@ -14,19 +14,22 @@ import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.exception.BusinessException; import com.casic.missiles.model.customer.CustomerInfo; +import com.casic.missiles.model.customer.CustomerInfoImport; +import com.casic.missiles.model.customer.CustomerSampleInfo; +import com.casic.missiles.model.customer.CustomerSampleInfoImport; import com.casic.missiles.model.exception.enums.CoreExceptionEnum; import com.casic.missiles.service.customer.CustomerService; +import com.casic.missiles.utils.ConvertUtils; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.AllArgsConstructor; import org.springframework.validation.BindingResult; -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 org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletResponse; import javax.validation.Valid; +import java.util.ArrayList; import java.util.List; import java.util.Objects; @@ -66,6 +69,19 @@ return customerService.addCustomer(customerInfo); } + @ApiOperation("批量导入客户") + @PostMapping(value = "/import", headers = "content-type=multipart/form-data") + @ResponseBody + public ReturnDTO importBatch(@RequestParam MultipartFile[] multipartFile) throws Exception { + List sourceList = new ArrayList(); + for (MultipartFile file : multipartFile) { + List list = super.importExcel(CustomerInfoImport.class, file, null, null); + sourceList.addAll(list); + } + List targetList = ConvertUtils.sourceToTarget(sourceList, CustomerInfo.class); + return customerService.addCustomerList(targetList); + } + @ApiOperation("客户更新") @PostMapping("/update") public ReturnDTO updateCustomer(@RequestBody @Valid CustomerInfo customerInfo, BindingResult bindingResult) { diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/customer/CustomerSampleController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/customer/CustomerSampleController.java index 62a43f0..5bbe947 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/customer/CustomerSampleController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/customer/CustomerSampleController.java @@ -13,19 +13,23 @@ import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.exception.BusinessException; import com.casic.missiles.model.customer.CustomerSampleInfo; +import com.casic.missiles.model.customer.CustomerSampleInfoImport; import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.model.meter.MeterTraceSupplier; +import com.casic.missiles.model.meter.MeterTraceSupplierImport; import com.casic.missiles.service.customer.CustomerSampleService; +import com.casic.missiles.utils.ConvertUtils; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.AllArgsConstructor; import org.springframework.validation.BindingResult; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletResponse; import javax.validation.Valid; +import java.util.ArrayList; +import java.util.List; import java.util.Objects; @Api(tags = "客户样本信息模块") @@ -55,6 +59,19 @@ return customerSampleService.addSample(customerSampleInfo); } + @ApiOperation("批量导入样品") + @PostMapping(value = "/import", headers = "content-type=multipart/form-data") + @ResponseBody + public ReturnDTO importBatch(@RequestParam MultipartFile[] multipartFile) throws Exception { + List sourceList = new ArrayList(); + for (MultipartFile file : multipartFile) { + List list = super.importExcel(CustomerSampleInfoImport.class, file, null, null); + sourceList.addAll(list); + } + List targetList = ConvertUtils.sourceToTarget(sourceList, CustomerSampleInfo.class); + return customerSampleService.addSampleList(targetList); + } + @ApiOperation("样品编辑") @PostMapping("/update") public ReturnDTO updateSample(@RequestBody @Valid CustomerSampleInfo customerSampleInfo, BindingResult bindingResult) { diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/customer/CustomerController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/customer/CustomerController.java index 31464eb..9f900d4 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/customer/CustomerController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/customer/CustomerController.java @@ -14,19 +14,22 @@ import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.exception.BusinessException; import com.casic.missiles.model.customer.CustomerInfo; +import com.casic.missiles.model.customer.CustomerInfoImport; +import com.casic.missiles.model.customer.CustomerSampleInfo; +import com.casic.missiles.model.customer.CustomerSampleInfoImport; import com.casic.missiles.model.exception.enums.CoreExceptionEnum; import com.casic.missiles.service.customer.CustomerService; +import com.casic.missiles.utils.ConvertUtils; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.AllArgsConstructor; import org.springframework.validation.BindingResult; -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 org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletResponse; import javax.validation.Valid; +import java.util.ArrayList; import java.util.List; import java.util.Objects; @@ -66,6 +69,19 @@ return customerService.addCustomer(customerInfo); } + @ApiOperation("批量导入客户") + @PostMapping(value = "/import", headers = "content-type=multipart/form-data") + @ResponseBody + public ReturnDTO importBatch(@RequestParam MultipartFile[] multipartFile) throws Exception { + List sourceList = new ArrayList(); + for (MultipartFile file : multipartFile) { + List list = super.importExcel(CustomerInfoImport.class, file, null, null); + sourceList.addAll(list); + } + List targetList = ConvertUtils.sourceToTarget(sourceList, CustomerInfo.class); + return customerService.addCustomerList(targetList); + } + @ApiOperation("客户更新") @PostMapping("/update") public ReturnDTO updateCustomer(@RequestBody @Valid CustomerInfo customerInfo, BindingResult bindingResult) { diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/customer/CustomerSampleController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/customer/CustomerSampleController.java index 62a43f0..5bbe947 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/customer/CustomerSampleController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/customer/CustomerSampleController.java @@ -13,19 +13,23 @@ import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.exception.BusinessException; import com.casic.missiles.model.customer.CustomerSampleInfo; +import com.casic.missiles.model.customer.CustomerSampleInfoImport; import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.model.meter.MeterTraceSupplier; +import com.casic.missiles.model.meter.MeterTraceSupplierImport; import com.casic.missiles.service.customer.CustomerSampleService; +import com.casic.missiles.utils.ConvertUtils; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.AllArgsConstructor; import org.springframework.validation.BindingResult; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletResponse; import javax.validation.Valid; +import java.util.ArrayList; +import java.util.List; import java.util.Objects; @Api(tags = "客户样本信息模块") @@ -55,6 +59,19 @@ return customerSampleService.addSample(customerSampleInfo); } + @ApiOperation("批量导入样品") + @PostMapping(value = "/import", headers = "content-type=multipart/form-data") + @ResponseBody + public ReturnDTO importBatch(@RequestParam MultipartFile[] multipartFile) throws Exception { + List sourceList = new ArrayList(); + for (MultipartFile file : multipartFile) { + List list = super.importExcel(CustomerSampleInfoImport.class, file, null, null); + sourceList.addAll(list); + } + List targetList = ConvertUtils.sourceToTarget(sourceList, CustomerSampleInfo.class); + return customerSampleService.addSampleList(targetList); + } + @ApiOperation("样品编辑") @PostMapping("/update") public ReturnDTO updateSample(@RequestBody @Valid CustomerSampleInfo customerSampleInfo, BindingResult bindingResult) { diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/customer/CustomerInfoImport.java b/casic-metering-model/src/main/java/com/casic/missiles/model/customer/CustomerInfoImport.java new file mode 100644 index 0000000..6bcb679 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/customer/CustomerInfoImport.java @@ -0,0 +1,76 @@ +package com.casic.missiles.model.customer; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import io.swagger.annotations.ApiModel; +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2023/5/29 16:21 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@ApiModel +@Data +public class CustomerInfoImport { + @ExcelProperty("公司名称") + private String customerName; + + @ExcelProperty("公司简称") + private String briefName; + + @ExcelProperty("业务内容") + private String businessContent; + + @ExcelProperty("税号") + private String taxNumber; + + @ExcelProperty("银行账户名") + private String bankAccount; + + @ExcelProperty("银行名称") + private String bankName; + + @ExcelProperty("银行账号") + private String bankAccountNumber; + + @ExcelProperty("邮编") + private String postalCode; + + @ExcelProperty("负责人") + private String director; + + @ExcelProperty("电话") + private String phone; + + @ExcelProperty("手机") + private String mobile; + + @ExcelProperty("邮箱") + private String email; + + @ExcelProperty("网址") + private String website; + + @ExcelProperty("履约评级") + private String grade; + + @ExcelProperty("公司规模") + private String companySize; + + @ExcelProperty("业务规模") + private String businessSize; + + @ExcelProperty("整体评价") + private String evaluation; +} diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/customer/CustomerController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/customer/CustomerController.java index 31464eb..9f900d4 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/customer/CustomerController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/customer/CustomerController.java @@ -14,19 +14,22 @@ import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.exception.BusinessException; import com.casic.missiles.model.customer.CustomerInfo; +import com.casic.missiles.model.customer.CustomerInfoImport; +import com.casic.missiles.model.customer.CustomerSampleInfo; +import com.casic.missiles.model.customer.CustomerSampleInfoImport; import com.casic.missiles.model.exception.enums.CoreExceptionEnum; import com.casic.missiles.service.customer.CustomerService; +import com.casic.missiles.utils.ConvertUtils; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.AllArgsConstructor; import org.springframework.validation.BindingResult; -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 org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletResponse; import javax.validation.Valid; +import java.util.ArrayList; import java.util.List; import java.util.Objects; @@ -66,6 +69,19 @@ return customerService.addCustomer(customerInfo); } + @ApiOperation("批量导入客户") + @PostMapping(value = "/import", headers = "content-type=multipart/form-data") + @ResponseBody + public ReturnDTO importBatch(@RequestParam MultipartFile[] multipartFile) throws Exception { + List sourceList = new ArrayList(); + for (MultipartFile file : multipartFile) { + List list = super.importExcel(CustomerInfoImport.class, file, null, null); + sourceList.addAll(list); + } + List targetList = ConvertUtils.sourceToTarget(sourceList, CustomerInfo.class); + return customerService.addCustomerList(targetList); + } + @ApiOperation("客户更新") @PostMapping("/update") public ReturnDTO updateCustomer(@RequestBody @Valid CustomerInfo customerInfo, BindingResult bindingResult) { diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/customer/CustomerSampleController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/customer/CustomerSampleController.java index 62a43f0..5bbe947 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/customer/CustomerSampleController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/customer/CustomerSampleController.java @@ -13,19 +13,23 @@ import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.exception.BusinessException; import com.casic.missiles.model.customer.CustomerSampleInfo; +import com.casic.missiles.model.customer.CustomerSampleInfoImport; import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.model.meter.MeterTraceSupplier; +import com.casic.missiles.model.meter.MeterTraceSupplierImport; import com.casic.missiles.service.customer.CustomerSampleService; +import com.casic.missiles.utils.ConvertUtils; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.AllArgsConstructor; import org.springframework.validation.BindingResult; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletResponse; import javax.validation.Valid; +import java.util.ArrayList; +import java.util.List; import java.util.Objects; @Api(tags = "客户样本信息模块") @@ -55,6 +59,19 @@ return customerSampleService.addSample(customerSampleInfo); } + @ApiOperation("批量导入样品") + @PostMapping(value = "/import", headers = "content-type=multipart/form-data") + @ResponseBody + public ReturnDTO importBatch(@RequestParam MultipartFile[] multipartFile) throws Exception { + List sourceList = new ArrayList(); + for (MultipartFile file : multipartFile) { + List list = super.importExcel(CustomerSampleInfoImport.class, file, null, null); + sourceList.addAll(list); + } + List targetList = ConvertUtils.sourceToTarget(sourceList, CustomerSampleInfo.class); + return customerSampleService.addSampleList(targetList); + } + @ApiOperation("样品编辑") @PostMapping("/update") public ReturnDTO updateSample(@RequestBody @Valid CustomerSampleInfo customerSampleInfo, BindingResult bindingResult) { diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/customer/CustomerInfoImport.java b/casic-metering-model/src/main/java/com/casic/missiles/model/customer/CustomerInfoImport.java new file mode 100644 index 0000000..6bcb679 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/customer/CustomerInfoImport.java @@ -0,0 +1,76 @@ +package com.casic.missiles.model.customer; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import io.swagger.annotations.ApiModel; +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2023/5/29 16:21 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@ApiModel +@Data +public class CustomerInfoImport { + @ExcelProperty("公司名称") + private String customerName; + + @ExcelProperty("公司简称") + private String briefName; + + @ExcelProperty("业务内容") + private String businessContent; + + @ExcelProperty("税号") + private String taxNumber; + + @ExcelProperty("银行账户名") + private String bankAccount; + + @ExcelProperty("银行名称") + private String bankName; + + @ExcelProperty("银行账号") + private String bankAccountNumber; + + @ExcelProperty("邮编") + private String postalCode; + + @ExcelProperty("负责人") + private String director; + + @ExcelProperty("电话") + private String phone; + + @ExcelProperty("手机") + private String mobile; + + @ExcelProperty("邮箱") + private String email; + + @ExcelProperty("网址") + private String website; + + @ExcelProperty("履约评级") + private String grade; + + @ExcelProperty("公司规模") + private String companySize; + + @ExcelProperty("业务规模") + private String businessSize; + + @ExcelProperty("整体评价") + private String evaluation; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/customer/CustomerSampleInfoImport.java b/casic-metering-model/src/main/java/com/casic/missiles/model/customer/CustomerSampleInfoImport.java new file mode 100644 index 0000000..f1f1b57 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/customer/CustomerSampleInfoImport.java @@ -0,0 +1,70 @@ +package com.casic.missiles.model.customer; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import io.swagger.annotations.ApiModel; +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2023/5/29 15:38 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@ApiModel +@Data +public class CustomerSampleInfoImport { + @ExcelProperty("样品所属") + private String sampleBelong; + + @ExcelProperty("样品名称") + private String sampleName; + + @ExcelProperty("样品型号") + private String sampleModel; + + @ExcelProperty("出厂编号") + private String manufacturingNo; + + @ExcelProperty("生产厂家") + private String manufacturer; + + @ExcelProperty("厂家国别") + private String manufacturerCountry; + + @ExcelProperty("出厂年月") + private String manufacturingDate; + + @ExcelProperty("ABC") + private String abc; + + @ExcelProperty("电源电压") + private String powerVoltage; + + @ExcelProperty("检定方式") + private String measureType; + + @ExcelProperty("检校类别") + private String measureCategory; + + @ExcelProperty("检定项目") + private String measureContent; + + @ExcelProperty("检定周期(月)") + private String measurePeriod; + + @ExcelProperty("备注") + private String remark; + + @ExcelProperty("标签绑定") + private String labelBind; +} diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/customer/CustomerController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/customer/CustomerController.java index 31464eb..9f900d4 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/customer/CustomerController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/customer/CustomerController.java @@ -14,19 +14,22 @@ import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.exception.BusinessException; import com.casic.missiles.model.customer.CustomerInfo; +import com.casic.missiles.model.customer.CustomerInfoImport; +import com.casic.missiles.model.customer.CustomerSampleInfo; +import com.casic.missiles.model.customer.CustomerSampleInfoImport; import com.casic.missiles.model.exception.enums.CoreExceptionEnum; import com.casic.missiles.service.customer.CustomerService; +import com.casic.missiles.utils.ConvertUtils; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.AllArgsConstructor; import org.springframework.validation.BindingResult; -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 org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletResponse; import javax.validation.Valid; +import java.util.ArrayList; import java.util.List; import java.util.Objects; @@ -66,6 +69,19 @@ return customerService.addCustomer(customerInfo); } + @ApiOperation("批量导入客户") + @PostMapping(value = "/import", headers = "content-type=multipart/form-data") + @ResponseBody + public ReturnDTO importBatch(@RequestParam MultipartFile[] multipartFile) throws Exception { + List sourceList = new ArrayList(); + for (MultipartFile file : multipartFile) { + List list = super.importExcel(CustomerInfoImport.class, file, null, null); + sourceList.addAll(list); + } + List targetList = ConvertUtils.sourceToTarget(sourceList, CustomerInfo.class); + return customerService.addCustomerList(targetList); + } + @ApiOperation("客户更新") @PostMapping("/update") public ReturnDTO updateCustomer(@RequestBody @Valid CustomerInfo customerInfo, BindingResult bindingResult) { diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/customer/CustomerSampleController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/customer/CustomerSampleController.java index 62a43f0..5bbe947 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/customer/CustomerSampleController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/customer/CustomerSampleController.java @@ -13,19 +13,23 @@ import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.exception.BusinessException; import com.casic.missiles.model.customer.CustomerSampleInfo; +import com.casic.missiles.model.customer.CustomerSampleInfoImport; import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.model.meter.MeterTraceSupplier; +import com.casic.missiles.model.meter.MeterTraceSupplierImport; import com.casic.missiles.service.customer.CustomerSampleService; +import com.casic.missiles.utils.ConvertUtils; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.AllArgsConstructor; import org.springframework.validation.BindingResult; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletResponse; import javax.validation.Valid; +import java.util.ArrayList; +import java.util.List; import java.util.Objects; @Api(tags = "客户样本信息模块") @@ -55,6 +59,19 @@ return customerSampleService.addSample(customerSampleInfo); } + @ApiOperation("批量导入样品") + @PostMapping(value = "/import", headers = "content-type=multipart/form-data") + @ResponseBody + public ReturnDTO importBatch(@RequestParam MultipartFile[] multipartFile) throws Exception { + List sourceList = new ArrayList(); + for (MultipartFile file : multipartFile) { + List list = super.importExcel(CustomerSampleInfoImport.class, file, null, null); + sourceList.addAll(list); + } + List targetList = ConvertUtils.sourceToTarget(sourceList, CustomerSampleInfo.class); + return customerSampleService.addSampleList(targetList); + } + @ApiOperation("样品编辑") @PostMapping("/update") public ReturnDTO updateSample(@RequestBody @Valid CustomerSampleInfo customerSampleInfo, BindingResult bindingResult) { diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/customer/CustomerInfoImport.java b/casic-metering-model/src/main/java/com/casic/missiles/model/customer/CustomerInfoImport.java new file mode 100644 index 0000000..6bcb679 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/customer/CustomerInfoImport.java @@ -0,0 +1,76 @@ +package com.casic.missiles.model.customer; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import io.swagger.annotations.ApiModel; +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2023/5/29 16:21 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@ApiModel +@Data +public class CustomerInfoImport { + @ExcelProperty("公司名称") + private String customerName; + + @ExcelProperty("公司简称") + private String briefName; + + @ExcelProperty("业务内容") + private String businessContent; + + @ExcelProperty("税号") + private String taxNumber; + + @ExcelProperty("银行账户名") + private String bankAccount; + + @ExcelProperty("银行名称") + private String bankName; + + @ExcelProperty("银行账号") + private String bankAccountNumber; + + @ExcelProperty("邮编") + private String postalCode; + + @ExcelProperty("负责人") + private String director; + + @ExcelProperty("电话") + private String phone; + + @ExcelProperty("手机") + private String mobile; + + @ExcelProperty("邮箱") + private String email; + + @ExcelProperty("网址") + private String website; + + @ExcelProperty("履约评级") + private String grade; + + @ExcelProperty("公司规模") + private String companySize; + + @ExcelProperty("业务规模") + private String businessSize; + + @ExcelProperty("整体评价") + private String evaluation; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/customer/CustomerSampleInfoImport.java b/casic-metering-model/src/main/java/com/casic/missiles/model/customer/CustomerSampleInfoImport.java new file mode 100644 index 0000000..f1f1b57 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/customer/CustomerSampleInfoImport.java @@ -0,0 +1,70 @@ +package com.casic.missiles.model.customer; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import io.swagger.annotations.ApiModel; +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2023/5/29 15:38 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@ApiModel +@Data +public class CustomerSampleInfoImport { + @ExcelProperty("样品所属") + private String sampleBelong; + + @ExcelProperty("样品名称") + private String sampleName; + + @ExcelProperty("样品型号") + private String sampleModel; + + @ExcelProperty("出厂编号") + private String manufacturingNo; + + @ExcelProperty("生产厂家") + private String manufacturer; + + @ExcelProperty("厂家国别") + private String manufacturerCountry; + + @ExcelProperty("出厂年月") + private String manufacturingDate; + + @ExcelProperty("ABC") + private String abc; + + @ExcelProperty("电源电压") + private String powerVoltage; + + @ExcelProperty("检定方式") + private String measureType; + + @ExcelProperty("检校类别") + private String measureCategory; + + @ExcelProperty("检定项目") + private String measureContent; + + @ExcelProperty("检定周期(月)") + private String measurePeriod; + + @ExcelProperty("备注") + private String remark; + + @ExcelProperty("标签绑定") + private String labelBind; +} diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/customer/CustomerSampleServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/customer/CustomerSampleServiceImpl.java index 277ea15..d3d8727 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/customer/CustomerSampleServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/customer/CustomerSampleServiceImpl.java @@ -24,6 +24,7 @@ import com.casic.missiles.model.business.BusinessOrderSampleRelation; import com.casic.missiles.model.customer.CustomerInfo; import com.casic.missiles.model.customer.CustomerSampleInfo; +import com.casic.missiles.model.meter.MeterTraceSupplier; import com.casic.missiles.service.customer.CustomerSampleService; import com.casic.missiles.utils.DictCodeUtils; import com.casic.missiles.utils.NumberGeneratorUtil; @@ -35,6 +36,8 @@ import org.springframework.util.ObjectUtils; import javax.servlet.http.HttpServletResponse; +import javax.validation.ConstraintViolation; +import javax.validation.Validation; import java.text.SimpleDateFormat; import java.util.*; import java.util.stream.Collectors; @@ -86,6 +89,26 @@ throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); } + @Override + @Transactional + public ReturnDTO addSampleList(List list) throws Exception { + //用于存储验证后的错误信息 + Long maxNo = this.baseMapper.selectMaxSampleNo(); + for (CustomerSampleInfo item : list) { + Set> validate = Validation.buildDefaultValidatorFactory().getValidator().validate(item); + if (!CollectionUtils.isEmpty(validate)) { + return ReturnUtil.failed(validate.iterator().next().getMessage()); + } + DictCodeUtils.validDictCode(item); + //生成编号 + String sampleNo = NumberGeneratorUtil.getContactNo(SAMPLE_PREFIX, maxNo); + item.setSampleNo(sampleNo); + maxNo++; + } + super.saveBatch(list); + return ReturnUtil.success(); + } + /** * 更新样品表,同时更新样品委托书关联状态表 */ diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/customer/CustomerController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/customer/CustomerController.java index 31464eb..9f900d4 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/customer/CustomerController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/customer/CustomerController.java @@ -14,19 +14,22 @@ import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.exception.BusinessException; import com.casic.missiles.model.customer.CustomerInfo; +import com.casic.missiles.model.customer.CustomerInfoImport; +import com.casic.missiles.model.customer.CustomerSampleInfo; +import com.casic.missiles.model.customer.CustomerSampleInfoImport; import com.casic.missiles.model.exception.enums.CoreExceptionEnum; import com.casic.missiles.service.customer.CustomerService; +import com.casic.missiles.utils.ConvertUtils; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.AllArgsConstructor; import org.springframework.validation.BindingResult; -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 org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletResponse; import javax.validation.Valid; +import java.util.ArrayList; import java.util.List; import java.util.Objects; @@ -66,6 +69,19 @@ return customerService.addCustomer(customerInfo); } + @ApiOperation("批量导入客户") + @PostMapping(value = "/import", headers = "content-type=multipart/form-data") + @ResponseBody + public ReturnDTO importBatch(@RequestParam MultipartFile[] multipartFile) throws Exception { + List sourceList = new ArrayList(); + for (MultipartFile file : multipartFile) { + List list = super.importExcel(CustomerInfoImport.class, file, null, null); + sourceList.addAll(list); + } + List targetList = ConvertUtils.sourceToTarget(sourceList, CustomerInfo.class); + return customerService.addCustomerList(targetList); + } + @ApiOperation("客户更新") @PostMapping("/update") public ReturnDTO updateCustomer(@RequestBody @Valid CustomerInfo customerInfo, BindingResult bindingResult) { diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/customer/CustomerSampleController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/customer/CustomerSampleController.java index 62a43f0..5bbe947 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/customer/CustomerSampleController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/customer/CustomerSampleController.java @@ -13,19 +13,23 @@ import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.exception.BusinessException; import com.casic.missiles.model.customer.CustomerSampleInfo; +import com.casic.missiles.model.customer.CustomerSampleInfoImport; import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.model.meter.MeterTraceSupplier; +import com.casic.missiles.model.meter.MeterTraceSupplierImport; import com.casic.missiles.service.customer.CustomerSampleService; +import com.casic.missiles.utils.ConvertUtils; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.AllArgsConstructor; import org.springframework.validation.BindingResult; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletResponse; import javax.validation.Valid; +import java.util.ArrayList; +import java.util.List; import java.util.Objects; @Api(tags = "客户样本信息模块") @@ -55,6 +59,19 @@ return customerSampleService.addSample(customerSampleInfo); } + @ApiOperation("批量导入样品") + @PostMapping(value = "/import", headers = "content-type=multipart/form-data") + @ResponseBody + public ReturnDTO importBatch(@RequestParam MultipartFile[] multipartFile) throws Exception { + List sourceList = new ArrayList(); + for (MultipartFile file : multipartFile) { + List list = super.importExcel(CustomerSampleInfoImport.class, file, null, null); + sourceList.addAll(list); + } + List targetList = ConvertUtils.sourceToTarget(sourceList, CustomerSampleInfo.class); + return customerSampleService.addSampleList(targetList); + } + @ApiOperation("样品编辑") @PostMapping("/update") public ReturnDTO updateSample(@RequestBody @Valid CustomerSampleInfo customerSampleInfo, BindingResult bindingResult) { diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/customer/CustomerInfoImport.java b/casic-metering-model/src/main/java/com/casic/missiles/model/customer/CustomerInfoImport.java new file mode 100644 index 0000000..6bcb679 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/customer/CustomerInfoImport.java @@ -0,0 +1,76 @@ +package com.casic.missiles.model.customer; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import io.swagger.annotations.ApiModel; +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2023/5/29 16:21 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@ApiModel +@Data +public class CustomerInfoImport { + @ExcelProperty("公司名称") + private String customerName; + + @ExcelProperty("公司简称") + private String briefName; + + @ExcelProperty("业务内容") + private String businessContent; + + @ExcelProperty("税号") + private String taxNumber; + + @ExcelProperty("银行账户名") + private String bankAccount; + + @ExcelProperty("银行名称") + private String bankName; + + @ExcelProperty("银行账号") + private String bankAccountNumber; + + @ExcelProperty("邮编") + private String postalCode; + + @ExcelProperty("负责人") + private String director; + + @ExcelProperty("电话") + private String phone; + + @ExcelProperty("手机") + private String mobile; + + @ExcelProperty("邮箱") + private String email; + + @ExcelProperty("网址") + private String website; + + @ExcelProperty("履约评级") + private String grade; + + @ExcelProperty("公司规模") + private String companySize; + + @ExcelProperty("业务规模") + private String businessSize; + + @ExcelProperty("整体评价") + private String evaluation; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/customer/CustomerSampleInfoImport.java b/casic-metering-model/src/main/java/com/casic/missiles/model/customer/CustomerSampleInfoImport.java new file mode 100644 index 0000000..f1f1b57 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/customer/CustomerSampleInfoImport.java @@ -0,0 +1,70 @@ +package com.casic.missiles.model.customer; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import io.swagger.annotations.ApiModel; +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2023/5/29 15:38 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@ApiModel +@Data +public class CustomerSampleInfoImport { + @ExcelProperty("样品所属") + private String sampleBelong; + + @ExcelProperty("样品名称") + private String sampleName; + + @ExcelProperty("样品型号") + private String sampleModel; + + @ExcelProperty("出厂编号") + private String manufacturingNo; + + @ExcelProperty("生产厂家") + private String manufacturer; + + @ExcelProperty("厂家国别") + private String manufacturerCountry; + + @ExcelProperty("出厂年月") + private String manufacturingDate; + + @ExcelProperty("ABC") + private String abc; + + @ExcelProperty("电源电压") + private String powerVoltage; + + @ExcelProperty("检定方式") + private String measureType; + + @ExcelProperty("检校类别") + private String measureCategory; + + @ExcelProperty("检定项目") + private String measureContent; + + @ExcelProperty("检定周期(月)") + private String measurePeriod; + + @ExcelProperty("备注") + private String remark; + + @ExcelProperty("标签绑定") + private String labelBind; +} diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/customer/CustomerSampleServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/customer/CustomerSampleServiceImpl.java index 277ea15..d3d8727 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/customer/CustomerSampleServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/customer/CustomerSampleServiceImpl.java @@ -24,6 +24,7 @@ import com.casic.missiles.model.business.BusinessOrderSampleRelation; import com.casic.missiles.model.customer.CustomerInfo; import com.casic.missiles.model.customer.CustomerSampleInfo; +import com.casic.missiles.model.meter.MeterTraceSupplier; import com.casic.missiles.service.customer.CustomerSampleService; import com.casic.missiles.utils.DictCodeUtils; import com.casic.missiles.utils.NumberGeneratorUtil; @@ -35,6 +36,8 @@ import org.springframework.util.ObjectUtils; import javax.servlet.http.HttpServletResponse; +import javax.validation.ConstraintViolation; +import javax.validation.Validation; import java.text.SimpleDateFormat; import java.util.*; import java.util.stream.Collectors; @@ -86,6 +89,26 @@ throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); } + @Override + @Transactional + public ReturnDTO addSampleList(List list) throws Exception { + //用于存储验证后的错误信息 + Long maxNo = this.baseMapper.selectMaxSampleNo(); + for (CustomerSampleInfo item : list) { + Set> validate = Validation.buildDefaultValidatorFactory().getValidator().validate(item); + if (!CollectionUtils.isEmpty(validate)) { + return ReturnUtil.failed(validate.iterator().next().getMessage()); + } + DictCodeUtils.validDictCode(item); + //生成编号 + String sampleNo = NumberGeneratorUtil.getContactNo(SAMPLE_PREFIX, maxNo); + item.setSampleNo(sampleNo); + maxNo++; + } + super.saveBatch(list); + return ReturnUtil.success(); + } + /** * 更新样品表,同时更新样品委托书关联状态表 */ diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/customer/CustomerServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/customer/CustomerServiceImpl.java index 8277712..77a64d0 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/customer/CustomerServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/customer/CustomerServiceImpl.java @@ -20,6 +20,7 @@ import com.casic.missiles.mapper.customer.customize.CustomerInfoResponseMapper; import com.casic.missiles.mapper.customer.customize.SampleRecordsResponseMapper; import com.casic.missiles.model.customer.CustomerInfo; +import com.casic.missiles.model.customer.CustomerSampleInfo; import com.casic.missiles.model.customer.CustomerUserInfo; import com.casic.missiles.service.customer.CustomerService; import com.casic.missiles.utils.DictCodeUtils; @@ -33,7 +34,10 @@ import org.springframework.util.CollectionUtils; import javax.servlet.http.HttpServletResponse; +import javax.validation.ConstraintViolation; +import javax.validation.Validation; import java.util.List; +import java.util.Set; @Service @Slf4j @@ -80,6 +84,26 @@ @Override @Transactional + public ReturnDTO addCustomerList(List list) throws Exception { + //用于存储验证后的错误信息 + Long maxNo = this.baseMapper.selectMaxCustomerNo(); + for (CustomerInfo item : list) { + Set> validate = Validation.buildDefaultValidatorFactory().getValidator().validate(item); + if (!CollectionUtils.isEmpty(validate)) { + return ReturnUtil.failed(validate.iterator().next().getMessage()); + } + DictCodeUtils.validDictCode(item); + //生成编号 + String customerNo = NumberGeneratorUtil.getContactNo(CUSTOMER_PREFIX, maxNo); + item.setCustomerNo(customerNo); + maxNo++; + } + super.saveBatch(list); + return ReturnUtil.success(); + } + + @Override + @Transactional public ReturnDTO updateCustomer(CustomerInfo customerInfo) { AuthUser authUser = ShiroKit.getUser(); customerInfo.setUpdateUser(authUser.getId()); diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/customer/CustomerController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/customer/CustomerController.java index 31464eb..9f900d4 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/customer/CustomerController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/customer/CustomerController.java @@ -14,19 +14,22 @@ import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.exception.BusinessException; import com.casic.missiles.model.customer.CustomerInfo; +import com.casic.missiles.model.customer.CustomerInfoImport; +import com.casic.missiles.model.customer.CustomerSampleInfo; +import com.casic.missiles.model.customer.CustomerSampleInfoImport; import com.casic.missiles.model.exception.enums.CoreExceptionEnum; import com.casic.missiles.service.customer.CustomerService; +import com.casic.missiles.utils.ConvertUtils; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.AllArgsConstructor; import org.springframework.validation.BindingResult; -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 org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletResponse; import javax.validation.Valid; +import java.util.ArrayList; import java.util.List; import java.util.Objects; @@ -66,6 +69,19 @@ return customerService.addCustomer(customerInfo); } + @ApiOperation("批量导入客户") + @PostMapping(value = "/import", headers = "content-type=multipart/form-data") + @ResponseBody + public ReturnDTO importBatch(@RequestParam MultipartFile[] multipartFile) throws Exception { + List sourceList = new ArrayList(); + for (MultipartFile file : multipartFile) { + List list = super.importExcel(CustomerInfoImport.class, file, null, null); + sourceList.addAll(list); + } + List targetList = ConvertUtils.sourceToTarget(sourceList, CustomerInfo.class); + return customerService.addCustomerList(targetList); + } + @ApiOperation("客户更新") @PostMapping("/update") public ReturnDTO updateCustomer(@RequestBody @Valid CustomerInfo customerInfo, BindingResult bindingResult) { diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/customer/CustomerSampleController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/customer/CustomerSampleController.java index 62a43f0..5bbe947 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/customer/CustomerSampleController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/customer/CustomerSampleController.java @@ -13,19 +13,23 @@ import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.exception.BusinessException; import com.casic.missiles.model.customer.CustomerSampleInfo; +import com.casic.missiles.model.customer.CustomerSampleInfoImport; import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.model.meter.MeterTraceSupplier; +import com.casic.missiles.model.meter.MeterTraceSupplierImport; import com.casic.missiles.service.customer.CustomerSampleService; +import com.casic.missiles.utils.ConvertUtils; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.AllArgsConstructor; import org.springframework.validation.BindingResult; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletResponse; import javax.validation.Valid; +import java.util.ArrayList; +import java.util.List; import java.util.Objects; @Api(tags = "客户样本信息模块") @@ -55,6 +59,19 @@ return customerSampleService.addSample(customerSampleInfo); } + @ApiOperation("批量导入样品") + @PostMapping(value = "/import", headers = "content-type=multipart/form-data") + @ResponseBody + public ReturnDTO importBatch(@RequestParam MultipartFile[] multipartFile) throws Exception { + List sourceList = new ArrayList(); + for (MultipartFile file : multipartFile) { + List list = super.importExcel(CustomerSampleInfoImport.class, file, null, null); + sourceList.addAll(list); + } + List targetList = ConvertUtils.sourceToTarget(sourceList, CustomerSampleInfo.class); + return customerSampleService.addSampleList(targetList); + } + @ApiOperation("样品编辑") @PostMapping("/update") public ReturnDTO updateSample(@RequestBody @Valid CustomerSampleInfo customerSampleInfo, BindingResult bindingResult) { diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/customer/CustomerInfoImport.java b/casic-metering-model/src/main/java/com/casic/missiles/model/customer/CustomerInfoImport.java new file mode 100644 index 0000000..6bcb679 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/customer/CustomerInfoImport.java @@ -0,0 +1,76 @@ +package com.casic.missiles.model.customer; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import io.swagger.annotations.ApiModel; +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2023/5/29 16:21 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@ApiModel +@Data +public class CustomerInfoImport { + @ExcelProperty("公司名称") + private String customerName; + + @ExcelProperty("公司简称") + private String briefName; + + @ExcelProperty("业务内容") + private String businessContent; + + @ExcelProperty("税号") + private String taxNumber; + + @ExcelProperty("银行账户名") + private String bankAccount; + + @ExcelProperty("银行名称") + private String bankName; + + @ExcelProperty("银行账号") + private String bankAccountNumber; + + @ExcelProperty("邮编") + private String postalCode; + + @ExcelProperty("负责人") + private String director; + + @ExcelProperty("电话") + private String phone; + + @ExcelProperty("手机") + private String mobile; + + @ExcelProperty("邮箱") + private String email; + + @ExcelProperty("网址") + private String website; + + @ExcelProperty("履约评级") + private String grade; + + @ExcelProperty("公司规模") + private String companySize; + + @ExcelProperty("业务规模") + private String businessSize; + + @ExcelProperty("整体评价") + private String evaluation; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/customer/CustomerSampleInfoImport.java b/casic-metering-model/src/main/java/com/casic/missiles/model/customer/CustomerSampleInfoImport.java new file mode 100644 index 0000000..f1f1b57 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/customer/CustomerSampleInfoImport.java @@ -0,0 +1,70 @@ +package com.casic.missiles.model.customer; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import io.swagger.annotations.ApiModel; +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2023/5/29 15:38 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@ApiModel +@Data +public class CustomerSampleInfoImport { + @ExcelProperty("样品所属") + private String sampleBelong; + + @ExcelProperty("样品名称") + private String sampleName; + + @ExcelProperty("样品型号") + private String sampleModel; + + @ExcelProperty("出厂编号") + private String manufacturingNo; + + @ExcelProperty("生产厂家") + private String manufacturer; + + @ExcelProperty("厂家国别") + private String manufacturerCountry; + + @ExcelProperty("出厂年月") + private String manufacturingDate; + + @ExcelProperty("ABC") + private String abc; + + @ExcelProperty("电源电压") + private String powerVoltage; + + @ExcelProperty("检定方式") + private String measureType; + + @ExcelProperty("检校类别") + private String measureCategory; + + @ExcelProperty("检定项目") + private String measureContent; + + @ExcelProperty("检定周期(月)") + private String measurePeriod; + + @ExcelProperty("备注") + private String remark; + + @ExcelProperty("标签绑定") + private String labelBind; +} diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/customer/CustomerSampleServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/customer/CustomerSampleServiceImpl.java index 277ea15..d3d8727 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/customer/CustomerSampleServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/customer/CustomerSampleServiceImpl.java @@ -24,6 +24,7 @@ import com.casic.missiles.model.business.BusinessOrderSampleRelation; import com.casic.missiles.model.customer.CustomerInfo; import com.casic.missiles.model.customer.CustomerSampleInfo; +import com.casic.missiles.model.meter.MeterTraceSupplier; import com.casic.missiles.service.customer.CustomerSampleService; import com.casic.missiles.utils.DictCodeUtils; import com.casic.missiles.utils.NumberGeneratorUtil; @@ -35,6 +36,8 @@ import org.springframework.util.ObjectUtils; import javax.servlet.http.HttpServletResponse; +import javax.validation.ConstraintViolation; +import javax.validation.Validation; import java.text.SimpleDateFormat; import java.util.*; import java.util.stream.Collectors; @@ -86,6 +89,26 @@ throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); } + @Override + @Transactional + public ReturnDTO addSampleList(List list) throws Exception { + //用于存储验证后的错误信息 + Long maxNo = this.baseMapper.selectMaxSampleNo(); + for (CustomerSampleInfo item : list) { + Set> validate = Validation.buildDefaultValidatorFactory().getValidator().validate(item); + if (!CollectionUtils.isEmpty(validate)) { + return ReturnUtil.failed(validate.iterator().next().getMessage()); + } + DictCodeUtils.validDictCode(item); + //生成编号 + String sampleNo = NumberGeneratorUtil.getContactNo(SAMPLE_PREFIX, maxNo); + item.setSampleNo(sampleNo); + maxNo++; + } + super.saveBatch(list); + return ReturnUtil.success(); + } + /** * 更新样品表,同时更新样品委托书关联状态表 */ diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/customer/CustomerServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/customer/CustomerServiceImpl.java index 8277712..77a64d0 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/customer/CustomerServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/customer/CustomerServiceImpl.java @@ -20,6 +20,7 @@ import com.casic.missiles.mapper.customer.customize.CustomerInfoResponseMapper; import com.casic.missiles.mapper.customer.customize.SampleRecordsResponseMapper; import com.casic.missiles.model.customer.CustomerInfo; +import com.casic.missiles.model.customer.CustomerSampleInfo; import com.casic.missiles.model.customer.CustomerUserInfo; import com.casic.missiles.service.customer.CustomerService; import com.casic.missiles.utils.DictCodeUtils; @@ -33,7 +34,10 @@ import org.springframework.util.CollectionUtils; import javax.servlet.http.HttpServletResponse; +import javax.validation.ConstraintViolation; +import javax.validation.Validation; import java.util.List; +import java.util.Set; @Service @Slf4j @@ -80,6 +84,26 @@ @Override @Transactional + public ReturnDTO addCustomerList(List list) throws Exception { + //用于存储验证后的错误信息 + Long maxNo = this.baseMapper.selectMaxCustomerNo(); + for (CustomerInfo item : list) { + Set> validate = Validation.buildDefaultValidatorFactory().getValidator().validate(item); + if (!CollectionUtils.isEmpty(validate)) { + return ReturnUtil.failed(validate.iterator().next().getMessage()); + } + DictCodeUtils.validDictCode(item); + //生成编号 + String customerNo = NumberGeneratorUtil.getContactNo(CUSTOMER_PREFIX, maxNo); + item.setCustomerNo(customerNo); + maxNo++; + } + super.saveBatch(list); + return ReturnUtil.success(); + } + + @Override + @Transactional public ReturnDTO updateCustomer(CustomerInfo customerInfo) { AuthUser authUser = ShiroKit.getUser(); customerInfo.setUpdateUser(authUser.getId()); diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/customer/CustomerSampleService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/customer/CustomerSampleService.java index e53879a..0f19500 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/customer/CustomerSampleService.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/customer/CustomerSampleService.java @@ -5,8 +5,10 @@ import com.casic.missiles.dto.customer.sample.*; import com.casic.missiles.dto.customer.MeasureRecordsResponse; import com.casic.missiles.model.customer.CustomerSampleInfo; +import com.casic.missiles.model.meter.MeterTraceSupplier; import javax.servlet.http.HttpServletResponse; +import java.util.List; /** * @author cz @@ -17,6 +19,8 @@ ReturnDTO addSample(CustomerSampleInfo customerSampleInfo) throws Exception; + ReturnDTO addSampleList(List list) throws Exception; + ReturnDTO updateSample(CustomerSampleInfo customerSampleInfo); CustomerSampleInfo sampleDetail(Long id); @@ -27,25 +31,13 @@ Page measureRecordsById(CustomerSampleIdRequest customerSampleIdRequest); - Page listPageByOrder(Page page, OrderSampleListRequest request) throws Exception; - Page listPageByInterchange(Page page, InterchangeSampleListRequest request) throws Exception; Page listPageBySubpackage(Page page, SubpackageSampleListRequest request) throws Exception; Page listPageBySubpackageCertificate(Page page, InterchangeSampleListRequest request) throws Exception; - /** - * 根据 委托书id、样品编号、样品名称查询样品信息(分页) - * - * @param page - * @param orderId - * @param sampleNo - * @param sampleName - * @return - */ Page samplesByOderId(Page page, Long orderId, String sampleNo, String sampleName); - } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/customer/CustomerController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/customer/CustomerController.java index 31464eb..9f900d4 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/customer/CustomerController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/customer/CustomerController.java @@ -14,19 +14,22 @@ import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.exception.BusinessException; import com.casic.missiles.model.customer.CustomerInfo; +import com.casic.missiles.model.customer.CustomerInfoImport; +import com.casic.missiles.model.customer.CustomerSampleInfo; +import com.casic.missiles.model.customer.CustomerSampleInfoImport; import com.casic.missiles.model.exception.enums.CoreExceptionEnum; import com.casic.missiles.service.customer.CustomerService; +import com.casic.missiles.utils.ConvertUtils; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.AllArgsConstructor; import org.springframework.validation.BindingResult; -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 org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletResponse; import javax.validation.Valid; +import java.util.ArrayList; import java.util.List; import java.util.Objects; @@ -66,6 +69,19 @@ return customerService.addCustomer(customerInfo); } + @ApiOperation("批量导入客户") + @PostMapping(value = "/import", headers = "content-type=multipart/form-data") + @ResponseBody + public ReturnDTO importBatch(@RequestParam MultipartFile[] multipartFile) throws Exception { + List sourceList = new ArrayList(); + for (MultipartFile file : multipartFile) { + List list = super.importExcel(CustomerInfoImport.class, file, null, null); + sourceList.addAll(list); + } + List targetList = ConvertUtils.sourceToTarget(sourceList, CustomerInfo.class); + return customerService.addCustomerList(targetList); + } + @ApiOperation("客户更新") @PostMapping("/update") public ReturnDTO updateCustomer(@RequestBody @Valid CustomerInfo customerInfo, BindingResult bindingResult) { diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/customer/CustomerSampleController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/customer/CustomerSampleController.java index 62a43f0..5bbe947 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/customer/CustomerSampleController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/customer/CustomerSampleController.java @@ -13,19 +13,23 @@ import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.exception.BusinessException; import com.casic.missiles.model.customer.CustomerSampleInfo; +import com.casic.missiles.model.customer.CustomerSampleInfoImport; import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.model.meter.MeterTraceSupplier; +import com.casic.missiles.model.meter.MeterTraceSupplierImport; import com.casic.missiles.service.customer.CustomerSampleService; +import com.casic.missiles.utils.ConvertUtils; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.AllArgsConstructor; import org.springframework.validation.BindingResult; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletResponse; import javax.validation.Valid; +import java.util.ArrayList; +import java.util.List; import java.util.Objects; @Api(tags = "客户样本信息模块") @@ -55,6 +59,19 @@ return customerSampleService.addSample(customerSampleInfo); } + @ApiOperation("批量导入样品") + @PostMapping(value = "/import", headers = "content-type=multipart/form-data") + @ResponseBody + public ReturnDTO importBatch(@RequestParam MultipartFile[] multipartFile) throws Exception { + List sourceList = new ArrayList(); + for (MultipartFile file : multipartFile) { + List list = super.importExcel(CustomerSampleInfoImport.class, file, null, null); + sourceList.addAll(list); + } + List targetList = ConvertUtils.sourceToTarget(sourceList, CustomerSampleInfo.class); + return customerSampleService.addSampleList(targetList); + } + @ApiOperation("样品编辑") @PostMapping("/update") public ReturnDTO updateSample(@RequestBody @Valid CustomerSampleInfo customerSampleInfo, BindingResult bindingResult) { diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/customer/CustomerInfoImport.java b/casic-metering-model/src/main/java/com/casic/missiles/model/customer/CustomerInfoImport.java new file mode 100644 index 0000000..6bcb679 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/customer/CustomerInfoImport.java @@ -0,0 +1,76 @@ +package com.casic.missiles.model.customer; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import io.swagger.annotations.ApiModel; +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2023/5/29 16:21 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@ApiModel +@Data +public class CustomerInfoImport { + @ExcelProperty("公司名称") + private String customerName; + + @ExcelProperty("公司简称") + private String briefName; + + @ExcelProperty("业务内容") + private String businessContent; + + @ExcelProperty("税号") + private String taxNumber; + + @ExcelProperty("银行账户名") + private String bankAccount; + + @ExcelProperty("银行名称") + private String bankName; + + @ExcelProperty("银行账号") + private String bankAccountNumber; + + @ExcelProperty("邮编") + private String postalCode; + + @ExcelProperty("负责人") + private String director; + + @ExcelProperty("电话") + private String phone; + + @ExcelProperty("手机") + private String mobile; + + @ExcelProperty("邮箱") + private String email; + + @ExcelProperty("网址") + private String website; + + @ExcelProperty("履约评级") + private String grade; + + @ExcelProperty("公司规模") + private String companySize; + + @ExcelProperty("业务规模") + private String businessSize; + + @ExcelProperty("整体评价") + private String evaluation; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/customer/CustomerSampleInfoImport.java b/casic-metering-model/src/main/java/com/casic/missiles/model/customer/CustomerSampleInfoImport.java new file mode 100644 index 0000000..f1f1b57 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/customer/CustomerSampleInfoImport.java @@ -0,0 +1,70 @@ +package com.casic.missiles.model.customer; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import io.swagger.annotations.ApiModel; +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2023/5/29 15:38 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@ApiModel +@Data +public class CustomerSampleInfoImport { + @ExcelProperty("样品所属") + private String sampleBelong; + + @ExcelProperty("样品名称") + private String sampleName; + + @ExcelProperty("样品型号") + private String sampleModel; + + @ExcelProperty("出厂编号") + private String manufacturingNo; + + @ExcelProperty("生产厂家") + private String manufacturer; + + @ExcelProperty("厂家国别") + private String manufacturerCountry; + + @ExcelProperty("出厂年月") + private String manufacturingDate; + + @ExcelProperty("ABC") + private String abc; + + @ExcelProperty("电源电压") + private String powerVoltage; + + @ExcelProperty("检定方式") + private String measureType; + + @ExcelProperty("检校类别") + private String measureCategory; + + @ExcelProperty("检定项目") + private String measureContent; + + @ExcelProperty("检定周期(月)") + private String measurePeriod; + + @ExcelProperty("备注") + private String remark; + + @ExcelProperty("标签绑定") + private String labelBind; +} diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/customer/CustomerSampleServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/customer/CustomerSampleServiceImpl.java index 277ea15..d3d8727 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/customer/CustomerSampleServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/customer/CustomerSampleServiceImpl.java @@ -24,6 +24,7 @@ import com.casic.missiles.model.business.BusinessOrderSampleRelation; import com.casic.missiles.model.customer.CustomerInfo; import com.casic.missiles.model.customer.CustomerSampleInfo; +import com.casic.missiles.model.meter.MeterTraceSupplier; import com.casic.missiles.service.customer.CustomerSampleService; import com.casic.missiles.utils.DictCodeUtils; import com.casic.missiles.utils.NumberGeneratorUtil; @@ -35,6 +36,8 @@ import org.springframework.util.ObjectUtils; import javax.servlet.http.HttpServletResponse; +import javax.validation.ConstraintViolation; +import javax.validation.Validation; import java.text.SimpleDateFormat; import java.util.*; import java.util.stream.Collectors; @@ -86,6 +89,26 @@ throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); } + @Override + @Transactional + public ReturnDTO addSampleList(List list) throws Exception { + //用于存储验证后的错误信息 + Long maxNo = this.baseMapper.selectMaxSampleNo(); + for (CustomerSampleInfo item : list) { + Set> validate = Validation.buildDefaultValidatorFactory().getValidator().validate(item); + if (!CollectionUtils.isEmpty(validate)) { + return ReturnUtil.failed(validate.iterator().next().getMessage()); + } + DictCodeUtils.validDictCode(item); + //生成编号 + String sampleNo = NumberGeneratorUtil.getContactNo(SAMPLE_PREFIX, maxNo); + item.setSampleNo(sampleNo); + maxNo++; + } + super.saveBatch(list); + return ReturnUtil.success(); + } + /** * 更新样品表,同时更新样品委托书关联状态表 */ diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/customer/CustomerServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/customer/CustomerServiceImpl.java index 8277712..77a64d0 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/customer/CustomerServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/customer/CustomerServiceImpl.java @@ -20,6 +20,7 @@ import com.casic.missiles.mapper.customer.customize.CustomerInfoResponseMapper; import com.casic.missiles.mapper.customer.customize.SampleRecordsResponseMapper; import com.casic.missiles.model.customer.CustomerInfo; +import com.casic.missiles.model.customer.CustomerSampleInfo; import com.casic.missiles.model.customer.CustomerUserInfo; import com.casic.missiles.service.customer.CustomerService; import com.casic.missiles.utils.DictCodeUtils; @@ -33,7 +34,10 @@ import org.springframework.util.CollectionUtils; import javax.servlet.http.HttpServletResponse; +import javax.validation.ConstraintViolation; +import javax.validation.Validation; import java.util.List; +import java.util.Set; @Service @Slf4j @@ -80,6 +84,26 @@ @Override @Transactional + public ReturnDTO addCustomerList(List list) throws Exception { + //用于存储验证后的错误信息 + Long maxNo = this.baseMapper.selectMaxCustomerNo(); + for (CustomerInfo item : list) { + Set> validate = Validation.buildDefaultValidatorFactory().getValidator().validate(item); + if (!CollectionUtils.isEmpty(validate)) { + return ReturnUtil.failed(validate.iterator().next().getMessage()); + } + DictCodeUtils.validDictCode(item); + //生成编号 + String customerNo = NumberGeneratorUtil.getContactNo(CUSTOMER_PREFIX, maxNo); + item.setCustomerNo(customerNo); + maxNo++; + } + super.saveBatch(list); + return ReturnUtil.success(); + } + + @Override + @Transactional public ReturnDTO updateCustomer(CustomerInfo customerInfo) { AuthUser authUser = ShiroKit.getUser(); customerInfo.setUpdateUser(authUser.getId()); diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/customer/CustomerSampleService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/customer/CustomerSampleService.java index e53879a..0f19500 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/customer/CustomerSampleService.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/customer/CustomerSampleService.java @@ -5,8 +5,10 @@ import com.casic.missiles.dto.customer.sample.*; import com.casic.missiles.dto.customer.MeasureRecordsResponse; import com.casic.missiles.model.customer.CustomerSampleInfo; +import com.casic.missiles.model.meter.MeterTraceSupplier; import javax.servlet.http.HttpServletResponse; +import java.util.List; /** * @author cz @@ -17,6 +19,8 @@ ReturnDTO addSample(CustomerSampleInfo customerSampleInfo) throws Exception; + ReturnDTO addSampleList(List list) throws Exception; + ReturnDTO updateSample(CustomerSampleInfo customerSampleInfo); CustomerSampleInfo sampleDetail(Long id); @@ -27,25 +31,13 @@ Page measureRecordsById(CustomerSampleIdRequest customerSampleIdRequest); - Page listPageByOrder(Page page, OrderSampleListRequest request) throws Exception; - Page listPageByInterchange(Page page, InterchangeSampleListRequest request) throws Exception; Page listPageBySubpackage(Page page, SubpackageSampleListRequest request) throws Exception; Page listPageBySubpackageCertificate(Page page, InterchangeSampleListRequest request) throws Exception; - /** - * 根据 委托书id、样品编号、样品名称查询样品信息(分页) - * - * @param page - * @param orderId - * @param sampleNo - * @param sampleName - * @return - */ Page samplesByOderId(Page page, Long orderId, String sampleNo, String sampleName); - } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/customer/CustomerService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/customer/CustomerService.java index 3cfaeed..cffcdae 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/customer/CustomerService.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/customer/CustomerService.java @@ -17,6 +17,8 @@ ReturnDTO addCustomer(CustomerInfo customerInfo) throws Exception; + ReturnDTO addCustomerList(List list) throws Exception; + ReturnDTO updateCustomer(CustomerInfo customerInfo); CustomerInfo customerDetail(Long id); @@ -30,5 +32,4 @@ Page certificationByCustomerId(Long customerId); void customerExport(CustomerListRequest request, HttpServletResponse response); - }