From cb588a8386b1b93f0893cbefc378cc8a06777623 Mon Sep 17 00:00:00 2001 From: zxy Date: Mon, 1 Jun 2026 17:11:19 +0800 Subject: [PATCH] =?UTF-8?q?fix(biz):=20=E4=BF=AE=E5=A4=8D=E5=85=A5?= =?UTF-8?q?=E5=BA=93=E9=80=80=E6=96=99=E7=9B=B8=E5=85=B3=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../RawStorageMatController.java | 6 +- .../rawstoragemat/vo/RawStorageMatRespVO.java | 20 +++ .../rawstoragemat/RawStorageMatMapper.java | 63 ++++++---- .../rawstoragemat/RawStorageMatService.java | 3 +- .../RawStorageMatServiceImpl.java | 3 +- .../src/api/biz/rawstorage/index.ts | 117 ++++++++++-------- .../src/types/auto-components.d.ts | 3 + .../biz/returnstorage/ReturnStorageForm.vue | 113 +++-------------- .../src/views/biz/returnstorage/index.vue | 20 +-- 9 files changed, 155 insertions(+), 193 deletions(-) diff --git a/mes-module-chemmes/mes-module-chemmes-biz/src/main/java/com/ningxia/yunxi/chemmes/module/biz/controller/admin/rawstoragemat/RawStorageMatController.java b/mes-module-chemmes/mes-module-chemmes-biz/src/main/java/com/ningxia/yunxi/chemmes/module/biz/controller/admin/rawstoragemat/RawStorageMatController.java index 95c53be..15cb51d 100644 --- a/mes-module-chemmes/mes-module-chemmes-biz/src/main/java/com/ningxia/yunxi/chemmes/module/biz/controller/admin/rawstoragemat/RawStorageMatController.java +++ b/mes-module-chemmes/mes-module-chemmes-biz/src/main/java/com/ningxia/yunxi/chemmes/module/biz/controller/admin/rawstoragemat/RawStorageMatController.java @@ -74,8 +74,8 @@ public class RawStorageMatController { @Operation(summary = "获得原料入/出库物料分页") @PreAuthorize("@ss.hasPermission('twm:raw-storage-mat:query')") public CommonResult> getRawStorageMatPage(@Valid RawStorageMatPageReqVO pageReqVO) { - PageResult pageResult = rawStorageMatService.getRawStorageMatPage(pageReqVO); - return success(BeanUtils.toBean(pageResult, RawStorageMatRespVO.class)); + PageResult pageResult = rawStorageMatService.getRawStorageMatPage(pageReqVO); + return success(pageResult); } @GetMapping("/export-excel") @@ -85,7 +85,7 @@ public class RawStorageMatController { public void exportRawStorageMatExcel(@Valid RawStorageMatPageReqVO pageReqVO, HttpServletResponse response) throws IOException { pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); - List list = rawStorageMatService.getRawStorageMatPage(pageReqVO).getList(); + List list = rawStorageMatService.getRawStorageMatPage(pageReqVO).getList(); // 导出 Excel ExcelUtils.write(response, "原料入/出库物料.xls", "数据", RawStorageMatRespVO.class, BeanUtils.toBean(list, RawStorageMatRespVO.class)); diff --git a/mes-module-chemmes/mes-module-chemmes-biz/src/main/java/com/ningxia/yunxi/chemmes/module/biz/controller/admin/rawstoragemat/vo/RawStorageMatRespVO.java b/mes-module-chemmes/mes-module-chemmes-biz/src/main/java/com/ningxia/yunxi/chemmes/module/biz/controller/admin/rawstoragemat/vo/RawStorageMatRespVO.java index ee4ca01..94ac51e 100644 --- a/mes-module-chemmes/mes-module-chemmes-biz/src/main/java/com/ningxia/yunxi/chemmes/module/biz/controller/admin/rawstoragemat/vo/RawStorageMatRespVO.java +++ b/mes-module-chemmes/mes-module-chemmes-biz/src/main/java/com/ningxia/yunxi/chemmes/module/biz/controller/admin/rawstoragemat/vo/RawStorageMatRespVO.java @@ -7,6 +7,7 @@ import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import java.math.BigDecimal; +import java.time.LocalDate; import java.time.LocalDateTime; @Schema(description = "管理后台 - 原料入/出库物料 Response VO") @@ -22,6 +23,23 @@ public class RawStorageMatRespVO { @ExcelProperty("入/出库Id") private Long stockId; + @Schema(description = "操作类型") + @ExcelProperty("操作类型") + private String operatorType; + + @Schema(description = "业务类型") + @ExcelProperty("业务类型") + private String businessType; + + @Schema(description = "单据编号") + @ExcelProperty("单据编号") + private String billNo; + + @Schema(description = "单据日期") + @ExcelProperty("单据日期") + @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") + private LocalDate billDate; + @Schema(description = "备注", example = "你猜") @ExcelProperty("备注") private String description; @@ -103,4 +121,6 @@ public class RawStorageMatRespVO { @ExcelProperty("存货账单号") private String inventBillNo; + private BigDecimal returnQty; + } diff --git a/mes-module-chemmes/mes-module-chemmes-biz/src/main/java/com/ningxia/yunxi/chemmes/module/biz/dal/mysql/rawstoragemat/RawStorageMatMapper.java b/mes-module-chemmes/mes-module-chemmes-biz/src/main/java/com/ningxia/yunxi/chemmes/module/biz/dal/mysql/rawstoragemat/RawStorageMatMapper.java index eae7886..7ffa3aa 100644 --- a/mes-module-chemmes/mes-module-chemmes-biz/src/main/java/com/ningxia/yunxi/chemmes/module/biz/dal/mysql/rawstoragemat/RawStorageMatMapper.java +++ b/mes-module-chemmes/mes-module-chemmes-biz/src/main/java/com/ningxia/yunxi/chemmes/module/biz/dal/mysql/rawstoragemat/RawStorageMatMapper.java @@ -1,10 +1,15 @@ package com.ningxia.yunxi.chemmes.module.biz.dal.mysql.rawstoragemat; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.github.yulichang.wrapper.MPJLambdaWrapper; import com.ningxia.yunxi.chemmes.framework.common.pojo.PageResult; import com.ningxia.yunxi.chemmes.framework.mybatis.core.mapper.BaseMapperX; import com.ningxia.yunxi.chemmes.framework.mybatis.core.query.LambdaQueryWrapperX; import com.ningxia.yunxi.chemmes.module.biz.controller.admin.rawstoragemat.vo.RawStorageMatPageReqVO; +import com.ningxia.yunxi.chemmes.module.biz.controller.admin.rawstoragemat.vo.RawStorageMatRespVO; +import com.ningxia.yunxi.chemmes.module.biz.dal.dataobject.rawstorage.RawStorageDO; import com.ningxia.yunxi.chemmes.module.biz.dal.dataobject.rawstoragemat.RawStorageMatDO; +import org.apache.commons.lang3.StringUtils; import org.apache.ibatis.annotations.Mapper; import java.util.List; @@ -17,30 +22,40 @@ import java.util.List; @Mapper public interface RawStorageMatMapper extends BaseMapperX { - default PageResult selectPage(RawStorageMatPageReqVO reqVO) { - return selectPage(reqVO, new LambdaQueryWrapperX() - .eqIfPresent(RawStorageMatDO::getStockId, reqVO.getStockId()) - .eqIfPresent(RawStorageMatDO::getDescription, reqVO.getDescription()) - .betweenIfPresent(RawStorageMatDO::getCreateTime, reqVO.getCreateTime()) - .eqIfPresent(RawStorageMatDO::getStoreHouseId, reqVO.getStoreHouseId()) - .eqIfPresent(RawStorageMatDO::getStoreAreaId, reqVO.getStoreAreaId()) - .eqIfPresent(RawStorageMatDO::getStoreHouseCd, reqVO.getStoreHouseCd()) - .likeIfPresent(RawStorageMatDO::getStoreHouseName, reqVO.getStoreHouseName()) - .eqIfPresent(RawStorageMatDO::getStoreAreCd, reqVO.getStoreAreCd()) - .likeIfPresent(RawStorageMatDO::getStoreAreaName, reqVO.getStoreAreaName()) - .eqIfPresent(RawStorageMatDO::getMaterialId, reqVO.getMaterialId()) - .likeIfPresent(RawStorageMatDO::getMatName, reqVO.getMatName()) - .eqIfPresent(RawStorageMatDO::getMatCode, reqVO.getMatCode()) - .eqIfPresent(RawStorageMatDO::getSpec, reqVO.getSpec()) - .eqIfPresent(RawStorageMatDO::getUnit, reqVO.getUnit()) - .eqIfPresent(RawStorageMatDO::getLotNo, reqVO.getLotNo()) - .eqIfPresent(RawStorageMatDO::getOperatorQty, reqVO.getOperatorQty()) - .eqIfPresent(RawStorageMatDO::getPurQty, reqVO.getPurQty()) - .eqIfPresent(RawStorageMatDO::getSourceQty, reqVO.getSourceQty()) - .eqIfPresent(RawStorageMatDO::getSourceId, reqVO.getSourceId()) - .eqIfPresent(RawStorageMatDO::getRelarionId, reqVO.getRelarionId()) - .eqIfPresent(RawStorageMatDO::getInventBillNo, reqVO.getInventBillNo()) - .orderByDesc(RawStorageMatDO::getId)); + default PageResult selectPage(RawStorageMatPageReqVO reqVO) { + MPJLambdaWrapper wrapper = new MPJLambdaWrapper() + // 选择子表字段 + .selectAll(RawStorageMatDO.class) + // 选择主表字段 + .selectAs(RawStorageDO::getBillNo, RawStorageMatRespVO::getBillNo) + .selectAs(RawStorageDO::getOperatorType, RawStorageMatRespVO::getOperatorType) + .selectAs(RawStorageDO::getBusinessType, RawStorageMatRespVO::getBusinessType) + .selectAs(RawStorageDO::getBillDate, RawStorageMatRespVO::getBillDate) + // LEFT JOIN 主表 + .leftJoin(RawStorageDO.class, RawStorageDO::getId, RawStorageMatDO::getStockId) + // 查询条件 - 子表 + .eq(reqVO.getStoreHouseId() != null, RawStorageMatDO::getStoreHouseId, reqVO.getStoreHouseId()) + .eq(reqVO.getStoreAreaId() != null, RawStorageMatDO::getStoreAreaId, reqVO.getStoreAreaId()) + .eq(StringUtils.isNotBlank(reqVO.getStoreHouseCd()), RawStorageMatDO::getStoreHouseCd, reqVO.getStoreHouseCd()) + .like(StringUtils.isNotBlank(reqVO.getStoreHouseName()), RawStorageMatDO::getStoreHouseName, reqVO.getStoreHouseName()) + .eq(StringUtils.isNotBlank(reqVO.getStoreAreCd()), RawStorageMatDO::getStoreAreCd, reqVO.getStoreAreCd()) + .like(StringUtils.isNotBlank(reqVO.getStoreAreaName()), RawStorageMatDO::getStoreAreaName, reqVO.getStoreAreaName()) + .like(StringUtils.isNotBlank(reqVO.getMatName()), RawStorageMatDO::getMatName, reqVO.getMatName()) + .eq(StringUtils.isNotBlank(reqVO.getMatCode()), RawStorageMatDO::getMatCode, reqVO.getMatCode()) + .eq(StringUtils.isNotBlank(reqVO.getInventBillNo()), RawStorageMatDO::getInventBillNo, reqVO.getInventBillNo()) + // 查询条件 - 主表 + .like(StringUtils.isNotBlank(reqVO.getBillNo()), RawStorageDO::getBillNo, reqVO.getBillNo()) + .orderByDesc(RawStorageMatDO::getId); + + return selectJoinPage(reqVO, RawStorageMatRespVO.class, wrapper); + } + + /** + * 关联分页查询 + */ + default PageResult selectJoinPage(RawStorageMatPageReqVO reqVO, Class clazz, MPJLambdaWrapper wrapper) { + Page page = selectJoinPage(new Page<>(reqVO.getPageNo(), reqVO.getPageSize()), clazz, wrapper); + return new PageResult<>(page.getRecords(), page.getTotal()); } default int deleteByStockId(Integer stockId) { diff --git a/mes-module-chemmes/mes-module-chemmes-biz/src/main/java/com/ningxia/yunxi/chemmes/module/biz/service/rawstoragemat/RawStorageMatService.java b/mes-module-chemmes/mes-module-chemmes-biz/src/main/java/com/ningxia/yunxi/chemmes/module/biz/service/rawstoragemat/RawStorageMatService.java index 9b754d7..c351f1c 100644 --- a/mes-module-chemmes/mes-module-chemmes-biz/src/main/java/com/ningxia/yunxi/chemmes/module/biz/service/rawstoragemat/RawStorageMatService.java +++ b/mes-module-chemmes/mes-module-chemmes-biz/src/main/java/com/ningxia/yunxi/chemmes/module/biz/service/rawstoragemat/RawStorageMatService.java @@ -2,6 +2,7 @@ package com.ningxia.yunxi.chemmes.module.biz.service.rawstoragemat; import com.ningxia.yunxi.chemmes.framework.common.pojo.PageResult; import com.ningxia.yunxi.chemmes.module.biz.controller.admin.rawstoragemat.vo.RawStorageMatPageReqVO; +import com.ningxia.yunxi.chemmes.module.biz.controller.admin.rawstoragemat.vo.RawStorageMatRespVO; import com.ningxia.yunxi.chemmes.module.biz.controller.admin.rawstoragemat.vo.RawStorageMatSaveReqVO; import com.ningxia.yunxi.chemmes.module.biz.dal.dataobject.rawstoragemat.RawStorageMatDO; @@ -50,6 +51,6 @@ public interface RawStorageMatService { * @param pageReqVO 分页查询 * @return 原料入/出库物料分页 */ - PageResult getRawStorageMatPage(RawStorageMatPageReqVO pageReqVO); + PageResult getRawStorageMatPage(RawStorageMatPageReqVO pageReqVO); } diff --git a/mes-module-chemmes/mes-module-chemmes-biz/src/main/java/com/ningxia/yunxi/chemmes/module/biz/service/rawstoragemat/RawStorageMatServiceImpl.java b/mes-module-chemmes/mes-module-chemmes-biz/src/main/java/com/ningxia/yunxi/chemmes/module/biz/service/rawstoragemat/RawStorageMatServiceImpl.java index f644be7..398a58a 100644 --- a/mes-module-chemmes/mes-module-chemmes-biz/src/main/java/com/ningxia/yunxi/chemmes/module/biz/service/rawstoragemat/RawStorageMatServiceImpl.java +++ b/mes-module-chemmes/mes-module-chemmes-biz/src/main/java/com/ningxia/yunxi/chemmes/module/biz/service/rawstoragemat/RawStorageMatServiceImpl.java @@ -3,6 +3,7 @@ package com.ningxia.yunxi.chemmes.module.biz.service.rawstoragemat; import com.ningxia.yunxi.chemmes.framework.common.pojo.PageResult; import com.ningxia.yunxi.chemmes.framework.common.util.object.BeanUtils; import com.ningxia.yunxi.chemmes.module.biz.controller.admin.rawstoragemat.vo.RawStorageMatPageReqVO; +import com.ningxia.yunxi.chemmes.module.biz.controller.admin.rawstoragemat.vo.RawStorageMatRespVO; import com.ningxia.yunxi.chemmes.module.biz.controller.admin.rawstoragemat.vo.RawStorageMatSaveReqVO; import com.ningxia.yunxi.chemmes.module.biz.dal.dataobject.rawstoragemat.RawStorageMatDO; import com.ningxia.yunxi.chemmes.module.biz.dal.mysql.rawstoragemat.RawStorageMatMapper; @@ -63,7 +64,7 @@ public class RawStorageMatServiceImpl implements RawStorageMatService { } @Override - public PageResult getRawStorageMatPage(RawStorageMatPageReqVO pageReqVO) { + public PageResult getRawStorageMatPage(RawStorageMatPageReqVO pageReqVO) { return rawStorageMatMapper.selectPage(pageReqVO); } diff --git a/mes-ui/mes-ui-admin-vue3/src/api/biz/rawstorage/index.ts b/mes-ui/mes-ui-admin-vue3/src/api/biz/rawstorage/index.ts index 9b469a0..427b9fd 100644 --- a/mes-ui/mes-ui-admin-vue3/src/api/biz/rawstorage/index.ts +++ b/mes-ui/mes-ui-admin-vue3/src/api/biz/rawstorage/index.ts @@ -1,51 +1,66 @@ -import request from '@/config/axios' - -export interface RawStorageVO { - id: number - billNo: string - operatorType: boolean - businessType: number - remark: string - status: boolean - supplierNo: string - supplierName: string - supplierId: number - billDate: localdate - operatorId: number - operatorName: string - relarionNo: string - relarionId: number - billType: string - sourceNo: string - sourceId: number -} - -// 查询原料入/出库分页 -export const getRawStoragePage = async (params) => { - return await request.get({ url: `/twm/raw-storage/page`, params }) -} - -// 查询原料入/出库详情 -export const getRawStorage = async (id: number) => { - return await request.get({ url: `/twm/raw-storage/get?id=` + id }) -} - -// 新增原料入/出库 -export const createRawStorage = async (data: RawStorageVO) => { - return await request.post({ url: `/twm/raw-storage/create`, data }) -} - -// 修改原料入/出库 -export const updateRawStorage = async (data: RawStorageVO) => { - return await request.put({ url: `/twm/raw-storage/update`, data }) -} - -// 删除原料入/出库 -export const deleteRawStorage = async (id: number) => { - return await request.delete({ url: `/twm/raw-storage/delete?id=` + id }) -} - -// 导出原料入/出库 Excel -export const exportRawStorage = async (params) => { - return await request.download({ url: `/twm/raw-storage/export-excel`, params }) -} \ No newline at end of file +import request from '@/config/axios' + +export interface RawStorageVO { + id: number + billNo: string + operatorType: boolean + businessType: number + remark: string + status: boolean + supplierNo: string + supplierName: string + supplierId: number + billDate: localdate + operatorId: number + operatorName: string + relarionNo: string + relarionId: number + billType: string + sourceNo: string + sourceId: number +} + +// 查询原料入/出库分页 +export const getRawStoragePage = async (params) => { + return await request.get({ url: `/twm/raw-storage/page`, params }) +} + +// 查询原料入/出库详情 +export const getRawStorage = async (id: number) => { + return await request.get({ url: `/twm/raw-storage/get?id=` + id }) +} + +// 新增原料入/出库 +export const createRawStorage = async (data: RawStorageVO) => { + return await request.post({ url: `/twm/raw-storage/create`, data }) +} + +// 修改原料入/出库 +export const updateRawStorage = async (data: RawStorageVO) => { + return await request.put({ url: `/twm/raw-storage/update`, data }) +} + +// 删除原料入/出库 +export const deleteRawStorage = async (id: number) => { + return await request.delete({ url: `/twm/raw-storage/delete?id=` + id }) +} + +// 导出原料入/出库 Excel +export const exportRawStorage = async (params) => { + return await request.download({ url: `/twm/raw-storage/export-excel`, params }) +} + +// 确认原料入/出库 +export const confirmRawStorage = async (data: RawStorageVO) => { + return await request.post({ url: `/twm/raw-storage/confirm`, data }) +} + +// 获取仓储下拉列表 +export const getWarehouseSelect = async () => { + return await request.get({ url: `/twm/store-house/list`, params: { enabledStatus: 1 } }) +} + +// 获取供应商下拉列表 +export const getSupplierSelect = async () => { + return await request.get({ url: `/ims/supplier/getPopupListByOsm`, params: { enabledStatus: 1 } }) +} diff --git a/mes-ui/mes-ui-admin-vue3/src/types/auto-components.d.ts b/mes-ui/mes-ui-admin-vue3/src/types/auto-components.d.ts index d6aab15..00a2faa 100644 --- a/mes-ui/mes-ui-admin-vue3/src/types/auto-components.d.ts +++ b/mes-ui/mes-ui-admin-vue3/src/types/auto-components.d.ts @@ -31,6 +31,7 @@ declare module 'vue' { DocAlert: typeof import('./../components/DocAlert/index.vue')['default'] Echart: typeof import('./../components/Echart/src/Echart.vue')['default'] Editor: typeof import('./../components/Editor/src/Editor.vue')['default'] + ElAlert: typeof import('element-plus/es')['ElAlert'] ElAvatar: typeof import('element-plus/es')['ElAvatar'] ElButton: typeof import('element-plus/es')['ElButton'] ElCard: typeof import('element-plus/es')['ElCard'] @@ -53,10 +54,12 @@ declare module 'vue' { ElFormItem: typeof import('element-plus/es')['ElFormItem'] ElIcon: typeof import('element-plus/es')['ElIcon'] ElInput: typeof import('element-plus/es')['ElInput'] + ElInputNumber: typeof import('element-plus/es')['ElInputNumber'] ElOption: typeof import('element-plus/es')['ElOption'] ElPagination: typeof import('element-plus/es')['ElPagination'] ElPopover: typeof import('element-plus/es')['ElPopover'] ElRadio: typeof import('element-plus/es')['ElRadio'] + ElRadioButton: typeof import('element-plus/es')['ElRadioButton'] ElRadioGroup: typeof import('element-plus/es')['ElRadioGroup'] ElRow: typeof import('element-plus/es')['ElRow'] ElScrollbar: typeof import('element-plus/es')['ElScrollbar'] diff --git a/mes-ui/mes-ui-admin-vue3/src/views/biz/returnstorage/ReturnStorageForm.vue b/mes-ui/mes-ui-admin-vue3/src/views/biz/returnstorage/ReturnStorageForm.vue index 6c5828d..e49b8a5 100644 --- a/mes-ui/mes-ui-admin-vue3/src/views/biz/returnstorage/ReturnStorageForm.vue +++ b/mes-ui/mes-ui-admin-vue3/src/views/biz/returnstorage/ReturnStorageForm.vue @@ -58,26 +58,8 @@ - - - - - - - - - + +
-
- - 选择物料 - - 明细信息 -
+
明细信息
{{ scope.row.spec || '-' }} - + @@ -227,9 +204,6 @@ - - - @@ -237,10 +211,10 @@ diff --git a/mes-ui/mes-ui-admin-vue3/src/views/biz/returnstorage/index.vue b/mes-ui/mes-ui-admin-vue3/src/views/biz/returnstorage/index.vue index 1505ca5..acb506c 100644 --- a/mes-ui/mes-ui-admin-vue3/src/views/biz/returnstorage/index.vue +++ b/mes-ui/mes-ui-admin-vue3/src/views/biz/returnstorage/index.vue @@ -27,15 +27,7 @@ class="!w-200px" /> - - - + - +