diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/wms/qualityCheckSheet/request/UpdateQualityCheckSheetRequest.java b/eladmin-system/src/main/java/me/zhengjie/modules/wms/qualityCheckSheet/request/UpdateQualityCheckSheetRequest.java new file mode 100644 index 00000000..bef592de --- /dev/null +++ b/eladmin-system/src/main/java/me/zhengjie/modules/wms/qualityCheckSheet/request/UpdateQualityCheckSheetRequest.java @@ -0,0 +1,38 @@ +package me.zhengjie.modules.wms.qualityCheckSheet.request; + +import lombok.Data; +import me.zhengjie.modules.wms.outSourceProductSheet.service.dto.OutSourceProcessSheetProductDTO; +import me.zhengjie.modules.wms.qualityCheckSheet.service.dto.QualityCheckSheetProductDTO; + +import javax.persistence.Column; +import java.io.Serializable; +import java.util.List; + +/** + * @author 黄星星 + * @date 2019-11-12 + */ +@Data +public class UpdateQualityCheckSheetRequest implements Serializable { + + // 质量检验单主键 + private Long id; + + // 制单人 + @Column(name = "make_people_id") + private Long makePeopleId; + + // 制单人姓名 + @Column(name = "make_people_name") + private String makePeopleName; + + // 质量检验单单据编号 + @Column(name = "quality_cheek_sheet_code") + private String qualityCheekSheetCode; + + @Column(name = "remark") + private String remark; + + // 质量检验单产品 + private List qualityCheckSheetProductList; +} diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/wms/qualityCheckSheet/rest/QualityCheckSheetController.java b/eladmin-system/src/main/java/me/zhengjie/modules/wms/qualityCheckSheet/rest/QualityCheckSheetController.java index 7601e91d..e6983356 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/wms/qualityCheckSheet/rest/QualityCheckSheetController.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/wms/qualityCheckSheet/rest/QualityCheckSheetController.java @@ -3,6 +3,7 @@ package me.zhengjie.modules.wms.qualityCheckSheet.rest; import me.zhengjie.aop.log.Log; import me.zhengjie.modules.wms.qualityCheckSheet.domain.QualityCheckSheet; import me.zhengjie.modules.wms.qualityCheckSheet.request.CreateQualityCheckSheetRequest; +import me.zhengjie.modules.wms.qualityCheckSheet.request.UpdateQualityCheckSheetRequest; import me.zhengjie.modules.wms.qualityCheckSheet.service.QualityCheckSheetService; import me.zhengjie.modules.wms.qualityCheckSheet.service.dto.QualityCheckSheetQueryCriteria; import org.springframework.beans.factory.annotation.Autowired; @@ -49,8 +50,8 @@ public class QualityCheckSheetController { @ApiOperation(value = "修改质量检验单") @PutMapping(value = "/qualityCheckSheet") // @PreAuthorize("hasAnyRole('ADMIN','QUALITYCHECKSHEET_ALL','QUALITYCHECKSHEET_EDIT')") - public ResponseEntity update(@Validated @RequestBody QualityCheckSheet resources){ - qualityCheckSheetService.update(resources); + public ResponseEntity update(@Validated @RequestBody UpdateQualityCheckSheetRequest updateQualityCheckSheetRequest){ + qualityCheckSheetService.update(updateQualityCheckSheetRequest); return new ResponseEntity(HttpStatus.NO_CONTENT); } diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/wms/qualityCheckSheet/service/QualityCheckSheetService.java b/eladmin-system/src/main/java/me/zhengjie/modules/wms/qualityCheckSheet/service/QualityCheckSheetService.java index 4af0bb1b..deb9da3e 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/wms/qualityCheckSheet/service/QualityCheckSheetService.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/wms/qualityCheckSheet/service/QualityCheckSheetService.java @@ -2,6 +2,7 @@ package me.zhengjie.modules.wms.qualityCheckSheet.service; import me.zhengjie.modules.wms.qualityCheckSheet.domain.QualityCheckSheet; import me.zhengjie.modules.wms.qualityCheckSheet.request.CreateQualityCheckSheetRequest; +import me.zhengjie.modules.wms.qualityCheckSheet.request.UpdateQualityCheckSheetRequest; import me.zhengjie.modules.wms.qualityCheckSheet.service.dto.QualityCheckSheetDTO; import me.zhengjie.modules.wms.qualityCheckSheet.service.dto.QualityCheckSheetQueryCriteria; //import org.springframework.cache.annotation.CacheConfig; @@ -51,10 +52,10 @@ public interface QualityCheckSheetService { /** * update - * @param resources + * @param updateQualityCheckSheetRequest */ //@CacheEvict(allEntries = true) - void update(QualityCheckSheet resources); + void update(UpdateQualityCheckSheetRequest updateQualityCheckSheetRequest); /** * delete diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/wms/qualityCheckSheet/service/impl/QualityCheckSheetServiceImpl.java b/eladmin-system/src/main/java/me/zhengjie/modules/wms/qualityCheckSheet/service/impl/QualityCheckSheetServiceImpl.java index 5f6bc436..a305b8f0 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/wms/qualityCheckSheet/service/impl/QualityCheckSheetServiceImpl.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/wms/qualityCheckSheet/service/impl/QualityCheckSheetServiceImpl.java @@ -11,6 +11,7 @@ import me.zhengjie.modules.wms.qualityCheckSheet.domain.QualityCheckSheetProduct import me.zhengjie.modules.wms.qualityCheckSheet.repository.QualityCheckSheetProductRepository; import me.zhengjie.modules.wms.qualityCheckSheet.request.CreateQualityCheckSheetRequest; import me.zhengjie.modules.wms.qualityCheckSheet.request.QualityCheckSheetProductRequest; +import me.zhengjie.modules.wms.qualityCheckSheet.request.UpdateQualityCheckSheetRequest; import me.zhengjie.modules.wms.qualityCheckSheet.service.dto.QualityCheckSheetProductDTO; import me.zhengjie.modules.wms.qualityCheckSheet.service.mapper.QualityCheckSheetProductMapper; import me.zhengjie.utils.ValidationUtil; @@ -27,7 +28,11 @@ import org.springframework.transaction.annotation.Transactional; import java.util.ArrayList; import java.util.List; +import java.util.Map; import java.util.Optional; +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; @@ -123,12 +128,65 @@ public class QualityCheckSheetServiceImpl implements QualityCheckSheetService { @Override @Transactional(rollbackFor = Exception.class) - public void update(QualityCheckSheet resources) { - Optional optionalQualityCheckSheet = qualityCheckSheetRepository.findById(resources.getId()); - ValidationUtil.isNull( optionalQualityCheckSheet,"QualityCheckSheet","id",resources.getId()); - QualityCheckSheet qualityCheckSheet = optionalQualityCheckSheet.get(); - qualityCheckSheet.copy(resources); + public void update(UpdateQualityCheckSheetRequest updateQualityCheckSheetRequest) { + Long qualityCheckSheetId = updateQualityCheckSheetRequest.getId(); + Optional qualityCheckSheetOptional = qualityCheckSheetRepository.findById(qualityCheckSheetId); + QualityCheckSheet qualityCheckSheet = qualityCheckSheetOptional.get(); + BeanUtils.copyProperties(updateQualityCheckSheetRequest, qualityCheckSheet); + + qualityCheckSheet.setStatus(true); + qualityCheckSheetRepository.save(qualityCheckSheet); + + // 修改产品信息之前,查询该订单中原来的产品信息,key为产品code + List qualityCheckSheetProductListBeforeUpdate = qualityCheckSheetProductRepository.queryByQualityCheckSheetIdAndStatusTrue(qualityCheckSheet.getId()); + Map qualityCheckSheetProductMapBefore = qualityCheckSheetProductListBeforeUpdate.stream().collect(Collectors.toMap(QualityCheckSheetProduct::getProductCode, Function.identity())); + + List qualityCheckSheetProducRequestList = updateQualityCheckSheetRequest.getQualityCheckSheetProductList(); + if(CollectionUtils.isEmpty(qualityCheckSheetProducRequestList)){ + throw new BadRequestException("质量检验单产品信息不能为空!"); + } + + Map qualityCheckSheetProductMapAfter = qualityCheckSheetProducRequestList.stream().collect(Collectors.toMap(QualityCheckSheetProductDTO::getProductCode, Function.identity())); + + //需要将订单中原来订单对应的产品删除了的数据 + List deleteTargetList = new ArrayList<>(); + //比较量个map中,key不一样的数据 + for(Map.Entry entry:qualityCheckSheetProductMapBefore.entrySet()){ + String productCode = entry.getKey(); + //修改后的map记录对应的key在原来中是否存在 + QualityCheckSheetProductDTO qualityCheckSheetProductDTOTemp = qualityCheckSheetProductMapAfter.get(productCode); + if(null == qualityCheckSheetProductDTOTemp){ + deleteTargetList.add(entry.getKey()); + } + + } + + + List qualityCheckSheetProductList = new ArrayList<>(); + for(QualityCheckSheetProductDTO qualityCheckSheetProductDTO : qualityCheckSheetProducRequestList){ + QualityCheckSheetProduct qualityCheckSheetProduct = new QualityCheckSheetProduct(); + BeanUtils.copyProperties(qualityCheckSheetProductDTO, qualityCheckSheetProduct); + qualityCheckSheetProduct.setQualityCheckSheetId(qualityCheckSheet.getId()); + qualityCheckSheetProduct.setStatus(true); + + if(!(!CollectionUtils.isEmpty(deleteTargetList) && deleteTargetList.contains(qualityCheckSheetProductDTO.getId()))){ + qualityCheckSheetProductList.add(qualityCheckSheetProduct); + } + } + qualityCheckSheetProductRepository.saveAll(qualityCheckSheetProductList); + + /** + * 场景描述: + * 1.刚开始新增了 a b c三种产品 + * 2.修改的时候删除了 a c两种产品 + * 3.所以需要查修改前数据库中有的产品,再比较修改传过来的产品数据,如果修改后的在原来里面没有,需要将原来里面对应的删除 + */ + if(!CollectionUtils.isEmpty(deleteTargetList)){ + for(String prductCode : deleteTargetList){ + qualityCheckSheetProductRepository.deleteByProductCodeAndQualityCheckSheetId(prductCode, qualityCheckSheet.getId()); + } + } } @Override