From 8ae537466df04ff8e7690a22aa2bcb1eb83062a5 Mon Sep 17 00:00:00 2001 From: zxy Date: Wed, 3 Jun 2026 16:46:52 +0800 Subject: [PATCH] =?UTF-8?q?feat(biz):=20=E6=B7=BB=E5=8A=A0=E6=88=90?= =?UTF-8?q?=E5=93=81=E5=85=A5=E5=BA=93=E5=87=BA=E5=BA=93=E5=8A=9F=E8=83=BD?= =?UTF-8?q?=E5=B9=B6=E4=BC=98=E5=8C=96=E7=BB=84=E4=BB=B6=E8=87=AA=E5=8A=A8?= =?UTF-8?q?=E5=AF=BC=E5=85=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 移除不必要的 Element Plus 组件自动导入配置 - 添加成品入库出库相关 API 接口定义 - 新增 ProPackVO 数据传输对象 - 实现成品入库出库保存功能接口 - 重构 ProStorageService 业务逻辑 - 添加库存查询和单据号生成功能 - 优化操作人ID数据类型从字符串到长整型 - 完善入库出库日志记录机制 - 实现出库入库单据号自动生成规则 --- .../admin/propack/vo/ProPackPageReqVO.java | 17 +- .../prostorage/ProStorageController.java | 13 +- .../prostorage/vo/ProStorageInsertReqVO.java | 21 ++ .../dataobject/prostorage/ProStorageDO.java | 2 +- .../prostoragemat/ProStorageMatDO.java | 5 +- .../ProStorageInventoryMapper.java | 8 + .../service/prostorage/ProStorageService.java | 6 +- .../prostorage/ProStorageServiceImpl.java | 183 ++++++++++++++++-- .../ProStorageInventoryService.java | 6 + .../ProStorageInventoryServiceImpl.java | 12 ++ .../ProStorageLogServiceImpl.java | 6 +- .../src/api/biz/prostorage/index.ts | 111 ++++++----- .../src/types/auto-components.d.ts | 32 +-- 13 files changed, 313 insertions(+), 109 deletions(-) create mode 100644 mes-module-chemmes/mes-module-chemmes-biz/src/main/java/com/ningxia/yunxi/chemmes/module/biz/controller/admin/prostorage/vo/ProStorageInsertReqVO.java diff --git a/mes-module-chemmes/mes-module-chemmes-biz/src/main/java/com/ningxia/yunxi/chemmes/module/biz/controller/admin/propack/vo/ProPackPageReqVO.java b/mes-module-chemmes/mes-module-chemmes-biz/src/main/java/com/ningxia/yunxi/chemmes/module/biz/controller/admin/propack/vo/ProPackPageReqVO.java index cd00852..3c52a1c 100644 --- a/mes-module-chemmes/mes-module-chemmes-biz/src/main/java/com/ningxia/yunxi/chemmes/module/biz/controller/admin/propack/vo/ProPackPageReqVO.java +++ b/mes-module-chemmes/mes-module-chemmes-biz/src/main/java/com/ningxia/yunxi/chemmes/module/biz/controller/admin/propack/vo/ProPackPageReqVO.java @@ -1,13 +1,14 @@ package com.ningxia.yunxi.chemmes.module.biz.controller.admin.propack.vo; -import lombok.*; - -import java.time.LocalDate; -import java.util.*; -import io.swagger.v3.oas.annotations.media.Schema; import com.ningxia.yunxi.chemmes.framework.common.pojo.PageParam; -import java.math.BigDecimal; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.ToString; import org.springframework.format.annotation.DateTimeFormat; + +import java.math.BigDecimal; +import java.time.LocalDate; import java.time.LocalDateTime; import static com.ningxia.yunxi.chemmes.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY; @@ -68,7 +69,7 @@ public class ProPackPageReqVO extends PageParam { private LocalDateTime[] outEndDtime; @Schema(description = "包装日期") - @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY) private LocalDate[] proDate; @Schema(description = "包装班组") @@ -129,4 +130,4 @@ public class ProPackPageReqVO extends PageParam { @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY) private LocalDate[] outDate; -} \ No newline at end of file +} diff --git a/mes-module-chemmes/mes-module-chemmes-biz/src/main/java/com/ningxia/yunxi/chemmes/module/biz/controller/admin/prostorage/ProStorageController.java b/mes-module-chemmes/mes-module-chemmes-biz/src/main/java/com/ningxia/yunxi/chemmes/module/biz/controller/admin/prostorage/ProStorageController.java index a67eb6e..10d88fb 100644 --- a/mes-module-chemmes/mes-module-chemmes-biz/src/main/java/com/ningxia/yunxi/chemmes/module/biz/controller/admin/prostorage/ProStorageController.java +++ b/mes-module-chemmes/mes-module-chemmes-biz/src/main/java/com/ningxia/yunxi/chemmes/module/biz/controller/admin/prostorage/ProStorageController.java @@ -6,6 +6,7 @@ import com.ningxia.yunxi.chemmes.framework.common.pojo.PageResult; import com.ningxia.yunxi.chemmes.framework.common.util.object.BeanUtils; import com.ningxia.yunxi.chemmes.framework.excel.core.util.ExcelUtils; import com.ningxia.yunxi.chemmes.framework.operatelog.core.annotations.OperateLog; +import com.ningxia.yunxi.chemmes.module.biz.controller.admin.prostorage.vo.ProStorageInsertReqVO; import com.ningxia.yunxi.chemmes.module.biz.controller.admin.prostorage.vo.ProStoragePageReqVO; import com.ningxia.yunxi.chemmes.module.biz.controller.admin.prostorage.vo.ProStorageRespVO; import com.ningxia.yunxi.chemmes.module.biz.controller.admin.prostorage.vo.ProStorageSaveReqVO; @@ -44,6 +45,14 @@ public class ProStorageController { return success(proStorageService.createProStorage(createReqVO)); } + @PostMapping("/save") + @Operation(summary = "成品入/出库") + @PreAuthorize("@ss.hasPermission('twm:pro-storage:create')") + public CommonResult saveProStorage(@Valid @RequestBody List createReqVO) { + proStorageService.saveProStorage(createReqVO); + return success(true); + } + @PutMapping("/update") @Operation(summary = "更新成品入/出库") @PreAuthorize("@ss.hasPermission('twm:pro-storage:update')") @@ -83,12 +92,12 @@ public class ProStorageController { @PreAuthorize("@ss.hasPermission('twm:pro-storage:export')") @OperateLog(type = EXPORT) public void exportProStorageExcel(@Valid ProStoragePageReqVO pageReqVO, - HttpServletResponse response) throws IOException { + HttpServletResponse response) throws IOException { pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); List list = proStorageService.getProStoragePage(pageReqVO).getList(); // 导出 Excel ExcelUtils.write(response, "成品入/出库.xls", "数据", ProStorageRespVO.class, - BeanUtils.toBean(list, ProStorageRespVO.class)); + BeanUtils.toBean(list, ProStorageRespVO.class)); } } diff --git a/mes-module-chemmes/mes-module-chemmes-biz/src/main/java/com/ningxia/yunxi/chemmes/module/biz/controller/admin/prostorage/vo/ProStorageInsertReqVO.java b/mes-module-chemmes/mes-module-chemmes-biz/src/main/java/com/ningxia/yunxi/chemmes/module/biz/controller/admin/prostorage/vo/ProStorageInsertReqVO.java new file mode 100644 index 0000000..26c3eb9 --- /dev/null +++ b/mes-module-chemmes/mes-module-chemmes-biz/src/main/java/com/ningxia/yunxi/chemmes/module/biz/controller/admin/prostorage/vo/ProStorageInsertReqVO.java @@ -0,0 +1,21 @@ +package com.ningxia.yunxi.chemmes.module.biz.controller.admin.prostorage.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +@Schema(description = "管理后台 - 成品入/出库新增/修改 Request VO") +@Data +public class ProStorageInsertReqVO { + + /** + * 来源id + */ + private Integer id; + private Integer storeHouseId; + private String storeHouseName; + private String storeHouseCd; + private Integer storeAreaId; + private String storeAreCd; + private String storeAreaName; + +} diff --git a/mes-module-chemmes/mes-module-chemmes-biz/src/main/java/com/ningxia/yunxi/chemmes/module/biz/dal/dataobject/prostorage/ProStorageDO.java b/mes-module-chemmes/mes-module-chemmes-biz/src/main/java/com/ningxia/yunxi/chemmes/module/biz/dal/dataobject/prostorage/ProStorageDO.java index fb6ede5..470688a 100644 --- a/mes-module-chemmes/mes-module-chemmes-biz/src/main/java/com/ningxia/yunxi/chemmes/module/biz/dal/dataobject/prostorage/ProStorageDO.java +++ b/mes-module-chemmes/mes-module-chemmes-biz/src/main/java/com/ningxia/yunxi/chemmes/module/biz/dal/dataobject/prostorage/ProStorageDO.java @@ -55,7 +55,7 @@ public class ProStorageDO extends BaseDO { /** * 操作人id */ - private String operatorId; + private Long operatorId; /** * 操作人 */ diff --git a/mes-module-chemmes/mes-module-chemmes-biz/src/main/java/com/ningxia/yunxi/chemmes/module/biz/dal/dataobject/prostoragemat/ProStorageMatDO.java b/mes-module-chemmes/mes-module-chemmes-biz/src/main/java/com/ningxia/yunxi/chemmes/module/biz/dal/dataobject/prostoragemat/ProStorageMatDO.java index 4b95678..66ac746 100644 --- a/mes-module-chemmes/mes-module-chemmes-biz/src/main/java/com/ningxia/yunxi/chemmes/module/biz/dal/dataobject/prostoragemat/ProStorageMatDO.java +++ b/mes-module-chemmes/mes-module-chemmes-biz/src/main/java/com/ningxia/yunxi/chemmes/module/biz/dal/dataobject/prostoragemat/ProStorageMatDO.java @@ -3,7 +3,6 @@ package com.ningxia.yunxi.chemmes.module.biz.dal.dataobject.prostoragemat; import com.baomidou.mybatisplus.annotation.KeySequence; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; -import com.ningxia.yunxi.chemmes.framework.mybatis.core.dataobject.BaseDO; import com.ningxia.yunxi.chemmes.framework.mybatis.core.dataobject.BaseDOWithoutLogic; import lombok.*; @@ -32,7 +31,7 @@ public class ProStorageMatDO extends BaseDOWithoutLogic { /** * 入/出库Id */ - private Long stockId; + private Integer stockId; /** * 备注 */ @@ -96,7 +95,7 @@ public class ProStorageMatDO extends BaseDOWithoutLogic { /** * 关联单号id */ - private Long relarionId; + private Integer relarionId; /** * 单袋规格 */ diff --git a/mes-module-chemmes/mes-module-chemmes-biz/src/main/java/com/ningxia/yunxi/chemmes/module/biz/dal/mysql/prostorageinventory/ProStorageInventoryMapper.java b/mes-module-chemmes/mes-module-chemmes-biz/src/main/java/com/ningxia/yunxi/chemmes/module/biz/dal/mysql/prostorageinventory/ProStorageInventoryMapper.java index 8fe5921..4693723 100644 --- a/mes-module-chemmes/mes-module-chemmes-biz/src/main/java/com/ningxia/yunxi/chemmes/module/biz/dal/mysql/prostorageinventory/ProStorageInventoryMapper.java +++ b/mes-module-chemmes/mes-module-chemmes-biz/src/main/java/com/ningxia/yunxi/chemmes/module/biz/dal/mysql/prostorageinventory/ProStorageInventoryMapper.java @@ -50,4 +50,12 @@ public interface ProStorageInventoryMapper extends BaseMapperX() + .eq(ProStorageInventoryDO::getStoreHouseCd, storeHouseCd) + .eq(ProStorageInventoryDO::getStoreAreCd, storeAreCd) + .eq(ProStorageInventoryDO::getLotNo, lotNo) + .eq(ProStorageInventoryDO::getMatCode, matCode) + ); + } } diff --git a/mes-module-chemmes/mes-module-chemmes-biz/src/main/java/com/ningxia/yunxi/chemmes/module/biz/service/prostorage/ProStorageService.java b/mes-module-chemmes/mes-module-chemmes-biz/src/main/java/com/ningxia/yunxi/chemmes/module/biz/service/prostorage/ProStorageService.java index 1c96bf3..32619a3 100644 --- a/mes-module-chemmes/mes-module-chemmes-biz/src/main/java/com/ningxia/yunxi/chemmes/module/biz/service/prostorage/ProStorageService.java +++ b/mes-module-chemmes/mes-module-chemmes-biz/src/main/java/com/ningxia/yunxi/chemmes/module/biz/service/prostorage/ProStorageService.java @@ -1,11 +1,13 @@ package com.ningxia.yunxi.chemmes.module.biz.service.prostorage; import com.ningxia.yunxi.chemmes.framework.common.pojo.PageResult; +import com.ningxia.yunxi.chemmes.module.biz.controller.admin.prostorage.vo.ProStorageInsertReqVO; import com.ningxia.yunxi.chemmes.module.biz.controller.admin.prostorage.vo.ProStoragePageReqVO; import com.ningxia.yunxi.chemmes.module.biz.controller.admin.prostorage.vo.ProStorageSaveReqVO; import com.ningxia.yunxi.chemmes.module.biz.dal.dataobject.prostorage.ProStorageDO; import javax.validation.Valid; +import java.util.List; /** * 成品入/出库 Service 接口 @@ -22,6 +24,8 @@ public interface ProStorageService { */ Integer createProStorage(@Valid ProStorageSaveReqVO createReqVO); + void saveProStorage(@Valid List createReqVO); + /** * 更新成品入/出库 * @@ -52,6 +56,6 @@ public interface ProStorageService { */ PageResult getProStoragePage(ProStoragePageReqVO pageReqVO); - String generateSaleDeliveryNo(); + String generateBillNo(String operatorType); } diff --git a/mes-module-chemmes/mes-module-chemmes-biz/src/main/java/com/ningxia/yunxi/chemmes/module/biz/service/prostorage/ProStorageServiceImpl.java b/mes-module-chemmes/mes-module-chemmes-biz/src/main/java/com/ningxia/yunxi/chemmes/module/biz/service/prostorage/ProStorageServiceImpl.java index 5a48bd4..7fd7ac5 100644 --- a/mes-module-chemmes/mes-module-chemmes-biz/src/main/java/com/ningxia/yunxi/chemmes/module/biz/service/prostorage/ProStorageServiceImpl.java +++ b/mes-module-chemmes/mes-module-chemmes-biz/src/main/java/com/ningxia/yunxi/chemmes/module/biz/service/prostorage/ProStorageServiceImpl.java @@ -1,17 +1,33 @@ package com.ningxia.yunxi.chemmes.module.biz.service.prostorage; import com.ningxia.yunxi.chemmes.framework.common.pojo.PageResult; +import com.ningxia.yunxi.chemmes.framework.common.util.CodeGenerateUtils; import com.ningxia.yunxi.chemmes.framework.common.util.object.BeanUtils; +import com.ningxia.yunxi.chemmes.framework.security.core.util.SecurityFrameworkUtils; +import com.ningxia.yunxi.chemmes.module.biz.controller.admin.prostorage.vo.ProStorageInsertReqVO; import com.ningxia.yunxi.chemmes.module.biz.controller.admin.prostorage.vo.ProStoragePageReqVO; import com.ningxia.yunxi.chemmes.module.biz.controller.admin.prostorage.vo.ProStorageSaveReqVO; +import com.ningxia.yunxi.chemmes.module.biz.dal.dataobject.propack.ProPackDO; import com.ningxia.yunxi.chemmes.module.biz.dal.dataobject.prostorage.ProStorageDO; +import com.ningxia.yunxi.chemmes.module.biz.dal.dataobject.prostorageinventory.ProStorageInventoryDO; +import com.ningxia.yunxi.chemmes.module.biz.dal.dataobject.prostoragelog.ProStorageLogDO; +import com.ningxia.yunxi.chemmes.module.biz.dal.dataobject.prostoragemat.ProStorageMatDO; +import com.ningxia.yunxi.chemmes.module.biz.dal.mysql.propack.ProPackMapper; import com.ningxia.yunxi.chemmes.module.biz.dal.mysql.prostorage.ProStorageMapper; +import com.ningxia.yunxi.chemmes.module.biz.dal.mysql.prostorageinventory.ProStorageInventoryMapper; +import com.ningxia.yunxi.chemmes.module.biz.dal.mysql.prostoragemat.ProStorageMatMapper; +import com.ningxia.yunxi.chemmes.module.biz.service.prostorageinventory.ProStorageInventoryService; +import com.ningxia.yunxi.chemmes.module.biz.service.prostoragelog.ProStorageLogService; +import com.ningxia.yunxi.chemmes.module.system.dal.dataobject.user.AdminUserDO; +import com.ningxia.yunxi.chemmes.module.system.service.user.AdminUserService; +import lombok.RequiredArgsConstructor; +import org.jetbrains.annotations.NotNull; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import org.springframework.validation.annotation.Validated; -import javax.annotation.Resource; import java.time.LocalDate; -import java.time.format.DateTimeFormatter; +import java.util.List; import static com.ningxia.yunxi.chemmes.framework.common.exception.util.ServiceExceptionUtil.exception; @@ -22,10 +38,16 @@ import static com.ningxia.yunxi.chemmes.framework.common.exception.util.ServiceE */ @Service @Validated +@RequiredArgsConstructor public class ProStorageServiceImpl implements ProStorageService { - @Resource - private ProStorageMapper proStorageMapper; + private final ProStorageMapper proStorageMapper; + private final ProStorageMatMapper proStorageMatMapper; + private final ProStorageLogService proStorageLogService; + private final ProPackMapper proPackMapper; + private final ProStorageInventoryService proStorageInventoryService; + private final ProStorageInventoryMapper proStorageInventoryMapper; + private final AdminUserService adminUserService; @Override public Integer createProStorage(ProStorageSaveReqVO createReqVO) { @@ -36,6 +58,140 @@ public class ProStorageServiceImpl implements ProStorageService { return proStorage.getId(); } + @Override + @Transactional(rollbackFor = Exception.class) + public void saveProStorage(List reqVOS) { + + Long loginUserId = SecurityFrameworkUtils.getLoginUserId(); + AdminUserDO user = adminUserService.getUser(loginUserId); + String nickname = user.getNickname(); + for (ProStorageInsertReqVO createReqVO : reqVOS) { + ProPackDO proPackDO = proPackMapper.selectById(createReqVO.getId()); + ProStorageDO proStorage = saveProStorage(loginUserId, nickname, proPackDO); + ProStorageInventoryDO storageInventoryDO = svaeStorageInventory(createReqVO, proPackDO); + saveLog(createReqVO, proStorage, proPackDO, storageInventoryDO, loginUserId, nickname); + } + } + + @NotNull + private ProStorageInventoryDO svaeStorageInventory(ProStorageInsertReqVO createReqVO, ProPackDO proPackDO) { + ProStorageInventoryDO storageInventoryDO = proStorageInventoryService.selectByMat(createReqVO.getStoreHouseCd(), createReqVO.getStoreAreCd(), proPackDO.getLotNo(), proPackDO.getMaterialCode()); + if (storageInventoryDO != null) { + storageInventoryDO.setYardQty(storageInventoryDO.getYardQty().add(proPackDO.getPackQtyAct())); + storageInventoryDO.setPackQty(storageInventoryDO.getPackQty() + proPackDO.getPackBagQty()); + proStorageInventoryMapper.updateById(storageInventoryDO); + } else { + storageInventoryDO = new ProStorageInventoryDO(); + storageInventoryDO.setId(null); + storageInventoryDO.setStoreHouseId(createReqVO.getStoreHouseId()); + storageInventoryDO.setStoreAreaId(createReqVO.getStoreAreaId()); + storageInventoryDO.setStoreHouseCd(createReqVO.getStoreHouseCd()); + storageInventoryDO.setStoreHouseName(createReqVO.getStoreHouseName()); + storageInventoryDO.setStoreAreCd(createReqVO.getStoreAreCd()); + storageInventoryDO.setStoreAreaName(createReqVO.getStoreAreaName()); + storageInventoryDO.setMaterialId(proPackDO.getMaterialId()); + storageInventoryDO.setMatName(proPackDO.getMaterialName()); + storageInventoryDO.setMatCode(proPackDO.getMaterialCode()); + storageInventoryDO.setSpec(proPackDO.getSpec()); + storageInventoryDO.setUnit(proPackDO.getUnit()); + storageInventoryDO.setLotNo(proPackDO.getLotNo()); + storageInventoryDO.setDescription(""); + storageInventoryDO.setYardQty(proPackDO.getPackQtyAct()); +// storageInventoryDO.setUseQty(); +// storageInventoryDO.setPreQty(); +// storageInventoryDO.setPrice(); + storageInventoryDO.setPackQty(proPackDO.getPackBagQty()); + storageInventoryDO.setBagSpec(proPackDO.getBagSpec()); + storageInventoryDO.setEarStoreDate(LocalDate.now()); + storageInventoryDO.setPlanId(proPackDO.getPlanId()); + storageInventoryDO.setProNo(proPackDO.getPlanNo()); + String s = proStorageInventoryService.generateBillNo(); + storageInventoryDO.setInventBillNo(s); + proStorageInventoryMapper.insert(storageInventoryDO); + } + return storageInventoryDO; + } + + @NotNull + private ProStorageDO saveProStorage(Long loginUserId, String nickname, ProPackDO proPackDO) { + ProStorageDO proStorage = new ProStorageDO(); + proStorage.setBillNo(generateBillNo("2")); + proStorage.setOperatorType(1); + proStorage.setBusinessType(10); + proStorage.setRemark(""); + proStorage.setStatus(2); + proStorage.setBillDate(LocalDate.now()); + proStorage.setOperatorId(loginUserId); + proStorage.setOperatorName(nickname); + proStorage.setRelarionNo(proPackDO.getPackNo()); + proStorage.setRelarionId(proPackDO.getId()); +// proStorage.setBillType("0"); +// proStorage.setSourceNo(); +// proStorage.setSourceId(); + proStorageMapper.insert(proStorage); + return proStorage; + } + + private void saveLog(ProStorageInsertReqVO createReqVO, ProStorageDO proStorage, ProPackDO proPackDO, ProStorageInventoryDO storageInventoryDO, Long loginUserId, String nickname) { + ProStorageMatDO proStorageMat = new ProStorageMatDO(); + proStorageMat.setStockId(proStorage.getId()); + proStorageMat.setDescription(""); + proStorageMat.setStoreHouseId(createReqVO.getStoreHouseId()); + proStorageMat.setStoreAreaId(createReqVO.getStoreAreaId()); + proStorageMat.setStoreHouseCd(createReqVO.getStoreHouseCd()); + proStorageMat.setStoreHouseName(createReqVO.getStoreHouseName()); + proStorageMat.setStoreAreCd(createReqVO.getStoreAreCd()); + proStorageMat.setStoreAreaName(createReqVO.getStoreAreaName()); + proStorageMat.setMaterialId(proPackDO.getMaterialId()); + proStorageMat.setMatName(proPackDO.getMaterialName()); + proStorageMat.setMatCode(proPackDO.getMaterialCode()); + proStorageMat.setSpec(proPackDO.getSpec()); + proStorageMat.setUnit(proPackDO.getUnit()); + proStorageMat.setLotNo(proPackDO.getLotNo()); + proStorageMat.setOperatorQty(proPackDO.getPackQtyAct()); +// proStorageMat.setSourceId(); + proStorageMat.setRelarionId(proPackDO.getId()); + proStorageMat.setBagSpec(proPackDO.getBagSpec()); + proStorageMat.setBagQty(proPackDO.getPackBagQty()); + proStorageMat.setPlanId(proPackDO.getPlanId()); + proStorageMat.setProNo(proPackDO.getPlanNo()); + proStorageMat.setInventBillNo(storageInventoryDO.getInventBillNo()); + proStorageMatMapper.insert(proStorageMat); + + ProStorageLogDO proStorageLog = new ProStorageLogDO(); + proStorageLog.setId(null); +// proStorageLog.setStockId(); + proStorageLog.setDescription(""); + proStorageLog.setStatus("2"); + proStorageLog.setStoreHouseId(createReqVO.getStoreHouseId()); + proStorageLog.setStoreAreaId(createReqVO.getStoreAreaId()); + proStorageLog.setStoreHouseCd(createReqVO.getStoreHouseCd()); + proStorageLog.setStoreHouseName(createReqVO.getStoreHouseName()); + proStorageLog.setStoreAreCd(createReqVO.getStoreAreCd()); + proStorageLog.setStoreAreaName(createReqVO.getStoreAreaName()); + proStorageLog.setMaterialId(proPackDO.getMaterialId()); + proStorageLog.setMatName(proPackDO.getMaterialName()); + proStorageLog.setMatCode(proPackDO.getMaterialCode()); + proStorageLog.setSpec(proPackDO.getSpec()); + proStorageLog.setUnit(proPackDO.getUnit()); + proStorageLog.setLotNo(proPackDO.getLotNo()); + proStorageLog.setOperatorQty(proPackDO.getPackQtyAct()); + proStorageLog.setOperatorType("1"); + proStorageLog.setBusinessType("10"); +// proStorageLog.setStorageAft(); +// proStorageLog.setStorageBef(); +// proStorageLog.setStockItemId(); + proStorageLog.setBillDate(LocalDate.now()); + proStorageLog.setOperatorId(String.valueOf(loginUserId)); + proStorageLog.setOperatorName(nickname); + proStorageLog.setRelarionNo(proStorage.getBillNo()); + proStorageLog.setRelarionId(proStorage.getId()); + proStorageLog.setRelarionDetailId(proStorageMat.getId()); +// proStorageLog.setDpstNo(); + proStorageLog.setInventBillNo(storageInventoryDO.getInventBillNo()); + proStorageLogService.saveProStorageLog(proStorageLog); + } + @Override public void updateProStorage(ProStorageSaveReqVO updateReqVO) { // 校验存在 @@ -70,20 +226,13 @@ public class ProStorageServiceImpl implements ProStorageService { } @Override - public String generateSaleDeliveryNo() { - String ym = LocalDate.now().format(DateTimeFormatter.ofPattern("yyyyMM")); - - String maxBillNo = proStorageMapper.selectMaxBillNo(); - - if (maxBillNo == null || maxBillNo.length() < 9 - || !maxBillNo.substring(2, 8).equals(ym)) { - return "CK" + ym + "001"; - } else { - String prefix = maxBillNo.substring(0, 8); - int sequence = Integer.parseInt(maxBillNo.substring(8)); - sequence++; - return prefix + String.format("%03d", sequence); + public String generateBillNo(String operatorType) { + String prefix = "CK"; + if ("2".equals(operatorType)) { + prefix = "RKD"; } + String maxBillNo = proStorageMapper.selectMaxBillNo(); + return CodeGenerateUtils.generateBillNo(prefix, maxBillNo); } } diff --git a/mes-module-chemmes/mes-module-chemmes-biz/src/main/java/com/ningxia/yunxi/chemmes/module/biz/service/prostorageinventory/ProStorageInventoryService.java b/mes-module-chemmes/mes-module-chemmes-biz/src/main/java/com/ningxia/yunxi/chemmes/module/biz/service/prostorageinventory/ProStorageInventoryService.java index 1e266e7..54ab659 100644 --- a/mes-module-chemmes/mes-module-chemmes-biz/src/main/java/com/ningxia/yunxi/chemmes/module/biz/service/prostorageinventory/ProStorageInventoryService.java +++ b/mes-module-chemmes/mes-module-chemmes-biz/src/main/java/com/ningxia/yunxi/chemmes/module/biz/service/prostorageinventory/ProStorageInventoryService.java @@ -52,4 +52,10 @@ public interface ProStorageInventoryService { */ PageResult getProStorageInventoryPage(ProStorageInventoryPageReqVO pageReqVO); + + ProStorageInventoryDO selectByMat(String storeHouseCd, String storeAreCd, String lotNo, String matCode); + + String generateBillNo( ); + + } diff --git a/mes-module-chemmes/mes-module-chemmes-biz/src/main/java/com/ningxia/yunxi/chemmes/module/biz/service/prostorageinventory/ProStorageInventoryServiceImpl.java b/mes-module-chemmes/mes-module-chemmes-biz/src/main/java/com/ningxia/yunxi/chemmes/module/biz/service/prostorageinventory/ProStorageInventoryServiceImpl.java index 983e1db..3de4dc2 100644 --- a/mes-module-chemmes/mes-module-chemmes-biz/src/main/java/com/ningxia/yunxi/chemmes/module/biz/service/prostorageinventory/ProStorageInventoryServiceImpl.java +++ b/mes-module-chemmes/mes-module-chemmes-biz/src/main/java/com/ningxia/yunxi/chemmes/module/biz/service/prostorageinventory/ProStorageInventoryServiceImpl.java @@ -1,6 +1,7 @@ package com.ningxia.yunxi.chemmes.module.biz.service.prostorageinventory; import com.ningxia.yunxi.chemmes.framework.common.pojo.PageResult; +import com.ningxia.yunxi.chemmes.framework.common.util.CodeGenerateUtils; import com.ningxia.yunxi.chemmes.framework.common.util.object.BeanUtils; import com.ningxia.yunxi.chemmes.module.biz.controller.admin.prostorageinventory.vo.ProStorageInventoryPageReqVO; import com.ningxia.yunxi.chemmes.module.biz.controller.admin.prostorageinventory.vo.ProStorageInventorySaveReqVO; @@ -67,4 +68,15 @@ public class ProStorageInventoryServiceImpl implements ProStorageInventoryServic return proStorageInventoryMapper.selectPage(pageReqVO); } + @Override + public ProStorageInventoryDO selectByMat(String storeHouseCd, String storeAreCd, String lotNo, String matCode) { + return proStorageInventoryMapper.selectByMat(storeHouseCd, storeAreCd, lotNo, matCode); + } + + @Override + public String generateBillNo( ) { + String prefix = "CH"; + String maxBillNo = proStorageInventoryMapper.selectMaxInventBillNo(); + return CodeGenerateUtils.generateBillNo(prefix, maxBillNo); + } } diff --git a/mes-module-chemmes/mes-module-chemmes-biz/src/main/java/com/ningxia/yunxi/chemmes/module/biz/service/prostoragelog/ProStorageLogServiceImpl.java b/mes-module-chemmes/mes-module-chemmes-biz/src/main/java/com/ningxia/yunxi/chemmes/module/biz/service/prostoragelog/ProStorageLogServiceImpl.java index 0be2cd9..d433be7 100644 --- a/mes-module-chemmes/mes-module-chemmes-biz/src/main/java/com/ningxia/yunxi/chemmes/module/biz/service/prostoragelog/ProStorageLogServiceImpl.java +++ b/mes-module-chemmes/mes-module-chemmes-biz/src/main/java/com/ningxia/yunxi/chemmes/module/biz/service/prostoragelog/ProStorageLogServiceImpl.java @@ -77,8 +77,12 @@ public class ProStorageLogServiceImpl implements ProStorageLogService { private String generatePurReceiptNo(String operatorType) { + String prifix = "CK"; + if ("2".equals(operatorType)) { + prifix = "RK"; + } String maxPurReceiptNo = proStorageLogMapper.selectMaxPurReceiptNo(operatorType); - return CodeGenerateUtils.generateBillNo("CK", maxPurReceiptNo); + return CodeGenerateUtils.generateBillNo(prifix, maxPurReceiptNo); } } diff --git a/mes-ui/mes-ui-admin-vue3/src/api/biz/prostorage/index.ts b/mes-ui/mes-ui-admin-vue3/src/api/biz/prostorage/index.ts index a967c66..c6403e7 100644 --- a/mes-ui/mes-ui-admin-vue3/src/api/biz/prostorage/index.ts +++ b/mes-ui/mes-ui-admin-vue3/src/api/biz/prostorage/index.ts @@ -1,48 +1,63 @@ -import request from '@/config/axios' - -export interface ProStorageVO { - id: number - billNo: string - operatorType: boolean - businessType: number - remark: string - status: boolean - billDate: localdate - operatorId: number - operatorName: string - relarionNo: string - relarionId: number - billType: string - sourceNo: string - sourceId: number -} - -// 查询成品入/出库分页 -export const getProStoragePage = async (params) => { - return await request.get({ url: `/twm/pro-storage/page`, params }) -} - -// 查询成品入/出库详情 -export const getProStorage = async (id: number) => { - return await request.get({ url: `/twm/pro-storage/get?id=` + id }) -} - -// 新增成品入/出库 -export const createProStorage = async (data: ProStorageVO) => { - return await request.post({ url: `/twm/pro-storage/create`, data }) -} - -// 修改成品入/出库 -export const updateProStorage = async (data: ProStorageVO) => { - return await request.put({ url: `/twm/pro-storage/update`, data }) -} - -// 删除成品入/出库 -export const deleteProStorage = async (id: number) => { - return await request.delete({ url: `/twm/pro-storage/delete?id=` + id }) -} - -// 导出成品入/出库 Excel -export const exportProStorage = async (params) => { - return await request.download({ url: `/twm/pro-storage/export-excel`, params }) -} \ No newline at end of file +import request from '@/config/axios' + +export interface ProStorageVO { + id: number + billNo: string + operatorType: boolean + businessType: number + remark: string + status: boolean + billDate: localdate + operatorId: number + operatorName: string + relarionNo: string + relarionId: number + billType: string + sourceNo: string + sourceId: number +} + +export interface ProPackVO { + id: number + storeHouseId: number + storeAreaId: number + storeHouseCd: string + storeHouseName: string + storeAreaCd: string + storeAreaName: string +} + +// 查询成品入/出库分页 +export const getProStoragePage = async (params) => { + return await request.get({ url: `/twm/pro-storage/page`, params }) +} + +// 查询成品入/出库详情 +export const getProStorage = async (id: number) => { + return await request.get({ url: `/twm/pro-storage/get?id=` + id }) +} + +// 新增成品入/出库 +export const createProStorage = async (data: ProStorageVO) => { + return await request.post({ url: `/twm/pro-storage/create`, data }) +} + +// 新增成品入/出库 +export const saveProStorage = async (data: ProPackVO) => { + return await request.post({ url: `/twm/pro-storage/save`, data }) +} + +// 修改成品入/出库 +export const updateProStorage = async (data: ProStorageVO) => { + return await request.put({ url: `/twm/pro-storage/update`, data }) +} + +// 删除成品入/出库 +export const deleteProStorage = async (id: number) => { + return await request.delete({ url: `/twm/pro-storage/delete?id=` + id }) +} + +// 导出成品入/出库 Excel +export const exportProStorage = async (params) => { + return await request.download({ url: `/twm/pro-storage/export-excel`, params }) +} 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 11a8628..be75e33 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 @@ -32,27 +32,13 @@ declare module 'vue' { 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'] - ElAside: typeof import('element-plus/es')['ElAside'] - ElAutoResizer: typeof import('element-plus/es')['ElAutoResizer'] ElAvatar: typeof import('element-plus/es')['ElAvatar'] - ElBadge: typeof import('element-plus/es')['ElBadge'] ElButton: typeof import('element-plus/es')['ElButton'] - ElButtonGroup: typeof import('element-plus/es')['ElButtonGroup'] ElCard: typeof import('element-plus/es')['ElCard'] - ElCarousel: typeof import('element-plus/es')['ElCarousel'] - ElCarouselItem: typeof import('element-plus/es')['ElCarouselItem'] - ElCascader: typeof import('element-plus/es')['ElCascader'] ElCheckbox: typeof import('element-plus/es')['ElCheckbox'] ElCheckboxGroup: typeof import('element-plus/es')['ElCheckboxGroup'] ElCol: typeof import('element-plus/es')['ElCol'] - ElCollapse: typeof import('element-plus/es')['ElCollapse'] - ElCollapseItem: typeof import('element-plus/es')['ElCollapseItem'] - ElCollapseTransition: typeof import('element-plus/es')['ElCollapseTransition'] - ElColorPicker: typeof import('element-plus/es')['ElColorPicker'] - ElContainer: typeof import('element-plus/es')['ElContainer'] ElDatePicker: typeof import('element-plus/es')['ElDatePicker'] - ElDescriptions: typeof import('element-plus/es')['ElDescriptions'] - ElDescriptionsItem: typeof import('element-plus/es')['ElDescriptionsItem'] ElDialog: typeof import('element-plus/es')['ElDialog'] ElDivider: typeof import('element-plus/es')['ElDivider'] ElDrawer: typeof import('element-plus/es')['ElDrawer'] @@ -68,41 +54,27 @@ declare module 'vue' { ElementTask: typeof import('./../components/bpmnProcessDesigner/package/penal/task/ElementTask.vue')['default'] ElForm: typeof import('element-plus/es')['ElForm'] ElFormItem: typeof import('element-plus/es')['ElFormItem'] - ElHeader: typeof import('element-plus/es')['ElHeader'] ElIcon: typeof import('element-plus/es')['ElIcon'] - ElImage: typeof import('element-plus/es')['ElImage'] ElImageViewer: typeof import('element-plus/es')['ElImageViewer'] ElInput: typeof import('element-plus/es')['ElInput'] ElInputNumber: typeof import('element-plus/es')['ElInputNumber'] - ElLink: typeof import('element-plus/es')['ElLink'] - ElMain: typeof import('element-plus/es')['ElMain'] 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'] - ElRate: typeof import('element-plus/es')['ElRate'] ElRow: typeof import('element-plus/es')['ElRow'] ElScrollbar: typeof import('element-plus/es')['ElScrollbar'] ElSelect: typeof import('element-plus/es')['ElSelect'] ElSkeleton: typeof import('element-plus/es')['ElSkeleton'] - ElSlider: typeof import('element-plus/es')['ElSlider'] - ElSpace: typeof import('element-plus/es')['ElSpace'] ElSwitch: typeof import('element-plus/es')['ElSwitch'] ElTable: typeof import('element-plus/es')['ElTable'] ElTableColumn: typeof import('element-plus/es')['ElTableColumn'] - ElTableV2: typeof import('element-plus/es')['ElTableV2'] ElTabPane: typeof import('element-plus/es')['ElTabPane'] ElTabs: typeof import('element-plus/es')['ElTabs'] ElTag: typeof import('element-plus/es')['ElTag'] - ElText: typeof import('element-plus/es')['ElText'] - ElTimeline: typeof import('element-plus/es')['ElTimeline'] - ElTimelineItem: typeof import('element-plus/es')['ElTimelineItem'] - ElTimePicker: typeof import('element-plus/es')['ElTimePicker'] - ElTimeSelect: typeof import('element-plus/es')['ElTimeSelect'] ElTooltip: typeof import('element-plus/es')['ElTooltip'] - ElTransfer: typeof import('element-plus/es')['ElTransfer'] ElTree: typeof import('element-plus/es')['ElTree'] ElTreeSelect: typeof import('element-plus/es')['ElTreeSelect'] ElUpload: typeof import('element-plus/es')['ElUpload'] @@ -122,7 +94,11 @@ declare module 'vue' { ProcessDesigner: typeof import('./../components/bpmnProcessDesigner/package/designer/ProcessDesigner.vue')['default'] ProcessPalette: typeof import('./../components/bpmnProcessDesigner/package/palette/ProcessPalette.vue')['default'] ProcessViewer: typeof import('./../components/bpmnProcessDesigner/package/designer/ProcessViewer.vue')['default'] + Propack: typeof import('./../api/biz/propack/index.ts')['default'] + ProPackForm: typeof import('./../views/biz/prostorage/ProPackForm.vue')['default'] PropertiesPanel: typeof import('./../components/bpmnProcessDesigner/package/penal/PropertiesPanel.vue')['default'] + Prostorage: typeof import('./../views/biz/prostorage/index.vue')['default'] + ProStorageForm: typeof import('./../views/biz/prostorage/ProStorageForm.vue')['default'] Qrcode: typeof import('./../components/Qrcode/src/Qrcode.vue')['default'] ReceiveTask: typeof import('./../components/bpmnProcessDesigner/package/penal/task/task-components/ReceiveTask.vue')['default'] RouterLink: typeof import('vue-router')['RouterLink']