diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/controller/admin/MaterialInventoryController.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/controller/admin/MaterialInventoryController.java index aa717db..a77892b 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/controller/admin/MaterialInventoryController.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/controller/admin/MaterialInventoryController.java @@ -136,5 +136,16 @@ public class MaterialInventoryController extends AbstractFileUploadController im return success(BeanUtils.toBean(pageResult, MaterialInventoryRespVO.class)); } + @GetMapping("/agree-out") + @Operation(summary = "同意出库") + @Parameter(name = "id", description = "出库单id", required = true) + public CommonResult agreeOut(@RequestParam("outId") Long outId) { + +// PageResult pageResult = mterialInventoryService.getMaterialInventoryPage(pageReqVO); +// return success(BeanUtils.toBean(pageResult, MaterialInventoryRespVO.class)); + mterialInventoryService.agreeMaterialInventoryOutbound(outId); + return success(true); + } + } \ No newline at end of file diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/controller/admin/MaterialInventoryOutboundController.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/controller/admin/MaterialInventoryOutboundController.java index f32ca5e..4c46325 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/controller/admin/MaterialInventoryOutboundController.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/controller/admin/MaterialInventoryOutboundController.java @@ -37,7 +37,7 @@ import com.zt.plat.module.qms.resource.material.service.MaterialInventoryOutboun @Tag(name = "管理后台 - 出库") @RestController -@RequestMapping("/qms/material-inventory-outbound") +@RequestMapping("/qms/resource/material-inventory-outbound") @Validated @FileUploadController(source = "qms.materialinventoryoutbound") public class MaterialInventoryOutboundController extends AbstractFileUploadController implements BusinessControllerMarker{ @@ -115,4 +115,12 @@ public class MaterialInventoryOutboundController extends AbstractFileUploadContr BeanUtils.toBean(list, MaterialInventoryOutboundRespVO.class)); } + + @PostMapping("/create-all") + @Operation(summary = "创建出库") + @PreAuthorize("@ss.hasPermission('qms:material-inventory-outbound:create')") + public CommonResult createMaterialInventoryOutboundAll(@Valid @RequestBody MaterialInventoryOutboundSaveReqVO createReqVO) { + return success(materialInventoryOutboundService.createMaterialInventoryOutboundAll(createReqVO)); + } + } \ No newline at end of file diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/controller/vo/MaterialInventoryOutboundRespVO.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/controller/vo/MaterialInventoryOutboundRespVO.java index 780e1ce..7833d9f 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/controller/vo/MaterialInventoryOutboundRespVO.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/controller/vo/MaterialInventoryOutboundRespVO.java @@ -4,6 +4,8 @@ import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; import java.time.LocalDateTime; +import java.util.List; + import com.alibaba.excel.annotation.*; @Schema(description = "管理后台 - 出库 Response VO") @@ -79,4 +81,7 @@ public class MaterialInventoryOutboundRespVO { @ExcelProperty("创建时间") private LocalDateTime createTime; + @Schema(description = "出库明细") + private List detailReqVoList; + } \ No newline at end of file diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/controller/vo/MaterialInventoryOutboundSaveReqVO.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/controller/vo/MaterialInventoryOutboundSaveReqVO.java index eba6157..d18d512 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/controller/vo/MaterialInventoryOutboundSaveReqVO.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/controller/vo/MaterialInventoryOutboundSaveReqVO.java @@ -4,6 +4,7 @@ import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; import java.time.LocalDateTime; +import java.util.List; @Schema(description = "管理后台 - 出库新增/修改 Request VO") @Data @@ -57,4 +58,7 @@ public class MaterialInventoryOutboundSaveReqVO { @Schema(description = "备注") private String remark; + + @Schema(description = "出库明细") + private List detailSaveReqVoList; } \ No newline at end of file diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/service/MaterialInventoryOutboundService.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/service/MaterialInventoryOutboundService.java index 7c550ee..dc531df 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/service/MaterialInventoryOutboundService.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/service/MaterialInventoryOutboundService.java @@ -61,4 +61,14 @@ public interface MaterialInventoryOutboundService { */ PageResult getMaterialInventoryOutboundPage(MaterialInventoryOutboundPageReqVO pageReqVO); + /** + * 创建出库 + * + * 连带出库明细一起创建 + * + * @param createReqVO 创建信息 + * @return 编号 + */ + MaterialInventoryOutboundRespVO createMaterialInventoryOutboundAll(@Valid MaterialInventoryOutboundSaveReqVO createReqVO); + } \ No newline at end of file diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/service/MaterialInventoryOutboundServiceImpl.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/service/MaterialInventoryOutboundServiceImpl.java index 71bb837..1224937 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/service/MaterialInventoryOutboundServiceImpl.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/service/MaterialInventoryOutboundServiceImpl.java @@ -1,11 +1,13 @@ package com.zt.plat.module.qms.resource.material.service; import cn.hutool.core.collection.CollUtil; -import com.zt.plat.module.qms.resource.material.controller.vo.MaterialInventoryOutboundPageReqVO; -import com.zt.plat.module.qms.resource.material.controller.vo.MaterialInventoryOutboundRespVO; -import com.zt.plat.module.qms.resource.material.controller.vo.MaterialInventoryOutboundSaveReqVO; +import com.zt.plat.module.qms.resource.material.controller.vo.*; +import com.zt.plat.module.qms.resource.material.dal.dataobject.MaterialInventoryOutboundDetailDO; +import com.zt.plat.module.qms.resource.material.dal.mapper.MaterialInventoryOutboundDetailMapper; +import jakarta.validation.Valid; import org.springframework.stereotype.Service; import jakarta.annotation.Resource; +import org.springframework.transaction.annotation.Transactional; import org.springframework.validation.annotation.Validated; import java.util.*; @@ -32,6 +34,9 @@ public class MaterialInventoryOutboundServiceImpl implements MaterialInventoryOu @Resource private MaterialInventoryOutboundMapper materialInventoryOutboundMapper; + @Resource + private MaterialInventoryOutboundDetailMapper materialInventoryOutboundDetailMapper; + @Override public MaterialInventoryOutboundRespVO createMaterialInventoryOutbound(MaterialInventoryOutboundSaveReqVO createReqVO) { // 插入 @@ -59,12 +64,12 @@ public class MaterialInventoryOutboundServiceImpl implements MaterialInventoryOu } @Override - public void deleteMaterialInventoryOutboundListByIds(List ids) { + public void deleteMaterialInventoryOutboundListByIds(List ids) { // 校验存在 validateMaterialInventoryOutboundExists(ids); // 删除 materialInventoryOutboundMapper.deleteByIds(ids); - } + } private void validateMaterialInventoryOutboundExists(List ids) { List list = materialInventoryOutboundMapper.selectByIds(ids); @@ -89,4 +94,39 @@ public class MaterialInventoryOutboundServiceImpl implements MaterialInventoryOu return materialInventoryOutboundMapper.selectPage(pageReqVO); } + @Override + @Transactional(rollbackFor = Exception.class) + public MaterialInventoryOutboundRespVO createMaterialInventoryOutboundAll(@Valid MaterialInventoryOutboundSaveReqVO createReqVO) { + + + /** 创建出库头 */ + // 插入 + MaterialInventoryOutboundDO materialInventoryOutbound = BeanUtils.toBean(createReqVO, MaterialInventoryOutboundDO.class); + materialInventoryOutboundMapper.insert(materialInventoryOutbound); + + MaterialInventoryOutboundRespVO respVO = BeanUtils.toBean(materialInventoryOutbound, MaterialInventoryOutboundRespVO.class); + + /** 创建出出库明细 */ + // 校验存在 + if (createReqVO.getDetailSaveReqVoList() == null || createReqVO.getDetailSaveReqVoList().size() == 0) + throw exception(MATERIAL_INVENTORY_OUTBOUND_DETAIL_NOT_EXISTS); + + List detailReqVoList = new ArrayList<>(); + + for (MaterialInventoryOutboundDetailSaveReqVO itemVo : createReqVO.getDetailSaveReqVoList()) { + MaterialInventoryOutboundDetailDO materialInventoryOutboundDetail = BeanUtils.toBean(itemVo, MaterialInventoryOutboundDetailDO.class); + + // 设置出库单id + materialInventoryOutboundDetail.setParentId(materialInventoryOutbound.getId()); + + materialInventoryOutboundDetailMapper.insert(materialInventoryOutboundDetail); + detailReqVoList.add(BeanUtils.toBean(materialInventoryOutboundDetail, MaterialInventoryOutboundDetailRespVO.class)); + } + + respVO.setDetailReqVoList(detailReqVoList); + + + // 返回 + return respVO; + } } \ No newline at end of file diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/service/MaterialInventoryService.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/service/MaterialInventoryService.java index ee66633..b597c11 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/service/MaterialInventoryService.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/service/MaterialInventoryService.java @@ -22,5 +22,10 @@ public interface MaterialInventoryService { */ PageResult getMaterialInventoryPage(MaterialInventoryRespVO pageReqVO); + /** + * 同意出库 + */ + + void agreeMaterialInventoryOutbound(Long id); } \ No newline at end of file diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/service/MaterialInventoryServiceImpl.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/service/MaterialInventoryServiceImpl.java index 721622f..42182d9 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/service/MaterialInventoryServiceImpl.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/service/MaterialInventoryServiceImpl.java @@ -7,19 +7,37 @@ import com.zt.plat.framework.common.util.object.BeanUtils; import com.zt.plat.module.qms.business.bus.controller.vo.BusinessSampleEntrustRegistrationExtendRespVO; import com.zt.plat.module.qms.business.bus.dal.dataobject.BusinessSampleEntrustRegistrationDO; import com.zt.plat.module.qms.enums.QmsCommonConstant; +import com.zt.plat.module.qms.resource.material.controller.vo.MaterialInventoryOutboundDetailPageReqVO; +import com.zt.plat.module.qms.resource.material.controller.vo.MaterialInventoryOutboundPageReqVO; import com.zt.plat.module.qms.resource.material.controller.vo.MaterialInventoryRespVO; +import com.zt.plat.module.qms.resource.material.dal.dataobject.MaterialInfomationDO; import com.zt.plat.module.qms.resource.material.dal.dataobject.MaterialInventoryDO; +import com.zt.plat.module.qms.resource.material.dal.dataobject.MaterialInventoryOutboundDetailDO; +import com.zt.plat.module.qms.resource.material.dal.mapper.MaterialInfomationMapper; import com.zt.plat.module.qms.resource.material.dal.mapper.MaterialInventoryMapper; +import com.zt.plat.module.qms.resource.material.dal.mapper.MaterialInventoryOutboundDetailMapper; import jakarta.annotation.Resource; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; +import java.util.stream.Collectors; + +import static com.zt.plat.framework.common.exception.util.ServiceExceptionUtil.exception; +import static com.zt.plat.module.qms.enums.ErrorCodeConstants.MATERIAL_INFOMATION_NOT_EXISTS; @Service -public class MaterialInventoryServiceImpl implements MaterialInventoryService{ +public class MaterialInventoryServiceImpl implements MaterialInventoryService { @Resource private MaterialInventoryMapper materialInventoryMapper; + @Resource + private MaterialInventoryOutboundDetailMapper materialInventoryOutboundDetailMapper;//出库明细 + + @Resource + private MaterialInfomationMapper materialInfomationMapper;//物料实例 @Override - public PageResult getMaterialInventoryPage(MaterialInventoryRespVO pageReqVO){ + public PageResult getMaterialInventoryPage(MaterialInventoryRespVO pageReqVO) { IPage page = new Page<>(pageReqVO.getPageNo(), pageReqVO.getPageSize()); IPage pageList = materialInventoryMapper.selectPageList(page, pageReqVO); @@ -27,4 +45,32 @@ public class MaterialInventoryServiceImpl implements MaterialInventoryService{ return BeanUtils.toBean(pageResult, MaterialInventoryDO.class); } + + @Override + @Transactional + public void agreeMaterialInventoryOutbound(Long outId) { + MaterialInventoryOutboundDetailPageReqVO pageReqVO = new MaterialInventoryOutboundDetailPageReqVO(); + pageReqVO.setParentId(outId); + pageReqVO.setPageSize(-1);//不分页 + PageResult materialInventoryOutboundDetailDOPageResult = materialInventoryOutboundDetailMapper.selectPage(pageReqVO); + + List list = materialInventoryOutboundDetailDOPageResult.getList(); + for (MaterialInventoryOutboundDetailDO item : list) { + // 校验存在 + validateMaterialInfomationExists(item.getInfomationId()); + // 更新 + MaterialInfomationDO updateObj = new MaterialInfomationDO(); + updateObj.setId(item.getInfomationId()); + updateObj.setUsageStatus("1"); + materialInfomationMapper.updateById(updateObj); + } + + + } + + private void validateMaterialInfomationExists(Long id) { + if (materialInfomationMapper.selectById(id) == null) { + throw exception(MATERIAL_INFOMATION_NOT_EXISTS); + } + } }