From bc9e4fecf5dfc1a05238686e7faa68a15469584b Mon Sep 17 00:00:00 2001 From: starrysky <838252223@qq.com> Date: Tue, 27 Aug 2019 21:45:21 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8F=91=E8=B4=A7=E5=8D=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../modules/wms/invoice/domain/Invoice.java | 75 +++++++++ .../wms/invoice/domain/InvoiceProduct.java | 74 +++++++++ .../repository/InvoiceProductRepository.java | 16 ++ .../invoice/repository/InvoiceRepository.java | 14 ++ .../invoice/request/CreateInvoiceRequest.java | 51 ++++++ .../wms/invoice/rest/InvoiceController.java | 71 ++++++++ .../rest/InvoiceProductController.java | 61 +++++++ .../service/InvoiceProductService.java | 64 +++++++ .../wms/invoice/service/InvoiceService.java | 66 ++++++++ .../wms/invoice/service/dto/InvoiceDTO.java | 46 +++++ .../invoice/service/dto/InvoiceDetailDTO.java | 17 ++ .../service/dto/InvoiceProductDTO.java | 49 ++++++ .../dto/InvoiceProductQueryCriteria.java | 13 ++ .../service/dto/InvoiceQueryCriteria.java | 13 ++ .../impl/InvoiceProductServiceImpl.java | 73 ++++++++ .../service/impl/InvoiceServiceImpl.java | 157 ++++++++++++++++++ .../invoice/service/mapper/InvoiceMapper.java | 16 ++ .../service/mapper/InvoiceProductMapper.java | 16 ++ .../main/resources/config/application-dev.yml | 7 +- .../src/main/resources/config/application.yml | 2 +- 20 files changed, 897 insertions(+), 4 deletions(-) create mode 100644 eladmin-system/src/main/java/me/zhengjie/modules/wms/invoice/domain/Invoice.java create mode 100644 eladmin-system/src/main/java/me/zhengjie/modules/wms/invoice/domain/InvoiceProduct.java create mode 100644 eladmin-system/src/main/java/me/zhengjie/modules/wms/invoice/repository/InvoiceProductRepository.java create mode 100644 eladmin-system/src/main/java/me/zhengjie/modules/wms/invoice/repository/InvoiceRepository.java create mode 100644 eladmin-system/src/main/java/me/zhengjie/modules/wms/invoice/request/CreateInvoiceRequest.java create mode 100644 eladmin-system/src/main/java/me/zhengjie/modules/wms/invoice/rest/InvoiceController.java create mode 100644 eladmin-system/src/main/java/me/zhengjie/modules/wms/invoice/rest/InvoiceProductController.java create mode 100644 eladmin-system/src/main/java/me/zhengjie/modules/wms/invoice/service/InvoiceProductService.java create mode 100644 eladmin-system/src/main/java/me/zhengjie/modules/wms/invoice/service/InvoiceService.java create mode 100644 eladmin-system/src/main/java/me/zhengjie/modules/wms/invoice/service/dto/InvoiceDTO.java create mode 100644 eladmin-system/src/main/java/me/zhengjie/modules/wms/invoice/service/dto/InvoiceDetailDTO.java create mode 100644 eladmin-system/src/main/java/me/zhengjie/modules/wms/invoice/service/dto/InvoiceProductDTO.java create mode 100644 eladmin-system/src/main/java/me/zhengjie/modules/wms/invoice/service/dto/InvoiceProductQueryCriteria.java create mode 100644 eladmin-system/src/main/java/me/zhengjie/modules/wms/invoice/service/dto/InvoiceQueryCriteria.java create mode 100644 eladmin-system/src/main/java/me/zhengjie/modules/wms/invoice/service/impl/InvoiceProductServiceImpl.java create mode 100644 eladmin-system/src/main/java/me/zhengjie/modules/wms/invoice/service/impl/InvoiceServiceImpl.java create mode 100644 eladmin-system/src/main/java/me/zhengjie/modules/wms/invoice/service/mapper/InvoiceMapper.java create mode 100644 eladmin-system/src/main/java/me/zhengjie/modules/wms/invoice/service/mapper/InvoiceProductMapper.java diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/wms/invoice/domain/Invoice.java b/eladmin-system/src/main/java/me/zhengjie/modules/wms/invoice/domain/Invoice.java new file mode 100644 index 00000000..ff46f4b7 --- /dev/null +++ b/eladmin-system/src/main/java/me/zhengjie/modules/wms/invoice/domain/Invoice.java @@ -0,0 +1,75 @@ +package me.zhengjie.modules.wms.invoice.domain; + +import lombok.Data; +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.bean.copier.CopyOptions; +import javax.persistence.*; +import java.sql.Timestamp; +import java.io.Serializable; + +/** +* @author jie +* @date 2019-08-27 +*/ +@Entity +@Data +@Table(name="s_invoice") +public class Invoice implements Serializable { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + @Column(name = "id") + private Long id; + + @Column(name = "create_time") + private Timestamp createTime; + + @Column(name = "update_time") + private Timestamp updateTime; + + // 客户订单编号 + @Column(name = "customer_order_code") + private String customerOrderCode; + + // 收货地址 + @Column(name = "delivery_address") + private String deliveryAddress; + + // 收货人 + @Column(name = "consignee") + private String consignee; + + // 联系方式 + @Column(name = "contact_way") + private String contactWay; + + // 发票号 + @Column(name = "invoice_number") + private String invoiceNumber; + + // 物流公司 + @Column(name = "logistics_company") + private String logisticsCompany; + + // 销售发货单号 + @Column(name = "sale_invoice_code") + private String saleInvoiceCode; + + // 状态 + @Column(name = "status") + private Integer status; + + // 备注 + @Column(name = "remark") + private String remark; + + @Column(name = "customer_id") + private Long customerId; + + @Column(name = "customer_name") + private String customerName; + + public void copy(Invoice source){ + BeanUtil.copyProperties(source,this, CopyOptions.create().setIgnoreNullValue(true)); + } +} \ No newline at end of file diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/wms/invoice/domain/InvoiceProduct.java b/eladmin-system/src/main/java/me/zhengjie/modules/wms/invoice/domain/InvoiceProduct.java new file mode 100644 index 00000000..0affeb80 --- /dev/null +++ b/eladmin-system/src/main/java/me/zhengjie/modules/wms/invoice/domain/InvoiceProduct.java @@ -0,0 +1,74 @@ +package me.zhengjie.modules.wms.invoice.domain; + +import lombok.Data; +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.bean.copier.CopyOptions; +import javax.persistence.*; +import java.sql.Timestamp; +import java.io.Serializable; + +/** +* @author jie +* @date 2019-08-27 +*/ +@Entity +@Data +@Table(name="s_invoice_product") +public class InvoiceProduct implements Serializable { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + @Column(name = "id") + private Long id; + + // 创建时间 + @Column(name = "create_status") + private Timestamp createStatus; + + // 更新时间 + @Column(name = "update_status") + private Timestamp updateStatus; + + // 状态 + @Column(name = "status") + private Integer status; + + // 产品主键 + @Column(name = "product_id",nullable = false) + private Long productId; + + // 产品名称 + @Column(name = "product_name",nullable = false) + private String productName; + + // 产品编号 + @Column(name = "product_code",nullable = false) + private String productCode; + + // 规格 + @Column(name = "specifications") + private String specifications; + + // 订单数量 + @Column(name = "customer_order_number",nullable = false) + private Long customerOrderNumber; + + // 实际发货单数量 + @Column(name = "acutal_invoice_number",nullable = false) + private Long acutalInvoiceNumber; + + // 瘦瘦金额 + @Column(name = "sale_price") + private Long salePrice; + + // 备注 + @Column(name = "remark") + private String remark; + + @Column(name = "invoice_id") + private Long invoiceId; + + public void copy(InvoiceProduct source){ + BeanUtil.copyProperties(source,this, CopyOptions.create().setIgnoreNullValue(true)); + } +} \ No newline at end of file diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/wms/invoice/repository/InvoiceProductRepository.java b/eladmin-system/src/main/java/me/zhengjie/modules/wms/invoice/repository/InvoiceProductRepository.java new file mode 100644 index 00000000..13834a74 --- /dev/null +++ b/eladmin-system/src/main/java/me/zhengjie/modules/wms/invoice/repository/InvoiceProductRepository.java @@ -0,0 +1,16 @@ +package me.zhengjie.modules.wms.invoice.repository; + +import me.zhengjie.modules.wms.invoice.domain.InvoiceProduct; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.JpaSpecificationExecutor; + +import java.util.List; + +/** +* @author jie +* @date 2019-08-27 +*/ +public interface InvoiceProductRepository extends JpaRepository, JpaSpecificationExecutor { + + List findByInvoiceIdAndStatusTrue(Long invoiceId); +} \ No newline at end of file diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/wms/invoice/repository/InvoiceRepository.java b/eladmin-system/src/main/java/me/zhengjie/modules/wms/invoice/repository/InvoiceRepository.java new file mode 100644 index 00000000..6987eaf4 --- /dev/null +++ b/eladmin-system/src/main/java/me/zhengjie/modules/wms/invoice/repository/InvoiceRepository.java @@ -0,0 +1,14 @@ +package me.zhengjie.modules.wms.invoice.repository; + +import me.zhengjie.modules.wms.invoice.domain.Invoice; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.JpaSpecificationExecutor; + +/** +* @author jie +* @date 2019-08-27 +*/ +public interface InvoiceRepository extends JpaRepository, JpaSpecificationExecutor { + + Invoice findBySaleInvoiceCode(String saleInvoiceCode); +} \ No newline at end of file diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/wms/invoice/request/CreateInvoiceRequest.java b/eladmin-system/src/main/java/me/zhengjie/modules/wms/invoice/request/CreateInvoiceRequest.java new file mode 100644 index 00000000..bd6a337d --- /dev/null +++ b/eladmin-system/src/main/java/me/zhengjie/modules/wms/invoice/request/CreateInvoiceRequest.java @@ -0,0 +1,51 @@ +package me.zhengjie.modules.wms.invoice.request; + +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.bean.copier.CopyOptions; +import lombok.Data; +import me.zhengjie.modules.wms.invoice.domain.Invoice; +import me.zhengjie.modules.wms.invoice.domain.InvoiceProduct; + +import java.io.Serializable; +import java.util.List; + +/** + * @author 黄星星 + * @date 2019-08-27 + */ +@Data +public class CreateInvoiceRequest implements Serializable { + + // 客户订单编号 + private String customerOrderCode; + + // 收货地址 + private String deliveryAddress; + + // 收货人 + private String consignee; + + // 联系方式 + private String contactWay; + + // 发票号 + private String invoiceNumber; + + // 物流公司 + private String logisticsCompany; + + // 销售发货单号 + private String saleInvoiceCode; + + // 备注 + private String remark; + + // 客户ID + private Long customerId; + + private List invoiceProductList; + + public void copy(Invoice source){ + BeanUtil.copyProperties(source,this, CopyOptions.create().setIgnoreNullValue(true)); + } +} diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/wms/invoice/rest/InvoiceController.java b/eladmin-system/src/main/java/me/zhengjie/modules/wms/invoice/rest/InvoiceController.java new file mode 100644 index 00000000..622a592c --- /dev/null +++ b/eladmin-system/src/main/java/me/zhengjie/modules/wms/invoice/rest/InvoiceController.java @@ -0,0 +1,71 @@ +package me.zhengjie.modules.wms.invoice.rest; + +import me.zhengjie.aop.log.Log; +import me.zhengjie.modules.wms.invoice.domain.Invoice; +import me.zhengjie.modules.wms.invoice.request.CreateInvoiceRequest; +import me.zhengjie.modules.wms.invoice.service.InvoiceService; +import me.zhengjie.modules.wms.invoice.service.dto.InvoiceQueryCriteria; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.domain.Pageable; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; +import io.swagger.annotations.*; + +/** +* @author jie +* @date 2019-08-27 +*/ +@Api(tags = "SInvoice管理") +@RestController +@RequestMapping("api") +public class InvoiceController { + + @Autowired + private InvoiceService invoiceService; + + @Log("分页查询销售发货单") + @ApiOperation(value = "分页查询销售发货单") + @GetMapping(value = "/querySaleInvoicePage") + @PreAuthorize("hasAnyRole('ADMIN','SINVOICE_ALL','SINVOICE_SELECT')") + public ResponseEntity querySaleInvoicePage(InvoiceQueryCriteria criteria, Pageable pageable){ + return new ResponseEntity(invoiceService.queryAll(criteria,pageable),HttpStatus.OK); + } + + + @Log("查询销售发货单列表") + @ApiOperation(value = "查询销售发货单列表") + @GetMapping(value = "/querySaleInvoiceList") + @PreAuthorize("hasAnyRole('ADMIN','SINVOICE_ALL','SINVOICE_SELECT')") + public ResponseEntity querySaleInvoiceList(InvoiceQueryCriteria criteria){ + return new ResponseEntity(invoiceService.queryAll(criteria),HttpStatus.OK); + } + + @Log("新增销售发货单") + @ApiOperation(value = "新增销售发货单") + @PostMapping(value = "/invoice") + @PreAuthorize("hasAnyRole('ADMIN','SINVOICE_ALL','SINVOICE_CREATE')") + public ResponseEntity create(@RequestBody CreateInvoiceRequest createInvoiceRequest){ + return new ResponseEntity(invoiceService.create(createInvoiceRequest),HttpStatus.CREATED); + } + + @Log("修改销售发货单") + @ApiOperation(value = "修改销售发货单") + @PutMapping(value = "/invoice") + @PreAuthorize("hasAnyRole('ADMIN','SINVOICE_ALL','SINVOICE_EDIT')") + public ResponseEntity update(@Validated @RequestBody Invoice resources){ + invoiceService.update(resources); + return new ResponseEntity(HttpStatus.NO_CONTENT); + } + + @Log("删除销售发货单") + @ApiOperation(value = "删除销售发货单") + @DeleteMapping(value = "/sInvoice/{id}") + @PreAuthorize("hasAnyRole('ADMIN','SINVOICE_ALL','SINVOICE_DELETE')") + public ResponseEntity delete(@PathVariable Long id){ + invoiceService.delete(id); + return new ResponseEntity(HttpStatus.OK); + } +} \ No newline at end of file diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/wms/invoice/rest/InvoiceProductController.java b/eladmin-system/src/main/java/me/zhengjie/modules/wms/invoice/rest/InvoiceProductController.java new file mode 100644 index 00000000..07bef4c5 --- /dev/null +++ b/eladmin-system/src/main/java/me/zhengjie/modules/wms/invoice/rest/InvoiceProductController.java @@ -0,0 +1,61 @@ +package me.zhengjie.modules.wms.invoice.rest; + +import me.zhengjie.aop.log.Log; +import me.zhengjie.modules.wms.invoice.domain.InvoiceProduct; +import me.zhengjie.modules.wms.invoice.service.InvoiceProductService; +import me.zhengjie.modules.wms.invoice.service.dto.InvoiceProductQueryCriteria; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.domain.Pageable; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; +import io.swagger.annotations.*; + +/** +* @author jie +* @date 2019-08-27 +*/ +@Api(tags = "SInvoiceProduct管理") +@RestController +@RequestMapping("api") +public class InvoiceProductController { + + @Autowired + private InvoiceProductService invoiceProductService; + + @Log("查询SInvoiceProduct") + @ApiOperation(value = "查询SInvoiceProduct") + @GetMapping(value = "/sInvoiceProduct") + @PreAuthorize("hasAnyRole('ADMIN','SINVOICEPRODUCT_ALL','SINVOICEPRODUCT_SELECT')") + public ResponseEntity getSInvoiceProducts(InvoiceProductQueryCriteria criteria, Pageable pageable){ + return new ResponseEntity(invoiceProductService.queryAll(criteria,pageable),HttpStatus.OK); + } + + @Log("新增SInvoiceProduct") + @ApiOperation(value = "新增SInvoiceProduct") + @PostMapping(value = "/sInvoiceProduct") + @PreAuthorize("hasAnyRole('ADMIN','SINVOICEPRODUCT_ALL','SINVOICEPRODUCT_CREATE')") + public ResponseEntity create(@Validated @RequestBody InvoiceProduct resources){ + return new ResponseEntity(invoiceProductService.create(resources),HttpStatus.CREATED); + } + + @Log("修改SInvoiceProduct") + @ApiOperation(value = "修改SInvoiceProduct") + @PutMapping(value = "/sInvoiceProduct") + @PreAuthorize("hasAnyRole('ADMIN','SINVOICEPRODUCT_ALL','SINVOICEPRODUCT_EDIT')") + public ResponseEntity update(@Validated @RequestBody InvoiceProduct resources){ + invoiceProductService.update(resources); + return new ResponseEntity(HttpStatus.NO_CONTENT); + } + + @Log("删除SInvoiceProduct") + @ApiOperation(value = "删除SInvoiceProduct") + @DeleteMapping(value = "/sInvoiceProduct/{id}") + @PreAuthorize("hasAnyRole('ADMIN','SINVOICEPRODUCT_ALL','SINVOICEPRODUCT_DELETE')") + public ResponseEntity delete(@PathVariable Long id){ + invoiceProductService.delete(id); + return new ResponseEntity(HttpStatus.OK); + } +} \ No newline at end of file diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/wms/invoice/service/InvoiceProductService.java b/eladmin-system/src/main/java/me/zhengjie/modules/wms/invoice/service/InvoiceProductService.java new file mode 100644 index 00000000..5f35edc6 --- /dev/null +++ b/eladmin-system/src/main/java/me/zhengjie/modules/wms/invoice/service/InvoiceProductService.java @@ -0,0 +1,64 @@ +package me.zhengjie.modules.wms.invoice.service; + +import me.zhengjie.modules.wms.invoice.domain.InvoiceProduct; +import me.zhengjie.modules.wms.invoice.service.dto.InvoiceProductDTO; +import me.zhengjie.modules.wms.invoice.service.dto.InvoiceProductQueryCriteria; +//import org.springframework.cache.annotation.CacheConfig; +//import org.springframework.cache.annotation.CacheEvict; +//import org.springframework.cache.annotation.Cacheable; +import org.springframework.data.domain.Pageable; + +/** +* @author jie +* @date 2019-08-27 +*/ +//@CacheConfig(cacheNames = "sInvoiceProduct") +public interface InvoiceProductService { + + /** + * queryAll 分页 + * @param criteria + * @param pageable + * @return + */ + //@Cacheable(keyGenerator = "keyGenerator") + Object queryAll(InvoiceProductQueryCriteria criteria, Pageable pageable); + + /** + * queryAll 不分页 + * @param criteria + * @return + */ + //@Cacheable(keyGenerator = "keyGenerator") + public Object queryAll(InvoiceProductQueryCriteria criteria); + + /** + * findById + * @param id + * @return + */ + //@Cacheable(key = "#p0") + InvoiceProductDTO findById(Long id); + + /** + * create + * @param resources + * @return + */ + //@CacheEvict(allEntries = true) + InvoiceProductDTO create(InvoiceProduct resources); + + /** + * update + * @param resources + */ + //@CacheEvict(allEntries = true) + void update(InvoiceProduct resources); + + /** + * delete + * @param id + */ + //@CacheEvict(allEntries = true) + void delete(Long id); +} \ No newline at end of file diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/wms/invoice/service/InvoiceService.java b/eladmin-system/src/main/java/me/zhengjie/modules/wms/invoice/service/InvoiceService.java new file mode 100644 index 00000000..797025da --- /dev/null +++ b/eladmin-system/src/main/java/me/zhengjie/modules/wms/invoice/service/InvoiceService.java @@ -0,0 +1,66 @@ +package me.zhengjie.modules.wms.invoice.service; + +import me.zhengjie.modules.wms.invoice.domain.Invoice; +import me.zhengjie.modules.wms.invoice.request.CreateInvoiceRequest; +import me.zhengjie.modules.wms.invoice.service.dto.InvoiceDTO; +import me.zhengjie.modules.wms.invoice.service.dto.InvoiceDetailDTO; +import me.zhengjie.modules.wms.invoice.service.dto.InvoiceQueryCriteria; +//import org.springframework.cache.annotation.CacheConfig; +//import org.springframework.cache.annotation.CacheEvict; +//import org.springframework.cache.annotation.Cacheable; +import org.springframework.data.domain.Pageable; + +/** +* @author jie +* @date 2019-08-27 +*/ +//@CacheConfig(cacheNames = "sInvoice") +public interface InvoiceService { + + /** + * queryAll 分页 + * @param criteria + * @param pageable + * @return + */ + //@Cacheable(keyGenerator = "keyGenerator") + Object queryAll(InvoiceQueryCriteria criteria, Pageable pageable); + + /** + * queryAll 不分页 + * @param criteria + * @return + */ + //@Cacheable(keyGenerator = "keyGenerator") + public Object queryAll(InvoiceQueryCriteria criteria); + + /** + * findById + * @param id + * @return + */ + //@Cacheable(key = "#p0") + InvoiceDetailDTO findById(Long id); + + /** + * create + * @param createInvoiceRequest + * @return + */ + //@CacheEvict(allEntries = true) + InvoiceDetailDTO create(CreateInvoiceRequest createInvoiceRequest); + + /** + * update + * @param resources + */ + //@CacheEvict(allEntries = true) + void update(Invoice resources); + + /** + * delete + * @param id + */ + //@CacheEvict(allEntries = true) + void delete(Long id); +} \ No newline at end of file diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/wms/invoice/service/dto/InvoiceDTO.java b/eladmin-system/src/main/java/me/zhengjie/modules/wms/invoice/service/dto/InvoiceDTO.java new file mode 100644 index 00000000..5d41c78d --- /dev/null +++ b/eladmin-system/src/main/java/me/zhengjie/modules/wms/invoice/service/dto/InvoiceDTO.java @@ -0,0 +1,46 @@ +package me.zhengjie.modules.wms.invoice.service.dto; + +import lombok.Data; +import java.sql.Timestamp; +import java.io.Serializable; + + +/** +* @author jie +* @date 2019-08-27 +*/ +@Data +public class InvoiceDTO implements Serializable { + + private Long id; + + private Timestamp createTime; + + private Timestamp updateTime; + + private String customerOrderCode; + + // 收货地址 + private String deliveryAddress; + + // 收货人 + private String consignee; + + // 联系方式 + private String contactWay; + + // 发票号 + private String invoiceNumber; + + // 物流公司 + private String logisticsCompany; + + // 销售发货单号 + private String saleInvoiceCode; + + // 状态 + private Integer status; + + // 备注 + private String remark; +} \ No newline at end of file diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/wms/invoice/service/dto/InvoiceDetailDTO.java b/eladmin-system/src/main/java/me/zhengjie/modules/wms/invoice/service/dto/InvoiceDetailDTO.java new file mode 100644 index 00000000..f31a9929 --- /dev/null +++ b/eladmin-system/src/main/java/me/zhengjie/modules/wms/invoice/service/dto/InvoiceDetailDTO.java @@ -0,0 +1,17 @@ +package me.zhengjie.modules.wms.invoice.service.dto; + +import lombok.Data; + +import java.io.Serializable; +import java.util.List; + +/** + * @author 黄星星 + * @date 2019-08-27 + */ +@Data +public class InvoiceDetailDTO extends InvoiceDTO implements Serializable { + + private List invoiceProductDTOList; + +} diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/wms/invoice/service/dto/InvoiceProductDTO.java b/eladmin-system/src/main/java/me/zhengjie/modules/wms/invoice/service/dto/InvoiceProductDTO.java new file mode 100644 index 00000000..f5b457bd --- /dev/null +++ b/eladmin-system/src/main/java/me/zhengjie/modules/wms/invoice/service/dto/InvoiceProductDTO.java @@ -0,0 +1,49 @@ +package me.zhengjie.modules.wms.invoice.service.dto; + +import lombok.Data; +import java.sql.Timestamp; +import java.io.Serializable; + + +/** +* @author jie +* @date 2019-08-27 +*/ +@Data +public class InvoiceProductDTO implements Serializable { + + private Long id; + + // 创建时间 + private Timestamp createStatus; + + // 更新时间 + private Timestamp updateStatus; + + // 状态 + private Integer status; + + // 产品主键 + private Long productId; + + // 产品名称 + private String productName; + + // 产品编号 + private String productCode; + + // 规格 + private String specifications; + + // 订单数量 + private Long customerOrderNumber; + + // 实际发货单数量 + private Long acutalInvoiceNumber; + + // 瘦瘦金额 + private Long salePrice; + + // 备注 + private String remark; +} \ No newline at end of file diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/wms/invoice/service/dto/InvoiceProductQueryCriteria.java b/eladmin-system/src/main/java/me/zhengjie/modules/wms/invoice/service/dto/InvoiceProductQueryCriteria.java new file mode 100644 index 00000000..93040c49 --- /dev/null +++ b/eladmin-system/src/main/java/me/zhengjie/modules/wms/invoice/service/dto/InvoiceProductQueryCriteria.java @@ -0,0 +1,13 @@ +package me.zhengjie.modules.wms.invoice.service.dto; + +import lombok.Data; +import java.sql.Timestamp; +import me.zhengjie.annotation.Query; + +/** +* @author jie +* @date 2019-08-27 +*/ +@Data +public class InvoiceProductQueryCriteria { +} \ No newline at end of file diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/wms/invoice/service/dto/InvoiceQueryCriteria.java b/eladmin-system/src/main/java/me/zhengjie/modules/wms/invoice/service/dto/InvoiceQueryCriteria.java new file mode 100644 index 00000000..228664e3 --- /dev/null +++ b/eladmin-system/src/main/java/me/zhengjie/modules/wms/invoice/service/dto/InvoiceQueryCriteria.java @@ -0,0 +1,13 @@ +package me.zhengjie.modules.wms.invoice.service.dto; + +import lombok.Data; +import java.sql.Timestamp; +import me.zhengjie.annotation.Query; + +/** +* @author jie +* @date 2019-08-27 +*/ +@Data +public class InvoiceQueryCriteria { +} \ No newline at end of file diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/wms/invoice/service/impl/InvoiceProductServiceImpl.java b/eladmin-system/src/main/java/me/zhengjie/modules/wms/invoice/service/impl/InvoiceProductServiceImpl.java new file mode 100644 index 00000000..84a0288d --- /dev/null +++ b/eladmin-system/src/main/java/me/zhengjie/modules/wms/invoice/service/impl/InvoiceProductServiceImpl.java @@ -0,0 +1,73 @@ +package me.zhengjie.modules.wms.invoice.service.impl; + +import me.zhengjie.modules.wms.invoice.domain.InvoiceProduct; +import me.zhengjie.utils.ValidationUtil; +import me.zhengjie.modules.wms.invoice.repository.InvoiceProductRepository; +import me.zhengjie.modules.wms.invoice.service.InvoiceProductService; +import me.zhengjie.modules.wms.invoice.service.dto.InvoiceProductDTO; +import me.zhengjie.modules.wms.invoice.service.dto.InvoiceProductQueryCriteria; +import me.zhengjie.modules.wms.invoice.service.mapper.InvoiceProductMapper; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Propagation; +import org.springframework.transaction.annotation.Transactional; +import java.util.Optional; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; +import me.zhengjie.utils.PageUtil; +import me.zhengjie.utils.QueryHelp; + +/** +* @author jie +* @date 2019-08-27 +*/ +@Service +@Transactional(propagation = Propagation.SUPPORTS, readOnly = true, rollbackFor = Exception.class) +public class InvoiceProductServiceImpl implements InvoiceProductService { + + @Autowired + private InvoiceProductRepository invoiceProductRepository; + + @Autowired + private InvoiceProductMapper invoiceProductMapper; + + @Override + public Object queryAll(InvoiceProductQueryCriteria criteria, Pageable pageable){ + Page page = invoiceProductRepository.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root,criteria,criteriaBuilder),pageable); + return PageUtil.toPage(page.map(invoiceProductMapper::toDto)); + } + + @Override + public Object queryAll(InvoiceProductQueryCriteria criteria){ + return invoiceProductMapper.toDto(invoiceProductRepository.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root,criteria,criteriaBuilder))); + } + + @Override + public InvoiceProductDTO findById(Long id) { + Optional sInvoiceProduct = invoiceProductRepository.findById(id); + ValidationUtil.isNull(sInvoiceProduct,"SInvoiceProduct","id",id); + return invoiceProductMapper.toDto(sInvoiceProduct.get()); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public InvoiceProductDTO create(InvoiceProduct resources) { + return invoiceProductMapper.toDto(invoiceProductRepository.save(resources)); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void update(InvoiceProduct resources) { + Optional optionalSInvoiceProduct = invoiceProductRepository.findById(resources.getId()); + ValidationUtil.isNull( optionalSInvoiceProduct,"SInvoiceProduct","id",resources.getId()); + InvoiceProduct invoiceProduct = optionalSInvoiceProduct.get(); + invoiceProduct.copy(resources); + invoiceProductRepository.save(invoiceProduct); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void delete(Long id) { + invoiceProductRepository.deleteById(id); + } +} \ No newline at end of file diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/wms/invoice/service/impl/InvoiceServiceImpl.java b/eladmin-system/src/main/java/me/zhengjie/modules/wms/invoice/service/impl/InvoiceServiceImpl.java new file mode 100644 index 00000000..27e3d292 --- /dev/null +++ b/eladmin-system/src/main/java/me/zhengjie/modules/wms/invoice/service/impl/InvoiceServiceImpl.java @@ -0,0 +1,157 @@ +package me.zhengjie.modules.wms.invoice.service.impl; + +import me.zhengjie.exception.BadRequestException; +import me.zhengjie.modules.wms.bd.domain.CustomerInfo; +import me.zhengjie.modules.wms.bd.repository.CustomerInfoRepository; +import me.zhengjie.modules.wms.invoice.domain.Invoice; +import me.zhengjie.modules.wms.invoice.domain.InvoiceProduct; +import me.zhengjie.modules.wms.invoice.repository.InvoiceProductRepository; +import me.zhengjie.modules.wms.invoice.request.CreateInvoiceRequest; +import me.zhengjie.modules.wms.invoice.service.dto.InvoiceDetailDTO; +import me.zhengjie.modules.wms.invoice.service.dto.InvoiceProductDTO; +import me.zhengjie.modules.wms.invoice.service.mapper.InvoiceProductMapper; +import me.zhengjie.utils.ValidationUtil; +import me.zhengjie.modules.wms.invoice.repository.InvoiceRepository; +import me.zhengjie.modules.wms.invoice.service.InvoiceService; +import me.zhengjie.modules.wms.invoice.service.dto.InvoiceDTO; +import me.zhengjie.modules.wms.invoice.service.dto.InvoiceQueryCriteria; +import me.zhengjie.modules.wms.invoice.service.mapper.InvoiceMapper; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Propagation; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; +import java.util.Optional; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; +import me.zhengjie.utils.PageUtil; +import me.zhengjie.utils.QueryHelp; +import org.springframework.util.CollectionUtils; +import org.springframework.util.StringUtils; + +/** +* @author jie +* @date 2019-08-27 +*/ +@Service +@Transactional(propagation = Propagation.SUPPORTS, readOnly = true, rollbackFor = Exception.class) +public class InvoiceServiceImpl implements InvoiceService { + + @Autowired + private InvoiceRepository invoiceRepository; + + @Autowired + private InvoiceMapper invoiceMapper; + + @Autowired + private CustomerInfoRepository customerInfoRepository; + + @Autowired + private InvoiceProductMapper invoiceProductMapper; + + @Autowired + private InvoiceProductRepository invoiceProductRepository; + + @Override + public Object queryAll(InvoiceQueryCriteria criteria, Pageable pageable){ + Page page = invoiceRepository.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root,criteria,criteriaBuilder),pageable); + return PageUtil.toPage(page.map(invoiceMapper::toDto)); + } + + @Override + public Object queryAll(InvoiceQueryCriteria criteria){ + return invoiceMapper.toDto(invoiceRepository.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root,criteria,criteriaBuilder))); + } + + @Override + public InvoiceDetailDTO findById(Long id) { + Optional invoiceOptional = invoiceRepository.findById(id); + ValidationUtil.isNull(invoiceOptional,"SInvoice","id",id); + Invoice invoice = invoiceOptional.get(); + InvoiceDTO invoiceDTO = invoiceMapper.toDto(invoice); + + InvoiceDetailDTO invoiceDetailDTO = new InvoiceDetailDTO(); + BeanUtils.copyProperties(invoiceDTO, invoiceDetailDTO); + + List invoiceProductList = invoiceProductRepository.findByInvoiceIdAndStatusTrue(id); + if(!CollectionUtils.isEmpty(invoiceProductList)){ + List invoiceProductDTOList = invoiceProductMapper.toDto(invoiceProductList); + invoiceDetailDTO.setInvoiceProductDTOList(invoiceProductDTOList); + } + return invoiceDetailDTO; + } + + @Override + @Transactional(rollbackFor = Exception.class) + public InvoiceDetailDTO create(CreateInvoiceRequest createInvoiceRequest) { + Invoice invoice = new Invoice(); + // 客户订单编号 + String customerOrderCode = createInvoiceRequest.getCustomerOrderCode(); + if(StringUtils.isEmpty(customerOrderCode)){ + throw new BadRequestException("客户订单编号不能为空!"); + } + + // 客户ID + Long customerId = createInvoiceRequest.getCustomerId(); + if(null == customerId){ + throw new BadRequestException("客户ID不能为空!"); + } + + Optional customerInfoOptional = customerInfoRepository.findById(customerId); + if(null == customerInfoOptional){ + throw new BadRequestException("客户不存在!"); + } + CustomerInfo customerInfo = customerInfoOptional.get(); + if(null == customerInfo){ + throw new BadRequestException("客户不存在!"); + } + + // 销售发货单号 + String saleInvoiceCode = createInvoiceRequest.getSaleInvoiceCode(); + if(StringUtils.isEmpty(saleInvoiceCode)){ + throw new BadRequestException("销售发货单单据编号不能为空!"); + } + + List invoiceProductRequestList = createInvoiceRequest.getInvoiceProductList(); + if(CollectionUtils.isEmpty(invoiceProductRequestList)){ + throw new BadRequestException("发货单产品信息不能为空!"); + } + + BeanUtils.copyProperties(createInvoiceRequest, invoice); + invoiceRepository.save(invoice); + invoice = invoiceRepository.findBySaleInvoiceCode(saleInvoiceCode); + InvoiceDTO invoiceDTO = invoiceMapper.toDto(invoice); + + + for(InvoiceProduct invoiceProduct : invoiceProductRequestList){ + invoiceProduct.setInvoiceId(invoice.getId()); + invoiceProductRepository.save(invoiceProduct); + } + + List invoiceProductList = invoiceProductRepository.findByInvoiceIdAndStatusTrue(invoice.getId()); + List invoiceProductDTOList = invoiceProductMapper.toDto(invoiceProductList); + + InvoiceDetailDTO invoiceDetailDTO = new InvoiceDetailDTO(); + BeanUtils.copyProperties(invoiceDTO, invoiceDetailDTO); + invoiceDetailDTO.setInvoiceProductDTOList(invoiceProductDTOList); + return invoiceDetailDTO; + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void update(Invoice resources) { + Optional optionalSInvoice = invoiceRepository.findById(resources.getId()); + ValidationUtil.isNull( optionalSInvoice,"SInvoice","id",resources.getId()); + Invoice invoice = optionalSInvoice.get(); + invoice.copy(resources); + invoiceRepository.save(invoice); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void delete(Long id) { + invoiceRepository.deleteById(id); + } +} \ No newline at end of file diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/wms/invoice/service/mapper/InvoiceMapper.java b/eladmin-system/src/main/java/me/zhengjie/modules/wms/invoice/service/mapper/InvoiceMapper.java new file mode 100644 index 00000000..95ebff08 --- /dev/null +++ b/eladmin-system/src/main/java/me/zhengjie/modules/wms/invoice/service/mapper/InvoiceMapper.java @@ -0,0 +1,16 @@ +package me.zhengjie.modules.wms.invoice.service.mapper; + +import me.zhengjie.mapper.EntityMapper; +import me.zhengjie.modules.wms.invoice.domain.Invoice; +import me.zhengjie.modules.wms.invoice.service.dto.InvoiceDTO; +import org.mapstruct.Mapper; +import org.mapstruct.ReportingPolicy; + +/** +* @author jie +* @date 2019-08-27 +*/ +@Mapper(componentModel = "spring",uses = {},unmappedTargetPolicy = ReportingPolicy.IGNORE) +public interface InvoiceMapper extends EntityMapper { + +} \ No newline at end of file diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/wms/invoice/service/mapper/InvoiceProductMapper.java b/eladmin-system/src/main/java/me/zhengjie/modules/wms/invoice/service/mapper/InvoiceProductMapper.java new file mode 100644 index 00000000..20a9ba54 --- /dev/null +++ b/eladmin-system/src/main/java/me/zhengjie/modules/wms/invoice/service/mapper/InvoiceProductMapper.java @@ -0,0 +1,16 @@ +package me.zhengjie.modules.wms.invoice.service.mapper; + +import me.zhengjie.mapper.EntityMapper; +import me.zhengjie.modules.wms.invoice.domain.InvoiceProduct; +import me.zhengjie.modules.wms.invoice.service.dto.InvoiceProductDTO; +import org.mapstruct.Mapper; +import org.mapstruct.ReportingPolicy; + +/** +* @author jie +* @date 2019-08-27 +*/ +@Mapper(componentModel = "spring",uses = {},unmappedTargetPolicy = ReportingPolicy.IGNORE) +public interface InvoiceProductMapper extends EntityMapper { + +} \ No newline at end of file diff --git a/eladmin-system/src/main/resources/config/application-dev.yml b/eladmin-system/src/main/resources/config/application-dev.yml index 96eeef78..ae5858ce 100644 --- a/eladmin-system/src/main/resources/config/application-dev.yml +++ b/eladmin-system/src/main/resources/config/application-dev.yml @@ -4,9 +4,10 @@ spring: druid: type: com.alibaba.druid.pool.DruidDataSource driverClassName: net.sf.log4jdbc.sql.jdbcapi.DriverSpy - url: jdbc:log4jdbc:mysql://localhost:3306/eladmin?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false - username: root - password: 123456 + url: jdbc:log4jdbc:mysql://rm-2ze4a3l502a15dg50qo.mysql.rds.aliyuncs.com:3306/eladmin?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false + username: tenjeu + password: starrysky622209Qwe! + # 初始化配置 initial-size: 3 diff --git a/eladmin-system/src/main/resources/config/application.yml b/eladmin-system/src/main/resources/config/application.yml index a52de8aa..33e004d7 100644 --- a/eladmin-system/src/main/resources/config/application.yml +++ b/eladmin-system/src/main/resources/config/application.yml @@ -3,7 +3,7 @@ server: spring: profiles: - active: prod + active: dev jackson: time-zone: GMT+8 data: