fix: 1.已发货的销售台账对应的出入库记录做限制不能删除;2.销售台账入库操作后,点击删除,对应的销售入库记录未一并删除;3.销售台账入库状态新增部分入库
| | |
| | | `user_id` int NULL DEFAULT NULL COMMENT 'ç¨æ·id', |
| | | PRIMARY KEY (`id`) |
| | | ); |
| | | |
| | | ALTER TABLE `product-inventory-management-hbtmblc`.`stock_in_record` |
| | | ADD COLUMN `sales_ledger_id` bigint NULL COMMENT 'éå®å°è´¦ID' AFTER `weighing_date`, |
| | | ADD COLUMN `sales_ledger_product_id` bigint NULL COMMENT 'éå®å°è´¦äº§åID' AFTER `sales_ledger_id`; |
| | | |
| | | ALTER TABLE `product-inventory-management-hbtmblc`.`sales_ledger_product` |
| | | ADD COLUMN `product_stock_status` int NULL COMMENT '产åå
¥åºç¶æ' AFTER `floor_code`; |
| | | |
| | | ALTER TABLE `product-inventory-management-hbtmblc`.`stock_out_record` |
| | | MODIFY COLUMN `outbound_batches` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT 'åºåºæ¹æ¬¡' AFTER `id`, |
| | | MODIFY COLUMN `stock_out_num` decimal(16, 4) NULL DEFAULT NULL COMMENT 'åºåºæ°é' AFTER `outbound_batches`, |
| | | MODIFY COLUMN `record_id` int NULL DEFAULT NULL COMMENT 'åºåºæ¥æºid' AFTER `stock_out_num`, |
| | | ADD COLUMN `sales_ledger_id` bigint NULL COMMENT 'éå®è®¢åID' AFTER `type`, |
| | | ADD COLUMN `sales_ledger_product_id` bigint NULL COMMENT 'éå®è®¢å产åID' AFTER `sales_ledger_id`; |
| | |
| | | QUALITYINSPECT_STOCK_IN("6", "è´¨æ£-åæ ¼å
¥åº"), |
| | | DEFECTIVE_PASS("11", "ä¸åæ ¼-è®©æ¥æ¾è¡"), |
| | | RETURN_HE_IN("14", "éå®éè´§-åæ ¼å
¥åº"), |
| | | SALE_STOCK_IN("15", "éå®-åæ ¼å
¥åº"); |
| | | SALE_STOCK_IN("15", "éå®è®¢å-åæ ¼å
¥åº"); |
| | | |
| | | |
| | | private final String code; |
| | |
| | | |
| | | /** |
| | | * ä¸åæ ¼å
¥åº |
| | | * |
| | | * @param productModelId |
| | | * @param quantity |
| | | * @param recordType |
| | | * @param recordId |
| | | */ |
| | | public void addUnStock(Long productModelId, BigDecimal quantity, String recordType,Long recordId) { |
| | | public void addUnStock(Long productModelId, BigDecimal quantity, String recordType, Long recordId) { |
| | | StockUninventoryDto stockUninventoryDto = new StockUninventoryDto(); |
| | | stockUninventoryDto.setRecordId(recordId); |
| | | stockUninventoryDto.setRecordType(String.valueOf(recordType)); |
| | |
| | | |
| | | /** |
| | | * ä¸åæ ¼åºåº |
| | | * |
| | | * @param productModelId |
| | | * @param quantity |
| | | * @param recordType |
| | | * @param recordId |
| | | */ |
| | | public void subtractUnStock(Long productModelId, BigDecimal quantity, Integer recordType,Long recordId) { |
| | | public void subtractUnStock(Long productModelId, BigDecimal quantity, Integer recordType, Long recordId) { |
| | | StockUninventoryDto stockUninventoryDto = new StockUninventoryDto(); |
| | | stockUninventoryDto.setRecordId(recordId); |
| | | stockUninventoryDto.setRecordType(String.valueOf(recordType)); |
| | |
| | | |
| | | /** |
| | | * åæ ¼å
¥åº |
| | | * |
| | | * @param productModelId |
| | | * @param quantity |
| | | * @param recordType |
| | | * @param recordId |
| | | */ |
| | | public void addStock(Long productModelId, BigDecimal quantity, String recordType,Long recordId) { |
| | | public void addStock(Long productModelId, BigDecimal quantity, String recordType, Long recordId) { |
| | | addStock(null, null, productModelId, quantity, recordType, recordId); |
| | | } |
| | | |
| | | /** |
| | | * åæ ¼å
¥åº |
| | | * |
| | | * @param productModelId |
| | | * @param quantity |
| | | * @param recordType |
| | | * @param recordId |
| | | */ |
| | | public void addStock(Long salesLedgerId, Long salesLedgerProductId, Long productModelId, BigDecimal quantity, String recordType, Long recordId) { |
| | | StockInventoryDto stockInventoryDto = new StockInventoryDto(); |
| | | stockInventoryDto.setRecordId(recordId); |
| | | stockInventoryDto.setRecordType(String.valueOf(recordType)); |
| | | stockInventoryDto.setQualitity(quantity); |
| | | stockInventoryDto.setProductModelId(productModelId); |
| | | stockInventoryDto.setSalesLedgerId(salesLedgerId); |
| | | stockInventoryDto.setSalesLedgerProductId(salesLedgerProductId); |
| | | stockInventoryService.addstockInventory(stockInventoryDto); |
| | | } |
| | | |
| | | |
| | | /** |
| | | * åæ ¼åºåº |
| | | * |
| | | * @param productModelId |
| | | * @param quantity |
| | | * @param recordType |
| | | * @param recordId |
| | | */ |
| | | public void substractStock(Long productModelId, BigDecimal quantity, String recordType, Long recordId) { |
| | | StockInventoryDto stockInventoryDto = new StockInventoryDto(); |
| | | stockInventoryDto.setRecordId(recordId); |
| | | stockInventoryDto.setRecordType(String.valueOf(recordType)); |
| | | stockInventoryDto.setQualitity(quantity); |
| | | stockInventoryDto.setProductModelId(productModelId); |
| | | stockInventoryService.subtractStockInventory(stockInventoryDto); |
| | | } |
| | | |
| | | /** |
| | | * åæ ¼åºåº |
| | | * |
| | | * @param productModelId |
| | | * @param quantity |
| | | * @param recordType |
| | | * @param recordId |
| | | */ |
| | | public void substractStock(Long productModelId, BigDecimal quantity, String recordType,Long recordId) { |
| | | public void substractStock(Long salesId, Long salseProductId, Long productModelId, BigDecimal quantity, String recordType, Long recordId) { |
| | | StockInventoryDto stockInventoryDto = new StockInventoryDto(); |
| | | stockInventoryDto.setRecordId(recordId); |
| | | stockInventoryDto.setRecordType(String.valueOf(recordType)); |
| | | stockInventoryDto.setQualitity(quantity); |
| | | stockInventoryDto.setProductModelId(productModelId); |
| | | stockInventoryDto.setSalesLedgerId(salesId); |
| | | stockInventoryDto.setSalesLedgerProductId(salseProductId); |
| | | stockInventoryService.subtractStockInventory(stockInventoryDto); |
| | | } |
| | | |
| | |
| | | stockInRecordService.batchDelete(Collections.singletonList(one.getId())); |
| | | } |
| | | } |
| | | |
| | | public void deleteStockOutRecord(Long recordId, String recordType) { |
| | | StockOutRecord one = stockOutRecordService.getOne(new QueryWrapper<StockOutRecord>() |
| | | .lambda().eq(StockOutRecord::getRecordId, recordId) |
| | |
| | | |
| | | @PostMapping("/salesStock") |
| | | @ApiOperation("éå®å°è´¦äº§åå
¥åº") |
| | | public AjaxResult salesStock(@RequestBody SalesLedger salesLedger) { |
| | | salesLedgerService.salesStock(salesLedger); |
| | | public AjaxResult salesStock(@RequestBody SalesProductStockDto dto) { |
| | | salesLedgerService.salesStock(dto); |
| | | return AjaxResult.success(); |
| | | } |
| | | |
| | |
| | | @GetMapping("/listPage") |
| | | @ApiOperation("å货审æ¹å表") |
| | | public AjaxResult listPage(Page page, ShipmentApproval req) { |
| | | IPage<ShipmentApproval> listPage = shipmentApprovalService.listPage(page,req); |
| | | IPage<ShipmentApproval> listPage = shipmentApprovalService.listPage(page, req); |
| | | return AjaxResult.success(listPage); |
| | | } |
| | | |
| | |
| | | |
| | | |
| | | //åºåº |
| | | stockUtils.addStock(salesLedgerProduct.getProductModelId(), salesLedgerProduct.getQuantity(), StockOutQualifiedRecordTypeEnum.SALE_SHIP_STOCK_OUT.getCode(), req.getId()); |
| | | stockUtils.addStock(salesLedgerProduct.getSalesLedgerId(), salesLedgerProduct.getId(), salesLedgerProduct.getProductModelId(), salesLedgerProduct.getQuantity(), StockOutQualifiedRecordTypeEnum.SALE_SHIP_STOCK_OUT.getCode(), req.getId()); |
| | | } |
| | | |
| | | return AjaxResult.success(); |
| | | } |
| | | |
| | | |
| | | |
| | | /** |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.ruoyi.sales.dto; |
| | | |
| | | import io.swagger.annotations.ApiModel; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Data; |
| | | |
| | | import java.util.List; |
| | | |
| | | /** |
| | | * <br> |
| | | * éå®è®¢å产åå
¥åºDto |
| | | * </br> |
| | | * |
| | | * @author deslrey |
| | | * @version 1.0 |
| | | * @since 2026/4/17 13:53 |
| | | */ |
| | | @Data |
| | | @ApiModel(value = "SalesProductStockDto", description = "éå®è®¢å产åå
¥åºDto") |
| | | public class SalesProductStockDto { |
| | | |
| | | @ApiModelProperty("éå®è®¢åId") |
| | | private Long salesLedgerId; |
| | | |
| | | @ApiModelProperty("éå®è®¢å产åId") |
| | | private List<Long> salesLedgerProducts; |
| | | |
| | | } |
| | |
| | | private Integer deliveryStatus; |
| | | |
| | | /** |
| | | * å
¥åºç¶æï¼0-æªå
¥åºï¼1-å·²å
¥åº |
| | | * å
¥åºç¶æï¼0-æªå
¥åºï¼1-é¨åå
¥åºï¼2-å·²å
¥åº |
| | | */ |
| | | @ApiModelProperty("å
¥åºç¶æï¼0-æªå
¥åºï¼1-å·²å
¥åº") |
| | | @ApiModelProperty("å
¥åºç¶æï¼0-æªå
¥åºï¼1-é¨åå
¥åºï¼2-å·²å
¥åº") |
| | | private Integer stockStatus; |
| | | |
| | | @TableField(exist = false) |
| | |
| | | @ApiModelProperty("楼å±ç¼å·") |
| | | private String floorCode; |
| | | |
| | | /** |
| | | * 产åå
¥åºç¶æ 0-æªå
¥åºï¼1-å·²å
¥åº |
| | | */ |
| | | @ApiModelProperty("产åå
¥åºç¶æ") |
| | | private Integer productStockStatus; |
| | | |
| | | @TableField(exist = false) |
| | | @ApiModelProperty("éå®äº§åé¢å¤å å·¥") |
| | | private List<SalesLedgerProductProcess> salesProductProcessList; |
| | |
| | | |
| | | List<SalesLabelDto> salesLabel(Long salesLedgerId); |
| | | |
| | | void salesStock(SalesLedger salesLedger); |
| | | void salesStock(SalesProductStockDto dto); |
| | | } |
| | |
| | | import com.ruoyi.sales.service.ISalesLedgerProductProcessService; |
| | | import com.ruoyi.sales.service.ISalesLedgerService; |
| | | import com.ruoyi.stock.dto.StockInventoryDto; |
| | | import com.ruoyi.stock.mapper.StockInRecordMapper; |
| | | import com.ruoyi.stock.mapper.StockOutRecordMapper; |
| | | import com.ruoyi.stock.pojo.StockInRecord; |
| | | import com.ruoyi.stock.pojo.StockOutRecord; |
| | | import com.ruoyi.stock.service.StockInRecordService; |
| | | import com.ruoyi.stock.service.StockInventoryService; |
| | | import com.ruoyi.stock.service.StockOutRecordService; |
| | | import lombok.RequiredArgsConstructor; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.apache.commons.io.FilenameUtils; |
| | |
| | | private final ISalesLedgerProcessRouteService salesLedgerProcessRouteService; |
| | | |
| | | private final StockInventoryService stockInventoryService; |
| | | private final StockInRecordMapper stockInRecordMapper; |
| | | private final StockOutRecordMapper stockOutRecordMapper; |
| | | private final StockInRecordService stockInRecordService; |
| | | private final StockOutRecordService stockOutRecordService; |
| | | |
| | | @Autowired |
| | | private SysDeptMapper sysDeptMapper; |
| | |
| | | if (CollectionUtils.isNotEmpty(shippingInfos)) { |
| | | shippingInfoServiceImpl.delete(shippingInfos.stream().map(ShippingInfo::getId).collect(Collectors.toList())); |
| | | } |
| | | // å é¤å
³èçå
¥åº/åºåºè®°å½ï¼èµ°æå¡å±å é¤ï¼è§¦ååºåæ°éåéï¼ |
| | | List<Long> stockInRecordIds = stockInRecordMapper.selectList(new LambdaQueryWrapper<StockInRecord>() |
| | | .in(StockInRecord::getSalesLedgerId, idList) |
| | | .select(StockInRecord::getId)) |
| | | .stream() |
| | | .map(StockInRecord::getId) |
| | | .collect(Collectors.toList()); |
| | | if (CollectionUtils.isNotEmpty(stockInRecordIds)) { |
| | | stockInRecordService.batchDelete(stockInRecordIds); |
| | | } |
| | | List<Long> stockOutRecordIds = stockOutRecordMapper.selectList(new LambdaQueryWrapper<StockOutRecord>() |
| | | .in(StockOutRecord::getSalesLedgerId, idList) |
| | | .select(StockOutRecord::getId)) |
| | | .stream() |
| | | .map(StockOutRecord::getId) |
| | | .collect(Collectors.toList()); |
| | | if (CollectionUtils.isNotEmpty(stockOutRecordIds)) { |
| | | stockOutRecordService.batchDelete(stockOutRecordIds); |
| | | } |
| | | // å é¤é件表 |
| | | commonFileService.deleteByBusinessIds(idList, FileNameType.SALE.getValue()); |
| | | |
| | |
| | | if (!updateList.isEmpty()) { |
| | | for (SalesLedgerProduct product : updateList) { |
| | | product.setType(type.getCode()); |
| | | product.setProductStockStatus(0); |
| | | salesLedgerProductMapper.updateById(product); |
| | | // æ¸
空éå®äº§åç»å®çå å·¥ |
| | | salesLedgerProductProcessBindService.updateProductProcessBind(product.getSalesProductProcessList(), product.getId()); |
| | |
| | | salesLedgerProduct.setNoInvoiceNum(salesLedgerProduct.getQuantity()); |
| | | salesLedgerProduct.setNoInvoiceAmount(salesLedgerProduct.getTaxInclusiveTotalPrice()); |
| | | salesLedgerProduct.setPendingInvoiceTotal(salesLedgerProduct.getTaxInclusiveTotalPrice()); |
| | | salesLedgerProduct.setProductStockStatus(0); |
| | | salesLedgerProductMapper.insert(salesLedgerProduct); |
| | | // ç»å®äº§åé¢å¤å å·¥ |
| | | // æ¸
空éå®äº§åç»å®çå å·¥ |
| | |
| | | |
| | | @Override |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public void salesStock(SalesLedger salesLedger) { |
| | | if (salesLedger == null || salesLedger.getId() == null) { |
| | | public void salesStock(SalesProductStockDto dto) { |
| | | if (dto == null || dto.getSalesLedgerId() == null) { |
| | | throw new NullPointerException("å
¥åºå¤±è´¥,è¯·éæ©éè¦å
¥åºçéå®è®¢å"); |
| | | } |
| | | // æ¥è¯¢éå®è®¢åæ¯å¦åå¨ |
| | | SalesLedger ledger = baseMapper.selectById(salesLedger.getId()); |
| | | SalesLedger ledger = baseMapper.selectById(dto.getSalesLedgerId()); |
| | | if (ledger == null) { |
| | | throw new ServiceException("å
¥åºå¤±è´¥,éå®è®¢åä¸åå¨"); |
| | | } |
| | | if (ledger.getStockStatus() == null) { |
| | | throw new ServiceException("å
¥åºå¤±è´¥,éå®è®¢åå
¥åºç¶æå¼å¸¸"); |
| | | } |
| | | if (ledger.getStockStatus() == 1) { |
| | | if (ledger.getStockStatus() == 2) { |
| | | throw new ServiceException("å
¥åºå¤±è´¥,该éå®è®¢åå·²å
¥åº,请å¿éå¤å
¥åº"); |
| | | } |
| | | List<Long> products = dto.getSalesLedgerProducts(); |
| | | if (products == null || products.isEmpty()) { |
| | | throw new ServiceException("å
¥åºå¤±è´¥,å
¥åºäº§åä¸è½ä¸ºç©º"); |
| | | } |
| | | // æ¥è¯¢éå®è®¢åç产å |
| | | List<SalesLedgerProduct> salesLedgerProducts = salesLedgerProductMapper.selectList(Wrappers.<SalesLedgerProduct>lambdaQuery().eq(SalesLedgerProduct::getSalesLedgerId, ledger.getId())); |
| | | List<SalesLedgerProduct> salesLedgerProducts = salesLedgerProductMapper.selectList(Wrappers.<SalesLedgerProduct>lambdaQuery().in(SalesLedgerProduct::getId, products)); |
| | | if (salesLedgerProducts == null || salesLedgerProducts.isEmpty()) { |
| | | throw new ServiceException("å
¥åºå¤±è´¥,æªæ¥è¯¢å°è¯¥éå®è®¢åçéå®äº§å"); |
| | | } |
| | |
| | | if (product.getProductModelId() == null) { |
| | | continue; |
| | | } |
| | | StockInventoryDto dto = new StockInventoryDto(); |
| | | dto.setRecordId(product.getId()); |
| | | dto.setRecordType(StockInQualifiedRecordTypeEnum.SALE_STOCK_IN.getCode()); |
| | | dto.setQualitity(product.getQuantity()); |
| | | dto.setProductModelId(product.getProductModelId()); |
| | | stockInventoryService.addstockInventory(dto); |
| | | StockInventoryDto stockInventoryDto = new StockInventoryDto(); |
| | | stockInventoryDto.setRecordId(product.getId()); |
| | | stockInventoryDto.setRecordType(StockInQualifiedRecordTypeEnum.SALE_STOCK_IN.getCode()); |
| | | stockInventoryDto.setQualitity(product.getQuantity()); |
| | | stockInventoryDto.setProductModelId(product.getProductModelId()); |
| | | stockInventoryDto.setSalesLedgerId(ledger.getId()); |
| | | stockInventoryDto.setSalesLedgerProductId(product.getId()); |
| | | stockInventoryService.addstockInventory(stockInventoryDto); |
| | | } |
| | | // æ´æ°éå®è®¢åå
¥åºç¶æ |
| | | ledger.setStockStatus(1); |
| | | // æéå®è®¢å产åå
¥åºæ
嵿´æ°ä¸»åå
¥åºç¶æï¼1-é¨åå
¥åºï¼2-å·²å
¥åº |
| | | List<SalesLedgerProduct> ledgerAllProducts = salesLedgerProductMapper.selectList(Wrappers.<SalesLedgerProduct>lambdaQuery().eq(SalesLedgerProduct::getSalesLedgerId, ledger.getId())); |
| | | boolean hasStocked = CollectionUtils.isNotEmpty(ledgerAllProducts) && ledgerAllProducts.stream().anyMatch(item -> Objects.equals(item.getProductStockStatus(), 1)); |
| | | boolean allStocked = CollectionUtils.isNotEmpty(ledgerAllProducts) && ledgerAllProducts.stream().allMatch(item -> Objects.equals(item.getProductStockStatus(), 1)); |
| | | ledger.setStockStatus(allStocked ? 2 : (hasStocked ? 1 : 0)); |
| | | baseMapper.updateById(ledger); |
| | | } |
| | | } |
| | |
| | | import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; |
| | | import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | |
| | | import java.math.BigDecimal; |
| | | import java.util.HashMap; |
| | | import java.util.Map; |
| | | |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.apache.commons.collections4.CollectionUtils; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | |
| | | @Override |
| | | public IPage<ShippingInfoDto> listPage(Page page, ShippingInfo req) { |
| | | IPage<ShippingInfoDto> listPage = shippingInfoMapper.listPage(page, req); |
| | | listPage.getRecords().forEach(item ->{ |
| | | listPage.getRecords().forEach(item -> { |
| | | item.setCommonFileList(commonFileService.getFileListByBusinessId(item.getId(), FileNameType.SHIP.getValue())); |
| | | }); |
| | | return listPage; |
| | |
| | | throw new RuntimeException("åè´§ä¿¡æ¯ä¸åå¨"); |
| | | } |
| | | //æ£ååºå |
| | | if(!"å·²åè´§".equals(byId.getStatus())){ |
| | | if (!"å·²åè´§".equals(byId.getStatus())) { |
| | | SalesLedgerProduct salesLedgerProduct = salesLedgerProductMapper.selectById(byId.getSalesLedgerProductId()); |
| | | if (salesLedgerProduct != null) { |
| | | stockUtils.substractStock(salesLedgerProduct.getProductModelId(), salesLedgerProduct.getQuantity(), StockOutQualifiedRecordTypeEnum.SALE_SHIP_STOCK_OUT.getCode(), req.getId()); |
| | | stockUtils.substractStock(salesLedgerProduct.getSalesLedgerId(), salesLedgerProduct.getId(), salesLedgerProduct.getProductModelId(), salesLedgerProduct.getQuantity(), StockOutQualifiedRecordTypeEnum.SALE_SHIP_STOCK_OUT.getCode(), req.getId()); |
| | | } |
| | | } |
| | | byId.setExpressNumber(req.getExpressNumber()); |
| | |
| | | } |
| | | |
| | | // è¿ç§»æä»¶ |
| | | if(CollectionUtils.isNotEmpty(req.getTempFileIds())){ |
| | | if (CollectionUtils.isNotEmpty(req.getTempFileIds())) { |
| | | tempFileService.migrateTempFilesToFormal(req.getId(), req.getTempFileIds(), FileNameType.SHIP.getValue()); |
| | | } |
| | | return update ; |
| | | return update; |
| | | } |
| | | |
| | | |
| | |
| | | public boolean delete(List<Long> ids) { |
| | | List<ShippingInfo> shippingInfos = shippingInfoMapper.selectList(new LambdaQueryWrapper<ShippingInfo>() |
| | | .in(ShippingInfo::getId, ids)); |
| | | if(CollectionUtils.isEmpty(shippingInfos)) return false; |
| | | if (CollectionUtils.isEmpty(shippingInfos)) return false; |
| | | // å é¤éä»¶ |
| | | commonFileService.deleteByBusinessIds(ids, FileNameType.SHIP.getValue()); |
| | | // æ£å·²åè´§åºå |
| | | for (ShippingInfo shippingInfo : shippingInfos) { |
| | | if("å·²åè´§".equals(shippingInfo.getStatus())) { |
| | | if ("å·²åè´§".equals(shippingInfo.getStatus())) { |
| | | stockUtils.deleteStockOutRecord(shippingInfo.getId(), StockOutQualifiedRecordTypeEnum.SALE_SHIP_STOCK_OUT.getCode()); |
| | | } |
| | | } |
| | | // å é¤åè´§å®¡æ¹ |
| | | if(CollectionUtils.isNotEmpty(shippingInfos)){ |
| | | for (ShippingInfo shippingInfo : shippingInfos){ |
| | | if (CollectionUtils.isNotEmpty(shippingInfos)) { |
| | | for (ShippingInfo shippingInfo : shippingInfos) { |
| | | ApproveProcess one = approveProcessService.getOne(new LambdaQueryWrapper<ApproveProcess>() |
| | | .like(ApproveProcess::getApproveReason, shippingInfo.getShippingNo())); |
| | | if(one != null){ |
| | | if (one != null) { |
| | | approveProcessService.delByIds(Collections.singletonList(one.getId())); |
| | | } |
| | | } |
| | |
| | | |
| | | @Override |
| | | public List<SalesLedgerProductDto> getReturnManagementDtoById(Long shippingId) { |
| | | return shippingInfoMapper.getReturnManagementDtoById(shippingId ); |
| | | return shippingInfoMapper.getReturnManagementDtoById(shippingId); |
| | | |
| | | } |
| | | |
| | |
| | | private BigDecimal currentStock; |
| | | |
| | | private BigDecimal unLockedQuantity; |
| | | |
| | | private Long salesLedgerId; |
| | | |
| | | private Long salesLedgerProductId; |
| | | } |
| | |
| | | @ApiModelProperty(value = "ä¿®æ¹ç¨æ·") |
| | | @TableField(fill = FieldFill.INSERT_UPDATE) |
| | | private Integer updateUser; |
| | | |
| | | @ApiModelProperty("éå®è®¢åID") |
| | | private Long salesLedgerId; |
| | | |
| | | @ApiModelProperty("éå®è®¢å产åID") |
| | | private Long salesLedgerProductId; |
| | | } |
| | |
| | | |
| | | @ApiModelProperty(value = "ç±»å 0åæ ¼å
¥åº 1ä¸åæ ¼å
¥åº") |
| | | private String type; |
| | | |
| | | @ApiModelProperty("éå®è®¢åID") |
| | | private Long salesLedgerId; |
| | | |
| | | @ApiModelProperty("éå®è®¢å产åID") |
| | | private Long salesLedgerProductId; |
| | | } |
| | |
| | | |
| | | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | | import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; |
| | | import com.baomidou.mybatisplus.core.toolkit.Wrappers; |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
| | | import com.ruoyi.common.enums.StockOutQualifiedRecordTypeEnum; |
| | |
| | | import com.ruoyi.common.utils.OrderUtils; |
| | | import com.ruoyi.common.utils.bean.BeanUtils; |
| | | import com.ruoyi.common.utils.poi.ExcelUtil; |
| | | import com.ruoyi.sales.mapper.SalesLedgerMapper; |
| | | import com.ruoyi.sales.mapper.SalesLedgerProductMapper; |
| | | import com.ruoyi.sales.pojo.SalesLedger; |
| | | import com.ruoyi.sales.pojo.SalesLedgerProduct; |
| | | import com.ruoyi.stock.dto.StockInRecordDto; |
| | | import com.ruoyi.stock.dto.StockInventoryDto; |
| | | import com.ruoyi.stock.dto.StockUninventoryDto; |
| | |
| | | |
| | | import javax.servlet.http.HttpServletResponse; |
| | | import java.util.List; |
| | | import java.util.Objects; |
| | | |
| | | @Service |
| | | @AllArgsConstructor |
| | |
| | | private StockInRecordMapper stockInRecordMapper; |
| | | private StockInventoryMapper stockInventoryMapper; |
| | | private StockUninventoryMapper stockUninventoryMapper; |
| | | private SalesLedgerProductMapper salesLedgerProductMapper; |
| | | private SalesLedgerMapper salesLedgerMapper; |
| | | |
| | | @Override |
| | | public IPage<StockInRecordDto> listPage(Page page, StockInRecordDto stockInRecordDto) { |
| | |
| | | public int update(Long id, StockInRecordDto stockInRecordDto) { |
| | | // å¤æå¯¹è±¡æ¯å¦åå¨ |
| | | StockInRecord stockInRecord = stockInRecordMapper.selectById(id); |
| | | if (stockInRecord == null){ |
| | | if (stockInRecord == null) { |
| | | throw new BaseException("该å
¥åºè®°å½ä¸åå¨,æ æ³æ´æ°!!!"); |
| | | } |
| | | |
| | |
| | | public int batchDelete(List<Long> ids) { |
| | | for (Long id : ids) { |
| | | StockInRecord stockInRecord = stockInRecordMapper.selectById(id); |
| | | validateCanDeleteBySalesLedger(stockInRecord); |
| | | if (stockInRecord.getType().equals("0")) { |
| | | StockInventory stockInventory = stockInventoryMapper.selectOne(new LambdaQueryWrapper<StockInventory>().eq(StockInventory::getProductModelId, stockInRecord.getProductModelId())); |
| | | if (stockInventory == null) { |
| | | throw new BaseException("åºåè®°å½ä¸æ²¡æå¯¹åºç产å,æ æ³å é¤!!!"); |
| | | }else { |
| | | } else { |
| | | StockInventoryDto stockInRecordDto = new StockInventoryDto(); |
| | | stockInRecordDto.setProductModelId(stockInventory.getProductModelId()); |
| | | stockInRecordDto.setQualitity(stockInRecord.getStockInNum()); |
| | | stockInventoryMapper.updateSubtractStockInventory(stockInRecordDto); |
| | | int affectRows = stockInventoryMapper.updateSubtractStockInventory(stockInRecordDto); |
| | | if (affectRows <= 0) { |
| | | throw new BaseException("åºååé失败,å½ååºåä¸è¶³,æ æ³å é¤è¯¥å
¥åºè®°å½"); |
| | | } |
| | | // éå®å
¥åºè®°å½å 餿¶ï¼åééå®äº§ååéå®è®¢åå
¥åºç¶æ |
| | | rollbackSalesStockStatus(stockInRecord); |
| | | } |
| | | }else if (stockInRecord.getType().equals("1")) { |
| | | } else if (stockInRecord.getType().equals("1")) { |
| | | StockUninventory stockUninventory = stockUninventoryMapper.selectOne(new LambdaQueryWrapper<StockUninventory>().eq(StockUninventory::getProductModelId, stockInRecord.getProductModelId())); |
| | | if (stockUninventory == null) { |
| | | throw new BaseException("åºåè®°å½ä¸æ²¡æå¯¹åºç产å,æ æ³å é¤!!!"); |
| | | }else { |
| | | } else { |
| | | StockUninventoryDto stockUninventoryDto = new StockUninventoryDto(); |
| | | stockUninventoryDto.setProductModelId(stockUninventory.getProductModelId()); |
| | | stockUninventoryDto.setQualitity(stockInRecord.getStockInNum()); |
| | | stockUninventoryMapper.updateSubtractStockUnInventory(stockUninventoryDto); |
| | | int affectRows = stockUninventoryMapper.updateSubtractStockUnInventory(stockUninventoryDto); |
| | | if (affectRows <= 0) { |
| | | throw new BaseException("ä¸åæ ¼åºååé失败,å½ååºåä¸è¶³,æ æ³å é¤è¯¥å
¥åºè®°å½"); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | return stockInRecordMapper.deleteBatchIds(ids); |
| | | } |
| | | |
| | | private void validateCanDeleteBySalesLedger(StockInRecord stockInRecord) { |
| | | if (stockInRecord == null || stockInRecord.getSalesLedgerId() == null) { |
| | | return; |
| | | } |
| | | SalesLedger salesLedger = salesLedgerMapper.selectById(stockInRecord.getSalesLedgerId()); |
| | | if (salesLedger != null && Objects.equals(salesLedger.getDeliveryStatus(), 5)) { |
| | | throw new BaseException("éå®è®¢åå·²åè´§,对åºå
¥åºè®°å½ä¸å
许å é¤"); |
| | | } |
| | | } |
| | | |
| | | private void rollbackSalesStockStatus(StockInRecord stockInRecord) { |
| | | if (stockInRecord == null || stockInRecord.getSalesLedgerProductId() == null) { |
| | | return; |
| | | } |
| | | SalesLedgerProduct salesLedgerProduct = salesLedgerProductMapper.selectById(stockInRecord.getSalesLedgerProductId()); |
| | | if (salesLedgerProduct == null) { |
| | | return; |
| | | } |
| | | salesLedgerProduct.setProductStockStatus(0); |
| | | salesLedgerProductMapper.updateById(salesLedgerProduct); |
| | | |
| | | Long salesLedgerId = stockInRecord.getSalesLedgerId() != null ? stockInRecord.getSalesLedgerId() : salesLedgerProduct.getSalesLedgerId(); |
| | | if (salesLedgerId == null) { |
| | | return; |
| | | } |
| | | SalesLedger salesLedger = salesLedgerMapper.selectById(salesLedgerId); |
| | | if (salesLedger == null) { |
| | | return; |
| | | } |
| | | List<SalesLedgerProduct> ledgerProducts = salesLedgerProductMapper.selectList(Wrappers.<SalesLedgerProduct>lambdaQuery().eq(SalesLedgerProduct::getSalesLedgerId, salesLedgerId)); |
| | | boolean hasStocked = CollectionUtils.isNotEmpty(ledgerProducts) |
| | | && ledgerProducts.stream().anyMatch(item -> Objects.equals(item.getProductStockStatus(), 1)); |
| | | boolean allStocked = CollectionUtils.isNotEmpty(ledgerProducts) |
| | | && ledgerProducts.stream().allMatch(item -> Objects.equals(item.getProductStockStatus(), 1)); |
| | | salesLedger.setStockStatus(allStocked ? 2 : (hasStocked ? 1 : 0)); |
| | | salesLedgerMapper.updateById(salesLedger); |
| | | } |
| | | |
| | | @Override |
| | |
| | | for (StockInRecordExportData stockInRecordExportData : list) { |
| | | if (stockInRecordExportData.getType().equals("0")) { |
| | | stockInRecordExportData.setRecordType(EnumUtil.fromCode(StockOutQualifiedRecordTypeEnum.class, Integer.parseInt(stockInRecordExportData.getRecordType())).getValue()); |
| | | }else { |
| | | } else { |
| | | stockInRecordExportData.setRecordType(EnumUtil.fromCode(StockInUnQualifiedRecordTypeEnum.class, Integer.parseInt(stockInRecordExportData.getRecordType())).getValue()); |
| | | } |
| | | } |
| | | ExcelUtil<StockInRecordExportData> util = new ExcelUtil<>(StockInRecordExportData.class); |
| | | util.exportExcel(response,list, "å
¥åºè®°å½ä¿¡æ¯"); |
| | | util.exportExcel(response, list, "å
¥åºè®°å½ä¿¡æ¯"); |
| | | } |
| | | } |
| | |
| | | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
| | | import com.ruoyi.common.enums.StockInQualifiedRecordTypeEnum; |
| | | import com.ruoyi.common.enums.StockOutQualifiedRecordTypeEnum; |
| | | import com.ruoyi.common.exception.ServiceException; |
| | | import com.ruoyi.common.utils.poi.ExcelUtil; |
| | | import com.ruoyi.framework.web.domain.R; |
| | | import com.ruoyi.sales.mapper.SalesLedgerProductMapper; |
| | |
| | | @AllArgsConstructor |
| | | public class StockInventoryServiceImpl extends ServiceImpl<StockInventoryMapper, StockInventory> implements StockInventoryService { |
| | | |
| | | private StockInventoryMapper stockInventoryMapper; |
| | | private StockInventoryMapper stockInventoryMapper; |
| | | private StockInRecordService stockInRecordService; |
| | | private StockOutRecordService stockOutRecordService; |
| | | private SalesLedgerProductMapper salesLedgerProductMapper; |
| | | |
| | | @Override |
| | | public IPage<StockInventoryDto> pagestockInventory(Page page, StockInventoryDto stockInventoryDto) { |
| | | return stockInventoryMapper.pagestockInventory(page, stockInventoryDto); |
| | |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public Boolean addstockInventory(StockInventoryDto stockInventoryDto) { |
| | | //æ°å¢å
¥åºè®°å½åæ·»å åºå |
| | | // æ´æ°äº§åå
¥åºç¶æ |
| | | SalesLedgerProduct salesLedgerProduct = salesLedgerProductMapper.selectById(stockInventoryDto.getSalesLedgerProductId()); |
| | | if (salesLedgerProduct == null) { |
| | | throw new ServiceException("å
¥åºå¤±è´¥,éå®äº§åä¸åå¨"); |
| | | } |
| | | salesLedgerProduct.setProductStockStatus(1); |
| | | salesLedgerProductMapper.updateById(salesLedgerProduct); |
| | | |
| | | StockInRecordDto stockInRecordDto = new StockInRecordDto(); |
| | | stockInRecordDto.setRecordId(stockInventoryDto.getRecordId()); |
| | | stockInRecordDto.setRecordType(stockInventoryDto.getRecordType()); |
| | | stockInRecordDto.setStockInNum(stockInventoryDto.getQualitity()); |
| | | stockInRecordDto.setProductModelId(stockInventoryDto.getProductModelId()); |
| | | stockInRecordDto.setType("0"); |
| | | stockInRecordDto.setSalesLedgerId(stockInventoryDto.getSalesLedgerId()); |
| | | stockInRecordDto.setSalesLedgerProductId(stockInventoryDto.getSalesLedgerProductId()); |
| | | stockInRecordService.add(stockInRecordDto); |
| | | //åè¿è¡æ°å¢åºåæ°éåºå |
| | | //å
æ¥è¯¢åºå表ä¸çäº§åæ¯å¦åå¨ï¼ä¸å卿°å¢ï¼å卿´æ° |
| | |
| | | newStockInventory.setLockedQuantity(stockInventoryDto.getLockedQuantity()); |
| | | newStockInventory.setWarnNum(stockInventoryDto.getWarnNum()); |
| | | stockInventoryMapper.insert(newStockInventory); |
| | | }else { |
| | | stockInventoryMapper.updateAddStockInventory(stockInventoryDto); |
| | | } else { |
| | | stockInventoryMapper.updateAddStockInventory(stockInventoryDto); |
| | | } |
| | | return true; |
| | | } |
| | |
| | | stockOutRecordDto.setStockOutNum(stockInventoryDto.getQualitity()); |
| | | stockOutRecordDto.setProductModelId(stockInventoryDto.getProductModelId()); |
| | | stockOutRecordDto.setType("0"); |
| | | stockOutRecordDto.setSalesLedgerId(stockInventoryDto.getSalesLedgerId()); |
| | | stockOutRecordDto.setSalesLedgerProductId(stockInventoryDto.getSalesLedgerProductId()); |
| | | stockOutRecordService.add(stockOutRecordDto); |
| | | StockInventory oldStockInventory = stockInventoryMapper.selectOne(new QueryWrapper<StockInventory>().lambda().eq(StockInventory::getProductModelId, stockInventoryDto.getProductModelId())); |
| | | if (ObjectUtils.isEmpty(oldStockInventory)) { |
| | |
| | | stockInventoryDto.setQualitity(dto.getQualitity()); |
| | | stockInventoryDto.setRemark(dto.getRemark()); |
| | | stockInventoryDto.setWarnNum(dto.getWarnNum()); |
| | | if (ObjectUtils.isNotEmpty(dto.getLockedQuantity())&&dto.getLockedQuantity().compareTo(dto.getQualitity())>0) { |
| | | if (ObjectUtils.isNotEmpty(dto.getLockedQuantity()) && dto.getLockedQuantity().compareTo(dto.getQualitity()) > 0) { |
| | | throw new RuntimeException("å»ç»æ°éä¸è½è¶
è¿æ¬æ¬¡å¯¼å
¥çåºåæ°é"); |
| | | } |
| | | stockInventoryDto.setLockedQuantity(dto.getLockedQuantity()); |
| | |
| | | |
| | | List<StockInventoryExportData> list = stockInventoryMapper.listStockInventoryExportData(stockInventoryDto); |
| | | ExcelUtil<StockInventoryExportData> util = new ExcelUtil<>(StockInventoryExportData.class); |
| | | util.exportExcel(response,list, "åºåä¿¡æ¯"); |
| | | util.exportExcel(response, list, "åºåä¿¡æ¯"); |
| | | } |
| | | |
| | | @Override |
| | | public IPage<StockInRecordDto> stockInventoryPage(StockInventoryDto stockInventoryDto, Page page) { |
| | | return stockInventoryMapper.stockInventoryPage(stockInventoryDto,page); |
| | | return stockInventoryMapper.stockInventoryPage(stockInventoryDto, page); |
| | | } |
| | | |
| | | @Override |
| | | public IPage<StockInventoryDto> stockInAndOutRecord(StockInventoryDto stockInventoryDto, Page page) { |
| | | return stockInventoryMapper.stockInAndOutRecord(stockInventoryDto,page); |
| | | return stockInventoryMapper.stockInAndOutRecord(stockInventoryDto, page); |
| | | } |
| | | |
| | | @Override |
| | | public Boolean frozenStock(StockInventoryDto stockInventoryDto) { |
| | | StockInventory stockInventory = stockInventoryMapper.selectById(stockInventoryDto.getId()); |
| | | if (stockInventory.getQualitity().compareTo(stockInventoryDto.getLockedQuantity())<0) { |
| | | if (stockInventory.getQualitity().compareTo(stockInventoryDto.getLockedQuantity()) < 0) { |
| | | throw new RuntimeException("å»ç»æ°éä¸è½è¶
è¿åºåæ°é"); |
| | | } |
| | | if (ObjectUtils.isEmpty(stockInventory.getLockedQuantity())) { |
| | | stockInventory.setLockedQuantity(stockInventoryDto.getLockedQuantity()); |
| | | }else { |
| | | } else { |
| | | stockInventory.setLockedQuantity(stockInventory.getLockedQuantity().add(stockInventoryDto.getLockedQuantity())); |
| | | } |
| | | return this.updateById(stockInventory); |
| | |
| | | @Override |
| | | public Boolean thawStock(StockInventoryDto stockInventoryDto) { |
| | | StockInventory stockInventory = stockInventoryMapper.selectById(stockInventoryDto.getId()); |
| | | if (stockInventory.getLockedQuantity().compareTo(stockInventoryDto.getLockedQuantity())<0) { |
| | | if (stockInventory.getLockedQuantity().compareTo(stockInventoryDto.getLockedQuantity()) < 0) { |
| | | throw new RuntimeException("è§£å»æ°éä¸è½è¶
è¿å»ç»æ°é"); |
| | | } |
| | | stockInventory.setLockedQuantity(stockInventory.getLockedQuantity().subtract(stockInventoryDto.getLockedQuantity())); |
| | |
| | | import com.ruoyi.common.utils.OrderUtils; |
| | | import com.ruoyi.common.utils.bean.BeanUtils; |
| | | import com.ruoyi.common.utils.poi.ExcelUtil; |
| | | import com.ruoyi.sales.mapper.SalesLedgerMapper; |
| | | import com.ruoyi.sales.pojo.SalesLedger; |
| | | import com.ruoyi.stock.dto.StockInventoryDto; |
| | | import com.ruoyi.stock.dto.StockOutRecordDto; |
| | | import com.ruoyi.stock.dto.StockUninventoryDto; |
| | |
| | | |
| | | import javax.servlet.http.HttpServletResponse; |
| | | import java.util.List; |
| | | import java.util.Objects; |
| | | |
| | | /** |
| | | * <p> |
| | |
| | | private StockOutRecordMapper stockOutRecordMapper; |
| | | private StockInventoryMapper stockInventoryMapper; |
| | | private StockUninventoryMapper stockUninventoryMapper; |
| | | private SalesLedgerMapper salesLedgerMapper; |
| | | |
| | | @Override |
| | | public IPage<StockOutRecordDto> listPage(Page page, StockOutRecordDto stockOutRecordDto) { |
| | |
| | | public int batchDelete(List<Long> ids) { |
| | | for (Long id : ids) { |
| | | StockOutRecord stockOutRecord = stockOutRecordMapper.selectById(id); |
| | | validateCanDeleteBySalesLedger(stockOutRecord); |
| | | if (stockOutRecord.getType().equals("0")) { |
| | | StockInventory stockInventory = stockInventoryMapper.selectOne(new LambdaQueryWrapper<StockInventory>().eq(StockInventory::getProductModelId, stockOutRecord.getProductModelId())); |
| | | if (stockInventory == null) { |
| | |
| | | return stockOutRecordMapper.deleteBatchIds(ids); |
| | | } |
| | | |
| | | private void validateCanDeleteBySalesLedger(StockOutRecord stockOutRecord) { |
| | | if (stockOutRecord == null || stockOutRecord.getSalesLedgerId() == null) { |
| | | return; |
| | | } |
| | | SalesLedger salesLedger = salesLedgerMapper.selectById(stockOutRecord.getSalesLedgerId()); |
| | | if (salesLedger != null && Objects.equals(salesLedger.getDeliveryStatus(), 5)) { |
| | | throw new BaseException("éå®è®¢åå·²åè´§,对åºåºåºè®°å½ä¸å
许å é¤"); |
| | | } |
| | | } |
| | | |
| | | @Override |
| | | public void exportStockOutRecord(HttpServletResponse response, StockOutRecordDto stockOutRecordDto) { |
| | | List<StockOutRecordExportData> list = stockOutRecordMapper.listStockOutRecordExportData(stockOutRecordDto); |
| | |
| | | AND T1.stock_status = #{salesLedgerDto.stockStatus} |
| | | </if> |
| | | </where> |
| | | ORDER BY T1.entry_date DESC |
| | | ORDER BY T1.entry_date DESC,T1.id DESC |
| | | </select> |
| | | |
| | | <select id="selectIncomeStats" resultType="com.ruoyi.home.dto.IncomeExpenseAnalysisDto"> |
| | |
| | | </set> |
| | | where product_model_id = #{ew.productModelId} and qualitity >= #{ew.qualitity} |
| | | </update> |
| | | |
| | | <select id="pagestockInventory" resultType="com.ruoyi.stock.dto.StockInventoryDto"> |
| | | select si.id, |
| | | si.qualitity, |
| | |
| | | pm.unit, |
| | | p.product_name |
| | | from stock_inventory si |
| | | left join product_model pm on si. = pm.id |
| | | left join product_model pm on si.product_model_id = pm.id |
| | | left join product p on pm.product_id = p.id |
| | | where 1 = 1 |
| | | <if test="ew.productName != null and ew.productName !=''"> |
| | |
| | | and si.product_model_id = #{ew.productModelId} |
| | | </if> |
| | | </select> |
| | | |
| | | <select id="listStockInventoryExportData" resultType="com.ruoyi.stock.execl.StockInventoryExportData"> |
| | | select si.qualitity, |
| | | pm.model, |
| | |
| | | <?xml version="1.0" encoding="UTF-8" ?>
|
| | | <!DOCTYPE configuration
|
| | | PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
|
| | | "http://mybatis.org/dtd/mybatis-3-config.dtd">
|
| | | PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
|
| | | "http://mybatis.org/dtd/mybatis-3-config.dtd">
|
| | | <configuration>
|
| | | <!-- å
¨å±åæ° -->
|
| | | <settings>
|
| | | <!-- 使å
¨å±çæ å°å¨å¯ç¨æç¦ç¨ç¼å -->
|
| | | <setting name="cacheEnabled" value="true" />
|
| | | <setting name="cacheEnabled" value="true"/>
|
| | | <!-- å
许JDBC æ¯æèªå¨çæä¸»é® -->
|
| | | <setting name="useGeneratedKeys" value="true" />
|
| | | <setting name="useGeneratedKeys" value="true"/>
|
| | | <!-- é
ç½®é»è®¤çæ§è¡å¨.SIMPLEå°±æ¯æ®éæ§è¡å¨;REUSEæ§è¡å¨ä¼éç¨é¢å¤çè¯å¥(prepared statements);BATCHæ§è¡å¨å°éç¨è¯å¥å¹¶æ§è¡æ¹éæ´æ° -->
|
| | | <setting name="defaultExecutorType" value="SIMPLE" />
|
| | | <!-- æå® MyBatis æç¨æ¥å¿çå
·ä½å®ç° -->
|
| | | <setting name="logImpl" value="SLF4J" />
|
| | | <!-- <setting name="logImpl" value="org.apache.ibatis.logging.stdout.StdOutImpl" />-->
|
| | | <setting name="defaultExecutorType" value="SIMPLE"/>
|
| | | <!-- æå® MyBatis æç¨æ¥å¿çå
·ä½å®ç° -->
|
| | | <!-- <setting name="logImpl" value="SLF4J" />-->
|
| | | <setting name="logImpl" value="org.apache.ibatis.logging.stdout.StdOutImpl"/>
|
| | | <!-- 使ç¨é©¼å³°å½åæ³è½¬æ¢å段 -->
|
| | | <!-- <setting name="mapUnderscoreToCamelCase" value="true"/> -->
|
| | | </settings>
|
| | | |
| | | <!-- <setting name="mapUnderscoreToCamelCase" value="true"/> -->
|
| | | </settings>
|
| | |
|
| | | </configuration>
|