采购审核

pull/451/head
starrysky 2019-10-07 16:56:16 +08:00
parent 54a89ef6be
commit 09ea9f1a84
20 changed files with 343 additions and 48 deletions

View File

@ -24,6 +24,6 @@ public interface OutSourceProcessSheetProductRepository extends JpaRepository<Ou
List<OutSourceProcessSheetProduct> queryByOutSourceProcessSheetIdAndStatusTrue(Long outSourceProcessSheetId);
@Modifying
@Query(value = "delete s_out_source_process_sheet_product where product_code = ?1 and out_source_process_sheet_id = ?2", nativeQuery = true)
@Query(value = "delete from s_out_source_process_sheet_product where product_code = ?1 and out_source_process_sheet_id = ?2", nativeQuery = true)
void deleteByProductCodeAndOutSourceProcessSheetId(String productCode, Long outSourceProcessSheetId);
}

View File

@ -0,0 +1,46 @@
package me.zhengjie.modules.wms.purchase.cons;
/**
* @author
* @date 2019-10-07
*/
public enum AuditStatus {
AUDIT_STATUS_PASS("pass", "同意"),
AUDIT_STATUS_REJECT("reject", "拒绝"),
AUDIT_STATUS_NO_AUDIT("no_audit", "未审核"),
;
private String code;
private String name;
AuditStatus(String code, String name) {
this.code = code;
this.name = name;
}
public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public static String getName(String code) {
AuditStatus[] auditStatuseEnums = values();
for (AuditStatus auditStatus : auditStatuseEnums) {
if (auditStatus.getCode().equals(code)) {
return auditStatus.getName();
}
}
return null;
}
}

View File

@ -3,6 +3,8 @@ package me.zhengjie.modules.wms.purchase.domain;
import lombok.Data;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.bean.copier.CopyOptions;
import org.hibernate.annotations.CreationTimestamp;
import javax.persistence.*;
import java.sql.Timestamp;
import java.io.Serializable;
@ -23,9 +25,11 @@ public class ConsumablesPurchaseOrder implements Serializable {
private Long id;
@Column(name = "create_time")
@CreationTimestamp
private Timestamp createTime;
@Column(name = "update_time")
@CreationTimestamp
private Timestamp updateTime;
// 采购人主键
@ -42,7 +46,7 @@ public class ConsumablesPurchaseOrder implements Serializable {
// 审核状态
@Column(name = "audit_status")
private Integer auditStatus;
private String auditStatus;
@Column(name = "audit_user_id")
private Long auditUserId;

View File

@ -46,7 +46,7 @@ public class ProductPurchaseOrder implements Serializable {
// 审核状态
@Column(name = "audit_status")
private Integer auditStatus;
private String auditStatus;
@Column(name = "audit_user_id")
private Long auditUserId;

View File

@ -24,6 +24,6 @@ public interface ConsumablesPurchaseOrderProductRepository extends JpaRepository
List<ConsumablesPurchaseOrderProduct> queryByConsumablesPurchaseOrderIdAndStatusTrue(Long consumablesPurchaseOrderId);
@Modifying
@Query(value = "delete product_purchase_order_product where consumables_code = ?1 and consumables_purchase_order_id = ?2", nativeQuery = true)
@Query(value = "delete from product_purchase_order_product where consumables_code = ?1 and consumables_purchase_order_id = ?2", nativeQuery = true)
void deleteByProductCodeAndConsumablesPurchaseOrderId(String consumablesCode, Long consumablesPurchaseOrderId);
}

View File

@ -24,6 +24,6 @@ public interface ProductPurchaseOrderProductRepository extends JpaRepository<Pro
List<ProductPurchaseOrderProduct> queryByProductPurchaseOrderIdAndStatusTrue(Long productPurchaseOrderId);
@Modifying
@Query(value = "delete product_purchase_order_product where product_code = ?1 and product_purchase_order_id = ?2", nativeQuery = true)
@Query(value = "delete from product_purchase_order_product where product_code = ?1 and product_purchase_order_id = ?2", nativeQuery = true)
void deleteByProductCodeAndProductPurchaseOrderId(String productCode, Long productPurchaseOrderId);
}

View File

@ -23,4 +23,6 @@ public class AuditConsumablesPurchaseOrderRequest {
// 审核人姓名
private String auditUserName;
private String auditStatus;
}

View File

@ -23,4 +23,6 @@ public class AuditProductPurchaseOrderRequest {
// 审核人姓名
private String auditUserName;
private String auditStatus;
}

View File

@ -0,0 +1,34 @@
package me.zhengjie.modules.wms.purchase.request;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.bean.copier.CopyOptions;
import lombok.Data;
import javax.persistence.*;
import java.io.Serializable;
import java.sql.Timestamp;
import java.util.Date;
import java.util.List;
/**
* @author jie
* @date 2019-10-06
*/
@Data
public class CreateConsumablesPurchaseOrderRequest implements Serializable {
// 采购人主键
private Long purchaseUserId;
// 采购人姓名
private String purchaseUserName;
// 耗材采购单单据编号
private String consumablesPurchaseOrderCode;
private List<ConsumablesPurchaseOrderProductRequest> consumablesPurchaseOrderProductList;
public void copy(CreateConsumablesPurchaseOrderRequest source){
BeanUtil.copyProperties(source,this, CopyOptions.create().setIgnoreNullValue(true));
}
}

View File

@ -0,0 +1,19 @@
package me.zhengjie.modules.wms.purchase.request;
import lombok.Data;
import me.zhengjie.modules.wms.purchase.service.dto.ConsumablesPurchaseOrderProductDTO;
import java.io.Serializable;
import java.util.List;
/**
*
* @author
* @date 2019-10-07
*/
@Data
public class UpdateConsumablesPurchaseOrderRequest implements Serializable {
private Long id;
private List<ConsumablesPurchaseOrderProductDTO> consumablesPurchaseOrderProductList;
}

View File

@ -0,0 +1,20 @@
package me.zhengjie.modules.wms.purchase.request;
import lombok.Data;
import me.zhengjie.modules.wms.purchase.service.dto.ConsumablesPurchaseOrderProductDTO;
import me.zhengjie.modules.wms.purchase.service.dto.ProductPurchaseOrderProductDTO;
import java.io.Serializable;
import java.util.List;
/**
*
* @author
* @date 2019-10-07
*/
@Data
public class UpdateProductPurchaseOrderRequest implements Serializable {
private Long id;
private List<ProductPurchaseOrderProductDTO> productPurchaseOrderProductList;
}

View File

@ -5,6 +5,7 @@ import me.zhengjie.modules.wms.purchase.domain.ConsumablesPurchaseOrder;
import me.zhengjie.modules.wms.purchase.request.AuditConsumablesPurchaseOrderRequest;
import me.zhengjie.modules.wms.purchase.request.AuditProductPurchaseOrderRequest;
import me.zhengjie.modules.wms.purchase.request.CreateConsumablesPurchaseOrderRequest;
import me.zhengjie.modules.wms.purchase.request.UpdateConsumablesPurchaseOrderRequest;
import me.zhengjie.modules.wms.purchase.service.ConsumablesPurchaseOrderService;
import me.zhengjie.modules.wms.purchase.service.dto.ConsumablesPurchaseOrderQueryCriteria;
import org.springframework.beans.factory.annotation.Autowired;
@ -60,8 +61,8 @@ public class ConsumablesPurchaseOrderController {
@ApiOperation(value = "修改耗材采购单")
@PutMapping(value = "/consumablesPurchaseOrder")
@PreAuthorize("hasAnyRole('ADMIN','CONSUMABLESPURCHASEORDER_ALL','CONSUMABLESPURCHASEORDER_EDIT')")
public ResponseEntity update(@Validated @RequestBody ConsumablesPurchaseOrder resources){
consumablesPurchaseOrderService.update(resources);
public ResponseEntity update(@Validated @RequestBody UpdateConsumablesPurchaseOrderRequest updateConsumablesPurchaseOrderRequest){
consumablesPurchaseOrderService.update(updateConsumablesPurchaseOrderRequest);
return new ResponseEntity(HttpStatus.NO_CONTENT);
}
@ -90,4 +91,11 @@ public class ConsumablesPurchaseOrderController {
String supplierCode = "CP"+ LocalDateTime.now().format(fmt);
return new ResponseEntity(supplierCode,HttpStatus.OK);
}
@Log("查看耗材采购详情")
@ApiOperation(value = "查看产品采购详情")
@GetMapping(value = "/consumablesPurchaseOrder/{id}")
public ResponseEntity getOutSourceInspectionCertificate(@PathVariable Long id){
return new ResponseEntity(consumablesPurchaseOrderService.findById(id), HttpStatus.OK);
}
}

View File

@ -4,6 +4,7 @@ import me.zhengjie.aop.log.Log;
import me.zhengjie.modules.wms.purchase.domain.ProductPurchaseOrder;
import me.zhengjie.modules.wms.purchase.request.AuditProductPurchaseOrderRequest;
import me.zhengjie.modules.wms.purchase.request.CreateProductPurchaseOrderRequest;
import me.zhengjie.modules.wms.purchase.request.UpdateProductPurchaseOrderRequest;
import me.zhengjie.modules.wms.purchase.service.ProductPurchaseOrderService;
import me.zhengjie.modules.wms.purchase.service.dto.ProductPurchaseOrderQueryCriteria;
import org.springframework.beans.factory.annotation.Autowired;
@ -51,8 +52,8 @@ public class ProductPurchaseOrderController {
@ApiOperation(value = "修改产品采购")
@PutMapping(value = "/productPurchaseOrder")
@PreAuthorize("hasAnyRole('ADMIN','PRODUCTPURCHASEORDER_ALL','PRODUCTPURCHASEORDER_EDIT')")
public ResponseEntity update(@Validated @RequestBody ProductPurchaseOrder resources){
productPurchaseOrderService.update(resources);
public ResponseEntity update(@Validated @RequestBody UpdateProductPurchaseOrderRequest updateProductPurchaseOrderRequest){
productPurchaseOrderService.update(updateProductPurchaseOrderRequest);
return new ResponseEntity(HttpStatus.NO_CONTENT);
}

View File

@ -3,6 +3,7 @@ package me.zhengjie.modules.wms.purchase.service;
import me.zhengjie.modules.wms.purchase.domain.ConsumablesPurchaseOrder;
import me.zhengjie.modules.wms.purchase.request.AuditConsumablesPurchaseOrderRequest;
import me.zhengjie.modules.wms.purchase.request.CreateConsumablesPurchaseOrderRequest;
import me.zhengjie.modules.wms.purchase.request.UpdateConsumablesPurchaseOrderRequest;
import me.zhengjie.modules.wms.purchase.service.dto.ConsumablesPurchaseOrderDTO;
import me.zhengjie.modules.wms.purchase.service.dto.ConsumablesPurchaseOrderQueryCriteria;
//import org.springframework.cache.annotation.CacheConfig;
@ -52,10 +53,10 @@ public interface ConsumablesPurchaseOrderService {
/**
* update
* @param resources
* @param updateConsumablesPurchaseOrderRequest
*/
//@CacheEvict(allEntries = true)
void update(ConsumablesPurchaseOrder resources);
void update(UpdateConsumablesPurchaseOrderRequest updateConsumablesPurchaseOrderRequest);
/**
* delete

View File

@ -3,6 +3,7 @@ package me.zhengjie.modules.wms.purchase.service;
import me.zhengjie.modules.wms.purchase.domain.ProductPurchaseOrder;
import me.zhengjie.modules.wms.purchase.request.AuditProductPurchaseOrderRequest;
import me.zhengjie.modules.wms.purchase.request.CreateProductPurchaseOrderRequest;
import me.zhengjie.modules.wms.purchase.request.UpdateProductPurchaseOrderRequest;
import me.zhengjie.modules.wms.purchase.service.dto.ProductPurchaseOrderDTO;
import me.zhengjie.modules.wms.purchase.service.dto.ProductPurchaseOrderQueryCriteria;
//import org.springframework.cache.annotation.CacheConfig;
@ -52,10 +53,10 @@ public interface ProductPurchaseOrderService {
/**
* update
* @param resources
* @param updateProductPurchaseOrderRequest
*/
//@CacheEvict(allEntries = true)
void update(ProductPurchaseOrder resources);
void update(UpdateProductPurchaseOrderRequest updateProductPurchaseOrderRequest);
/**
* delete

View File

@ -18,6 +18,8 @@ public class ConsumablesPurchaseOrderDTO implements Serializable {
private Timestamp createTime;
private String createTimeStr;
private Timestamp updateTime;
// 采购人主键
@ -30,7 +32,9 @@ public class ConsumablesPurchaseOrderDTO implements Serializable {
private Boolean status;
// 审核状态
private Integer auditStatus;
private String auditStatus;
private String auditStatusName;
private Long auditUserId;

View File

@ -18,6 +18,8 @@ public class ProductPurchaseOrderDTO implements Serializable {
private Timestamp createTime;
private String createTimeStr;
private Timestamp updateTime;
// 采购人主键
@ -30,7 +32,9 @@ public class ProductPurchaseOrderDTO implements Serializable {
private Boolean status;
// 审核状态
private Integer auditStatus;
private String auditStatus;
private String auditStatusName;
private Long auditUserId;

View File

@ -1,6 +1,11 @@
package me.zhengjie.modules.wms.purchase.service.impl;
import me.zhengjie.exception.BadRequestException;
import me.zhengjie.modules.wms.outSourceProductSheet.domain.OutSourceProcessSheet;
import me.zhengjie.modules.wms.outSourceProductSheet.domain.OutSourceProcessSheetProduct;
import me.zhengjie.modules.wms.outSourceProductSheet.service.dto.OutSourceProcessSheetDTO;
import me.zhengjie.modules.wms.outSourceProductSheet.service.dto.OutSourceProcessSheetProductDTO;
import me.zhengjie.modules.wms.purchase.cons.AuditStatus;
import me.zhengjie.modules.wms.purchase.domain.ConsumablesPurchaseOrder;
import me.zhengjie.modules.wms.purchase.domain.ConsumablesPurchaseOrderProduct;
import me.zhengjie.modules.wms.purchase.domain.ProductPurchaseOrder;
@ -20,11 +25,12 @@ import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import java.security.Timestamp;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Optional;
import java.sql.Timestamp;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.function.Function;
import java.util.stream.Collectors;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import me.zhengjie.utils.PageUtil;
@ -78,7 +84,23 @@ public class ConsumablesPurchaseOrderServiceImpl implements ConsumablesPurchaseO
};
Page<ConsumablesPurchaseOrder> page = consumablesPurchaseOrderRepository.findAll(specification, pageable);
return PageUtil.toPage(page.map(consumablesPurchaseOrderMapper::toDto));
Page<ConsumablesPurchaseOrderDTO> consumablesPurchaseOrderDTOPage = page.map(consumablesPurchaseOrderMapper::toDto);
if(null != consumablesPurchaseOrderDTOPage){
List<ConsumablesPurchaseOrderDTO> consumablesPurchaseOrderDTOList = consumablesPurchaseOrderDTOPage.getContent();
if(!CollectionUtils.isEmpty(consumablesPurchaseOrderDTOList)){
for(ConsumablesPurchaseOrderDTO consumablesPurchaseOrderDTO : consumablesPurchaseOrderDTOList){
String auditStatusName = AuditStatus.getName(consumablesPurchaseOrderDTO.getAuditStatus());
consumablesPurchaseOrderDTO.setAuditStatusName(auditStatusName);
Timestamp createTime = consumablesPurchaseOrderDTO.getCreateTime();
consumablesPurchaseOrderDTO.setCreateTimeStr(new SimpleDateFormat("yyyy-MM-dd").format(createTime));
}
}
}
Map map = PageUtil.toPage(consumablesPurchaseOrderDTOPage);
return map;
}
@Override
@ -107,9 +129,18 @@ public class ConsumablesPurchaseOrderServiceImpl implements ConsumablesPurchaseO
@Override
public ConsumablesPurchaseOrderDTO findById(Long id) {
Optional<ConsumablesPurchaseOrder> consumablesPurchaseOrder = consumablesPurchaseOrderRepository.findById(id);
ValidationUtil.isNull(consumablesPurchaseOrder,"ConsumablesPurchaseOrder","id",id);
return consumablesPurchaseOrderMapper.toDto(consumablesPurchaseOrder.get());
Optional<ConsumablesPurchaseOrder> consumablesPurchaseOrderOptional = consumablesPurchaseOrderRepository.findById(id);
ConsumablesPurchaseOrder consumablesPurchaseOrder = consumablesPurchaseOrderOptional.get();
ConsumablesPurchaseOrderDTO consumablesPurchaseOrderDTO = consumablesPurchaseOrderMapper.toDto(consumablesPurchaseOrder);
consumablesPurchaseOrderDTO.setAuditStatusName(AuditStatus.getName(consumablesPurchaseOrder.getAuditStatus()));
List<ConsumablesPurchaseOrderProduct> consumablesPurchaseOrderProductList = consumablesPurchaseOrderProductRepository.queryByConsumablesPurchaseOrderIdAndStatusTrue(id);
if(!CollectionUtils.isEmpty(consumablesPurchaseOrderProductList)){
List<ConsumablesPurchaseOrderProductDTO> consumablesPurchaseOrderProductDTOList = consumablesPurchaseOrderProductMapper.toDto(consumablesPurchaseOrderProductList);
consumablesPurchaseOrderDTO.setConsumablesPurchaseOrderProductList(consumablesPurchaseOrderProductDTOList);
}
return consumablesPurchaseOrderDTO;
}
@Override
@ -125,6 +156,7 @@ public class ConsumablesPurchaseOrderServiceImpl implements ConsumablesPurchaseO
consumablesPurchaseOrder.setStatus(true);
// 新增耗材采购单
consumablesPurchaseOrder.setAuditStatus(AuditStatus.AUDIT_STATUS_NO_AUDIT.getCode());
consumablesPurchaseOrderRepository.save(consumablesPurchaseOrder);
consumablesPurchaseOrder = consumablesPurchaseOrderRepository.findByConsumablesPurchaseOrderCode(consumablesPurchaseOrder.getConsumablesPurchaseOrderCode());
@ -162,12 +194,60 @@ public class ConsumablesPurchaseOrderServiceImpl implements ConsumablesPurchaseO
@Override
@Transactional(rollbackFor = Exception.class)
public void update(ConsumablesPurchaseOrder resources) {
Optional<ConsumablesPurchaseOrder> optionalConsumablesPurchaseOrder = consumablesPurchaseOrderRepository.findById(resources.getId());
ValidationUtil.isNull( optionalConsumablesPurchaseOrder,"ConsumablesPurchaseOrder","id",resources.getId());
ConsumablesPurchaseOrder consumablesPurchaseOrder = optionalConsumablesPurchaseOrder.get();
consumablesPurchaseOrder.copy(resources);
consumablesPurchaseOrderRepository.save(consumablesPurchaseOrder);
public void update(UpdateConsumablesPurchaseOrderRequest updateConsumablesPurchaseOrderRequest) {
Long consumablesPurchaseOrderId = updateConsumablesPurchaseOrderRequest.getId();
Optional<ConsumablesPurchaseOrder> consumablesPurchaseOrderOptional = consumablesPurchaseOrderRepository.findById(consumablesPurchaseOrderId);
ConsumablesPurchaseOrder consumablesPurchaseOrder = consumablesPurchaseOrderOptional.get();
// 修改产品信息之前查询该订单中原来的产品信息key为产品code
List<ConsumablesPurchaseOrderProduct> consumablesPurchaseOrderProductListBeforeUpdate = consumablesPurchaseOrderProductRepository.queryByConsumablesPurchaseOrderIdAndStatusTrue(consumablesPurchaseOrder.getId());
Map<String, ConsumablesPurchaseOrderProduct> consumablesPurchaseOrderProductMapBefore = consumablesPurchaseOrderProductListBeforeUpdate.stream().collect(Collectors.toMap(ConsumablesPurchaseOrderProduct::getConsumablesCode, Function.identity()));
List<ConsumablesPurchaseOrderProductDTO> consumablesPurchaseOrderProductRequestList = updateConsumablesPurchaseOrderRequest.getConsumablesPurchaseOrderProductList();
if(CollectionUtils.isEmpty(consumablesPurchaseOrderProductRequestList)){
throw new BadRequestException("耗材采购单产品不能为空!");
}
Map<String, ConsumablesPurchaseOrderProductDTO> invoiceProductMapAfter = consumablesPurchaseOrderProductRequestList.stream().collect(Collectors.toMap(ConsumablesPurchaseOrderProductDTO::getConsumablesCode, Function.identity()));
//需要将订单中原来订单对应的产品删除了的数据
List<String> deleteTargetList = new ArrayList<>();
//比较量个map中key不一样的数据
for(Map.Entry<String, ConsumablesPurchaseOrderProduct> entry:consumablesPurchaseOrderProductMapBefore.entrySet()){
String consumablesCode = entry.getKey();
//修改后的map记录对应的key在原来中是否存在
ConsumablesPurchaseOrderProductDTO consumablesPurchaseOrderProductDTOTemp = invoiceProductMapAfter.get(consumablesCode);
if(null == consumablesPurchaseOrderProductDTOTemp){
deleteTargetList.add(entry.getKey());
}
}
List<ConsumablesPurchaseOrderProduct> consumablesPurchaseOrderProductList = new ArrayList<>();
for(ConsumablesPurchaseOrderProductDTO consumablesPurchaseOrderProductDTO : consumablesPurchaseOrderProductRequestList){
ConsumablesPurchaseOrderProduct consumablesPurchaseOrderProduct = new ConsumablesPurchaseOrderProduct();
BeanUtils.copyProperties(consumablesPurchaseOrderProductDTO, consumablesPurchaseOrderProduct);
consumablesPurchaseOrderProduct.setConsumablesPurchaseOrderId(consumablesPurchaseOrder.getId());
consumablesPurchaseOrderProduct.setStatus(true);
if(!(!CollectionUtils.isEmpty(deleteTargetList) && deleteTargetList.contains(consumablesPurchaseOrderProductDTO.getId()))){
consumablesPurchaseOrderProductList.add(consumablesPurchaseOrderProduct);
}
}
consumablesPurchaseOrderProductRepository.saveAll(consumablesPurchaseOrderProductList);
/**
* :
* 1. a b c
* 2. a c
* 3.
*/
if(!CollectionUtils.isEmpty(deleteTargetList)){
for(String prductCode : deleteTargetList){
consumablesPurchaseOrderProductRepository.deleteByProductCodeAndConsumablesPurchaseOrderId(prductCode, consumablesPurchaseOrder.getId());
}
}
}
@ -182,6 +262,7 @@ public class ConsumablesPurchaseOrderServiceImpl implements ConsumablesPurchaseO
Long auditUserId = auditConsumablesPurchaseOrderRequest.getAuditUserId();
String auditUserName = auditConsumablesPurchaseOrderRequest.getAuditUserName();
String auditOpinion = auditConsumablesPurchaseOrderRequest.getAuditOpinion();
String auditStatus = auditConsumablesPurchaseOrderRequest.getAuditStatus();
Optional<ConsumablesPurchaseOrder> optionalProductPurchaseOrder = consumablesPurchaseOrderRepository.findById(id);
@ -192,6 +273,7 @@ public class ConsumablesPurchaseOrderServiceImpl implements ConsumablesPurchaseO
consumablesPurchaseOrder.setAuditOpinion(auditOpinion);
Date date = new Date();
consumablesPurchaseOrder.setAuditTime(date);
consumablesPurchaseOrder.setAuditStatus(auditStatus);
consumablesPurchaseOrderRepository.save(consumablesPurchaseOrder);

View File

@ -1,18 +1,16 @@
package me.zhengjie.modules.wms.purchase.service.impl;
import me.zhengjie.exception.BadRequestException;
import me.zhengjie.modules.wms.bd.domain.MeasureUnit;
import me.zhengjie.modules.wms.outSourceProductSheet.domain.OutSourceProcessSheet;
import me.zhengjie.modules.wms.outSourceProductSheet.domain.OutSourceProcessSheetProduct;
import me.zhengjie.modules.wms.outSourceProductSheet.request.OutSourceProcessSheetProductRequest;
import me.zhengjie.modules.wms.outSourceProductSheet.service.dto.OutSourceProcessSheetDTO;
import me.zhengjie.modules.wms.outSourceProductSheet.service.dto.OutSourceProcessSheetProductDTO;
import me.zhengjie.modules.wms.purchase.cons.AuditStatus;
import me.zhengjie.modules.wms.purchase.domain.ConsumablesPurchaseOrder;
import me.zhengjie.modules.wms.purchase.domain.ProductPurchaseOrder;
import me.zhengjie.modules.wms.purchase.domain.ProductPurchaseOrderProduct;
import me.zhengjie.modules.wms.purchase.repository.ProductPurchaseOrderProductRepository;
import me.zhengjie.modules.wms.purchase.request.AuditProductPurchaseOrderRequest;
import me.zhengjie.modules.wms.purchase.request.CreateProductPurchaseOrderRequest;
import me.zhengjie.modules.wms.purchase.request.ProductPurchaseOrderProductRequest;
import me.zhengjie.modules.wms.purchase.request.UpdateProductPurchaseOrderRequest;
import me.zhengjie.modules.wms.purchase.service.dto.ConsumablesPurchaseOrderDTO;
import me.zhengjie.modules.wms.purchase.service.dto.ProductPurchaseOrderProductDTO;
import me.zhengjie.modules.wms.purchase.service.mapper.ProductPurchaseOrderProductMapper;
import me.zhengjie.utils.ValidationUtil;
@ -28,10 +26,12 @@ import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Optional;
import java.sql.Timestamp;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.function.Function;
import java.util.stream.Collectors;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import me.zhengjie.utils.PageUtil;
@ -85,7 +85,23 @@ public class ProductPurchaseOrderServiceImpl implements ProductPurchaseOrderServ
};
Page<ProductPurchaseOrder> page = productPurchaseOrderRepository.findAll(specification, pageable);
return PageUtil.toPage(page.map(productPurchaseOrderMapper::toDto));
Page<ProductPurchaseOrderDTO> productPurchaseOrderDTOPage = page.map(productPurchaseOrderMapper::toDto);
if(null != productPurchaseOrderDTOPage){
List<ProductPurchaseOrderDTO> productPurchaseOrderDTOList = productPurchaseOrderDTOPage.getContent();
if(!CollectionUtils.isEmpty(productPurchaseOrderDTOList)){
for(ProductPurchaseOrderDTO productPurchaseOrderDTO : productPurchaseOrderDTOList){
String auditStatusName = AuditStatus.getName(productPurchaseOrderDTO.getAuditStatus());
productPurchaseOrderDTO.setAuditStatusName(auditStatusName);
Timestamp createTime = productPurchaseOrderDTO.getCreateTime();
productPurchaseOrderDTO.setCreateTimeStr(new SimpleDateFormat("yyyy-MM-dd").format(createTime));
}
}
}
Map map = PageUtil.toPage(productPurchaseOrderDTOPage);
return map;
}
@Override
@ -178,12 +194,61 @@ public class ProductPurchaseOrderServiceImpl implements ProductPurchaseOrderServ
@Override
@Transactional(rollbackFor = Exception.class)
public void update(ProductPurchaseOrder resources) {
Optional<ProductPurchaseOrder> optionalProductPurchaseOrder = productPurchaseOrderRepository.findById(resources.getId());
ValidationUtil.isNull( optionalProductPurchaseOrder,"ProductPurchaseOrder","id",resources.getId());
ProductPurchaseOrder productPurchaseOrder = optionalProductPurchaseOrder.get();
productPurchaseOrder.copy(resources);
productPurchaseOrderRepository.save(productPurchaseOrder);
public void update(UpdateProductPurchaseOrderRequest updateProductPurchaseOrderRequest) {
Long productPurchaseOrderId = updateProductPurchaseOrderRequest.getId();
Optional<ProductPurchaseOrder> productPurchaseOrderOptional = productPurchaseOrderRepository.findById(productPurchaseOrderId);
ProductPurchaseOrder productPurchaseOrder = productPurchaseOrderOptional.get();
// 修改产品信息之前,查询该采购中原来的产品信息
List<ProductPurchaseOrderProduct> productPurchaseOrderProductListBeforeUpdate = productPurchaseOrderProductRepository.queryByProductPurchaseOrderIdAndStatusTrue(productPurchaseOrder.getId());
// 将修改前产品采购单中的产品放到map中key为产品code
Map<String, ProductPurchaseOrderProduct> productPurchaseOrderProductMapBefore = productPurchaseOrderProductListBeforeUpdate.stream().collect(Collectors.toMap(ProductPurchaseOrderProduct::getProductCode, Function.identity()));
List<ProductPurchaseOrderProductDTO> productPurchaseOrderProductRequestList = updateProductPurchaseOrderRequest.getProductPurchaseOrderProductList();
if(CollectionUtils.isEmpty(productPurchaseOrderProductRequestList)){
throw new BadRequestException("产品采购单产品不能为空!");
}
Map<String, ProductPurchaseOrderProductDTO> productPurchaseOrderProductMapAfter = productPurchaseOrderProductRequestList.stream().collect(Collectors.toMap(ProductPurchaseOrderProductDTO::getProductCode, Function.identity()));
//需要将订单中原来订单对应的产品删除了的数据
List<String> deleteTargetList = new ArrayList<>();
//比较量个map中key不一样的数据
for(Map.Entry<String, ProductPurchaseOrderProduct> entry:productPurchaseOrderProductMapBefore.entrySet()){
String consumablesCode = entry.getKey();
//修改后的map记录对应的key在原来中是否存在
ProductPurchaseOrderProductDTO productPurchaseOrderProductDTOTemp = productPurchaseOrderProductMapAfter.get(consumablesCode);
if(null == productPurchaseOrderProductDTOTemp){
deleteTargetList.add(entry.getKey());
}
}
List<ProductPurchaseOrderProduct> productPurchaseOrderProductList = new ArrayList<>();
for(ProductPurchaseOrderProductDTO productPurchaseOrderProductDTO : productPurchaseOrderProductRequestList){
ProductPurchaseOrderProduct productPurchaseOrderProduct = new ProductPurchaseOrderProduct();
BeanUtils.copyProperties(productPurchaseOrderProductDTO, productPurchaseOrderProduct);
productPurchaseOrderProduct.setProductPurchaseOrderId(productPurchaseOrder.getId());
productPurchaseOrderProduct.setStatus(true);
if(!(!CollectionUtils.isEmpty(deleteTargetList) && deleteTargetList.contains(productPurchaseOrderProductDTO.getId()))){
productPurchaseOrderProductList.add(productPurchaseOrderProduct);
}
}
productPurchaseOrderProductRepository.saveAll(productPurchaseOrderProductList);
/**
* :
* 1. a b c
* 2. a c
* 3.
*/
if(!CollectionUtils.isEmpty(deleteTargetList)){
for(String prductCode : deleteTargetList){
productPurchaseOrderProductRepository.deleteByProductCodeAndProductPurchaseOrderId(prductCode, productPurchaseOrder.getId());
}
}
}
@Override
@ -203,6 +268,7 @@ public class ProductPurchaseOrderServiceImpl implements ProductPurchaseOrderServ
Long auditUserId = auditProductPurchaseOrderRequest.getAuditUserId();
String auditUserName = auditProductPurchaseOrderRequest.getAuditUserName();
String auditOpinion = auditProductPurchaseOrderRequest.getAuditOpinion();
String auditStatus = auditProductPurchaseOrderRequest.getAuditStatus();
Optional<ProductPurchaseOrder> optionalProductPurchaseOrder = productPurchaseOrderRepository.findById(id);
@ -213,6 +279,7 @@ public class ProductPurchaseOrderServiceImpl implements ProductPurchaseOrderServ
productPurchaseOrder.setAuditOpinion(auditOpinion);
Date auditDate = new Date();
productPurchaseOrder.setAuditTime(auditDate);
productPurchaseOrder.setAuditStatus(auditStatus);
productPurchaseOrderRepository.save(productPurchaseOrder);

View File

@ -3,7 +3,7 @@ server:
spring:
profiles:
active: prod
active: dev
jackson:
time-zone: GMT+8
data: