diff --git a/mes-module-majoys/mes-module-majoys-api/src/main/java/com/chanko/yunxi/mes/module/biz/enums/ErrorCodeConstants.java b/mes-module-majoys/mes-module-majoys-api/src/main/java/com/chanko/yunxi/mes/module/biz/enums/ErrorCodeConstants.java index 12b46b90..c82d756e 100644 --- a/mes-module-majoys/mes-module-majoys-api/src/main/java/com/chanko/yunxi/mes/module/biz/enums/ErrorCodeConstants.java +++ b/mes-module-majoys/mes-module-majoys-api/src/main/java/com/chanko/yunxi/mes/module/biz/enums/ErrorCodeConstants.java @@ -65,6 +65,7 @@ public interface ErrorCodeConstants { ErrorCode STORAGE_LOG_NOT_EXISTS = new ErrorCode(1_003_006, "库存日志不存在"); ErrorCode STORAGE_CHECK_NOT_EXISTS = new ErrorCode(1_003_007, "库存盘点不存在"); ErrorCode STORAGE_CHECK_MAT_NOT_EXISTS = new ErrorCode(1_003_008, "盘点物料不存在"); + ErrorCode STORAGE_STOCK_QUANTITY_LACK = new ErrorCode(1_003_009, "库存数量不足"); /************订单管理***********/ ErrorCode PROJECT_ORDER_NOT_EXISTS = new ErrorCode(1_004_001, "项目订单不存在"); diff --git a/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/controller/admin/chanjet/ChanjetInterfaceEnum.java b/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/controller/admin/chanjet/ChanjetInterfaceEnum.java index f8308930..49338d29 100644 --- a/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/controller/admin/chanjet/ChanjetInterfaceEnum.java +++ b/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/controller/admin/chanjet/ChanjetInterfaceEnum.java @@ -25,14 +25,14 @@ public enum ChanjetInterfaceEnum { QUERY_SALE_ORDER("/tplus/api/v2/SaleOrderOpenApi/GetVoucherDTO", "查询销售订单", QuerySaleOrderReqVO.class, ResultResVO.class), CREATE_REPORT("/tplus/api/v2/ManufactureReportOpenApi/Create", "创建报工记录", CreateReportReqVO.class, ResultResVO.class), DELETE_REPORT("/tplus/api/v2/ManufactureReportOpenApi/Create", "删除报工记录", DeleteReportReqVO.class, ResultResVO.class), - CREATE_STOCK_IN_ORDER("/tplus/api/v2/AdjustCostInOpenApi/Create", "创建入库单", CreateStorageReqVO.class, ResultResVO.class), - CREATE_STOCK_OUT_ORDER("/tplus/api/v2/AdjustCostOutOpenApi/Create", "创建出库单", CreateStockOutOrderReqVO.class, ResultResVO.class), + CREATE_STOCK_IN_ORDER("/tplus/api/v2/productReceive/Create", "创建入库单", CreateStorageReqVO.class, ResultResVO.class), + CREATE_STOCK_OUT_ORDER("/tplus/api/v2/materialDispatch/Create", "创建出库单", CreateStockOutOrderReqVO.class, ResultResVO.class), CREATE_PRODUCTION_ORDER("/tplus/api/v2/ManufactureOrderOpenApi/Create", "创建生产加工单", CreateProductionOrderReqVO.class, ResultResVO.class), AUDIT_PRODUCTION_ORDER("/tplus/api/v2/ManufactureOrderOpenApi/Audit", "审核生产加工单", AuditProductionOrderReqVO.class, ResultResVO.class), QUERY_PRODUCTION_ORDER_LIST("/tplus/api/v2/ManufactureOrderOpenApi/FindVoucherList", "查询生产加工单", ListProductionOrderReqVO.class, ListResultResVO.class), QUERY_BOM("/tplus/api/v2/bom/Query", "查询物料清单列表", QueryBomReqVO.class, QueryBomResVO.class), QUERY_CURRENT_STOCK("/tplus/api/v2/currentStock/Query", "查询存货", QueryCurrentStockReqVO.class, QueryCurrentStockResVO.class), - QUERY_WAREHOUSE("/tplus/api/v2/warehouse/Query", "查询存货", QueryWarehouseReqVO.class, QueryWarehouseResVO.class), + QUERY_WAREHOUSE("/tplus/api/v2/warehouse/Query", "查询仓库", QueryWarehouseReqVO.class, QueryWarehouseResVO.class), ; private String uri; diff --git a/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/controller/admin/chanjet/dto/CreateStorageInDTO.java b/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/controller/admin/chanjet/dto/CreateStockInDTO.java similarity index 50% rename from mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/controller/admin/chanjet/dto/CreateStorageInDTO.java rename to mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/controller/admin/chanjet/dto/CreateStockInDTO.java index 838ba7da..ecf12902 100644 --- a/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/controller/admin/chanjet/dto/CreateStorageInDTO.java +++ b/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/controller/admin/chanjet/dto/CreateStockInDTO.java @@ -3,7 +3,9 @@ package com.chanko.yunxi.mes.module.biz.controller.admin.chanjet.dto; import lombok.Data; import lombok.experimental.Accessors; +import java.util.HashMap; import java.util.List; +import java.util.Map; /** * @author chenxi @@ -11,14 +13,18 @@ import java.util.List; */ @Data @Accessors(chain = true) -public class CreateStorageInDTO { +public class CreateStockInDTO { - private Warehouse Warehouse; + private String ExternalCode; private String VoucherDate; - private Boolean IsModifiedCode; - private String Code; - private Partner Partner; + private Map VoucherType = new HashMap(2){{ + put("Code", "ST1002"); + }}; + private Map BusiType = new HashMap(2){{ + put("Code", "03"); + }}; + private Warehouse Warehouse; private String Memo; - private List AdjustCostDetails; - private String ExternalCode; + private List RDRecordDetails; + } diff --git a/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/controller/admin/chanjet/dto/CreateStockOutDTO.java b/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/controller/admin/chanjet/dto/CreateStockOutDTO.java new file mode 100644 index 00000000..44c1985a --- /dev/null +++ b/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/controller/admin/chanjet/dto/CreateStockOutDTO.java @@ -0,0 +1,36 @@ +/** + * Copyright 2024 bejson.com + */ +package com.chanko.yunxi.mes.module.biz.controller.admin.chanjet.dto; + +import lombok.Data; +import lombok.experimental.Accessors; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * Auto-generated: 2024-04-20 16:43:39 + * + * @author bejson.com (i@bejson.com) + * @website http://www.bejson.com/java2pojo/ + */ +@Data +@Accessors(chain = true) +public class CreateStockOutDTO { + + private String ExternalCode; + private String VoucherDate; + private Map VoucherType = new HashMap(2){{ + put("Code", "ST1022"); + }}; + private Map BusiType = new HashMap(2){{ + put("Code", "41"); + }}; + + private Warehouse Warehouse; + private List RDRecordDetails; + + private String Memo; +} diff --git a/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/controller/admin/chanjet/dto/CreateStockOutOrderDto.java b/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/controller/admin/chanjet/dto/RDRecordDetail.java similarity index 56% rename from mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/controller/admin/chanjet/dto/CreateStockOutOrderDto.java rename to mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/controller/admin/chanjet/dto/RDRecordDetail.java index 554f31cc..ea9255cb 100644 --- a/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/controller/admin/chanjet/dto/CreateStockOutOrderDto.java +++ b/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/controller/admin/chanjet/dto/RDRecordDetail.java @@ -2,11 +2,11 @@ * Copyright 2024 bejson.com */ package com.chanko.yunxi.mes.module.biz.controller.admin.chanjet.dto; + import lombok.Data; import lombok.experimental.Accessors; -import java.util.Date; -import java.util.List; +import java.math.BigDecimal; /** * Auto-generated: 2024-04-20 16:43:39 @@ -16,13 +16,8 @@ import java.util.List; */ @Data @Accessors(chain = true) -public class CreateStockOutOrderDto { - - private String ExternalCode; - private Date VoucherDate; - private String Memo; - private Warehouse Warehouse; - private List AdjustCostDetails; - +public class RDRecordDetail { + private Inventory Inventory; + private BigDecimal BaseQuantity; } diff --git a/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/controller/admin/chanjet/vo/CreateStockOutOrderReqVO.java b/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/controller/admin/chanjet/vo/CreateStockOutOrderReqVO.java index f7debe7d..17f4f0f1 100644 --- a/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/controller/admin/chanjet/vo/CreateStockOutOrderReqVO.java +++ b/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/controller/admin/chanjet/vo/CreateStockOutOrderReqVO.java @@ -1,7 +1,7 @@ package com.chanko.yunxi.mes.module.biz.controller.admin.chanjet.vo; import com.chanjet.openapi.sdk.java.AbstractChanjetContent; -import com.chanko.yunxi.mes.module.biz.controller.admin.chanjet.dto.CreateStockOutOrderDto; +import com.chanko.yunxi.mes.module.biz.controller.admin.chanjet.dto.CreateStockOutDTO; import lombok.AllArgsConstructor; import lombok.Data; @@ -40,5 +40,5 @@ import lombok.Data; @AllArgsConstructor public class CreateStockOutOrderReqVO extends AbstractChanjetContent { - private CreateStockOutOrderDto dto; + private CreateStockOutDTO dto; } diff --git a/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/controller/admin/chanjet/vo/CreateStorageReqVO.java b/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/controller/admin/chanjet/vo/CreateStorageReqVO.java index cc4e2466..b0ce29f5 100644 --- a/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/controller/admin/chanjet/vo/CreateStorageReqVO.java +++ b/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/controller/admin/chanjet/vo/CreateStorageReqVO.java @@ -1,7 +1,7 @@ package com.chanko.yunxi.mes.module.biz.controller.admin.chanjet.vo; import com.chanjet.openapi.sdk.java.AbstractChanjetContent; -import com.chanko.yunxi.mes.module.biz.controller.admin.chanjet.dto.CreateStorageInDTO; +import com.chanko.yunxi.mes.module.biz.controller.admin.chanjet.dto.CreateStockInDTO; import lombok.AllArgsConstructor; import lombok.Data; @@ -40,5 +40,5 @@ import lombok.Data; @AllArgsConstructor public class CreateStorageReqVO extends AbstractChanjetContent { - private CreateStorageInDTO dto; + private CreateStockInDTO dto; } diff --git a/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/controller/admin/processdesign/vo/ProcessDesignRespVO.java b/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/controller/admin/processdesign/vo/ProcessDesignRespVO.java index a916de25..d9152054 100644 --- a/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/controller/admin/processdesign/vo/ProcessDesignRespVO.java +++ b/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/controller/admin/processdesign/vo/ProcessDesignRespVO.java @@ -126,7 +126,7 @@ public class ProcessDesignRespVO { @Schema(description = "项目状态") private Integer planStatus; - @Schema(description = "项目状态") - private Integer spec; + @Schema(description = "规格型号") + private String spec; } diff --git a/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/manager/ChanjetManager.java b/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/manager/ChanjetManager.java index 521d851a..bfd51226 100644 --- a/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/manager/ChanjetManager.java +++ b/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/manager/ChanjetManager.java @@ -1041,25 +1041,25 @@ public class ChanjetManager { List matList = storageMatService.getStorageMatListByStockId(id); if(matList.isEmpty()) return; - WarehouseDO aDo = warehouseMapper.selectById(storage.getId()); + WarehouseDO aDo = warehouseMapper.selectById(storage.getWhId()); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); - CreateStorageInDTO dto = new CreateStorageInDTO(); - ArrayList detailList = new ArrayList<>(); + CreateStockOutDTO dto = new CreateStockOutDTO(); + ArrayList detailList = new ArrayList<>(); dto.setExternalCode(storage.getStockNo()) .setVoucherDate(sdf.format(new Date())) - .setAdjustCostDetails(detailList) + .setRDRecordDetails(detailList) .setWarehouse(new Warehouse(aDo.getWhNo())) ; matList.forEach(mat -> { - AdjustCostDetails detail = new AdjustCostDetails(); - detail.setAmount(mat.getStorageOkQty().intValue()) + RDRecordDetail detail = new RDRecordDetail(); + detail.setBaseQuantity(mat.getStorageOkQty()) .setInventory(new Inventory(mat.getProjectSubCode())); detailList.add(detail); }); - CommonResult result = chanjetSpi.invoke(CREATE_STOCK_OUT_ORDER, new CreateStorageReqVO(dto), ResultResVO.class); + CommonResult result = chanjetSpi.invoke(CREATE_STOCK_OUT_ORDER, new CreateStockOutOrderReqVO(dto), ResultResVO.class); if(!result.isSuccess()){ throw exception(CALL_API_ERROR); } @@ -1079,17 +1079,17 @@ public class ChanjetManager { WarehouseDO aDo = warehouseMapper.selectById(storage.getWhId()); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); - CreateStorageInDTO dto = new CreateStorageInDTO(); - ArrayList detailList = new ArrayList<>(); + CreateStockInDTO dto = new CreateStockInDTO(); + ArrayList detailList = new ArrayList<>(); dto.setExternalCode(storage.getStockNo()) .setVoucherDate(sdf.format(new Date())) - .setAdjustCostDetails(detailList) + .setRDRecordDetails(detailList) .setWarehouse(new Warehouse(aDo.getWhNo())) ; matList.forEach(mat -> { - AdjustCostDetails detail = new AdjustCostDetails(); - detail.setAmount(mat.getStorageOkQty().intValue()) + RDRecordDetail detail = new RDRecordDetail(); + detail.setBaseQuantity(mat.getStorageOkQty()) .setInventory(new Inventory(mat.getProjectSubCode())); detailList.add(detail); }); @@ -1213,7 +1213,9 @@ public class ChanjetManager { aDo.setWhNo(queryData.getCode()) .setWhName(queryData.getName()) .setId(queryData.getID()) - .setWhStatus(queryData.getDisabled() ? ValidStatusEnum.INVALID.getCode() : ValidStatusEnum.VALID.getCode()); + .setWhStatus(queryData.getDisabled() ? ValidStatusEnum.INVALID.getCode() : ValidStatusEnum.VALID.getCode()) + .setCreator("1") + ; insertList.add(aDo); } }); diff --git a/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/service/storage/StorageServiceImpl.java b/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/service/storage/StorageServiceImpl.java index 0bd5a656..d9e043ed 100644 --- a/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/service/storage/StorageServiceImpl.java +++ b/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/service/storage/StorageServiceImpl.java @@ -1,30 +1,37 @@ package com.chanko.yunxi.mes.module.biz.service.storage; +import cn.hutool.core.collection.CollUtil; import com.chanjet.openapi.sdk.java.exception.ChanjetApiException; import com.chanko.yunxi.mes.framework.common.pojo.PageResult; import com.chanko.yunxi.mes.framework.common.util.object.BeanUtils; import com.chanko.yunxi.mes.module.biz.controller.admin.storage.vo.StoragePageReqVO; import com.chanko.yunxi.mes.module.biz.controller.admin.storage.vo.StorageSaveReqVO; +import com.chanko.yunxi.mes.module.biz.controller.admin.storagemat.vo.StorageMatPageReqVO; import com.chanko.yunxi.mes.module.biz.dal.dataobject.serialnumber.SerialNumberDO; import com.chanko.yunxi.mes.module.biz.dal.dataobject.storage.StorageDO; +import com.chanko.yunxi.mes.module.biz.dal.dataobject.storagemat.StorageMatDO; import com.chanko.yunxi.mes.module.biz.dal.mysql.storage.StorageMapper; +import com.chanko.yunxi.mes.module.biz.dal.mysql.storagemat.StorageMatMapper; import com.chanko.yunxi.mes.module.biz.enums.CodeEnum; import com.chanko.yunxi.mes.module.biz.enums.StockTypeEnum; import com.chanko.yunxi.mes.module.biz.enums.StorageStatusEnum; import com.chanko.yunxi.mes.module.biz.manager.CrossOrderManager; import com.chanko.yunxi.mes.module.biz.service.serialnumber.SerialNumberService; +import com.chanko.yunxi.mes.module.biz.service.storagemat.StorageMatService; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.validation.annotation.Validated; import javax.annotation.Resource; +import java.math.BigDecimal; import java.text.SimpleDateFormat; import java.util.Date; +import java.util.List; import static com.chanko.yunxi.mes.framework.common.exception.util.ServiceExceptionUtil.exception; import static com.chanko.yunxi.mes.module.biz.enums.CodeEnum.STOCK_IN; import static com.chanko.yunxi.mes.module.biz.enums.CodeEnum.STOCK_OUT; -import static com.chanko.yunxi.mes.module.biz.enums.ErrorCodeConstants.STORAGE_NOT_EXISTS; +import static com.chanko.yunxi.mes.module.biz.enums.ErrorCodeConstants.*; /** * 入/出库 Service 实现类 @@ -44,6 +51,9 @@ public class StorageServiceImpl implements StorageService { @Resource private CrossOrderManager crossOrderManager; + @Resource + private StorageMatService storageMatService; + @Override @Transactional(rollbackFor = Exception.class) public Long createStorage(StorageSaveReqVO createReqVO) { @@ -79,6 +89,7 @@ public class StorageServiceImpl implements StorageService { public void updateStorage(StorageSaveReqVO updateReqVO) { // 校验存在 validateStorageExists(updateReqVO.getId()); + // 更新 StorageDO updateObj = BeanUtils.toBean(updateReqVO, StorageDO.class); storageMapper.updateById(updateObj); @@ -88,6 +99,22 @@ public class StorageServiceImpl implements StorageService { if(updateObj.getStatus() == StorageStatusEnum.SUBMIT.getCode()){ + // 数据校验 + StorageMatPageReqVO reqVO = new StorageMatPageReqVO(); + reqVO.setStockId(updateReqVO.getId()) + .setWhId(updateReqVO.getWhId()); + List storageMatList = storageMatService.getStorageMatPage(reqVO); + if(CollUtil.isEmpty(storageMatList)) { + throw exception(STORAGE_MAT_NOT_EXISTS); + } + + for (StorageMatDO storageMatDO : storageMatList) { + if(storageMatDO.getStorageOkQty().compareTo(new BigDecimal(0)) == 0 + || storageMatDO.getStockQuantity().compareTo(storageMatDO.getStorageOkQty()) < 0){ + throw exception(STORAGE_STOCK_QUANTITY_LACK); + } + } + try { crossOrderManager.createStockOutOrder(updateObj.getId()); } catch (ChanjetApiException e) {