diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/StoreProductStorageDetailController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/StoreProductStorageDetailController.java index 9b1460021..e5de27008 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/StoreProductStorageDetailController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/StoreProductStorageDetailController.java @@ -41,8 +41,8 @@ public class StoreProductStorageDetailController extends XktBaseController { final IStoreProductStorageDetailService storageDetailService; @PreAuthorize("@ss.hasAnyRoles('admin,general_admin,store')||@ss.hasSupplierSubRole()") - @ApiOperation(value = "打印入库单", httpMethod = "POST", response = R.class) - @Log(title = "打印入库单", businessType = BusinessType.EXPORT) + @ApiOperation(value = "导出入库单", httpMethod = "POST", response = R.class) + @Log(title = "导出入库单", businessType = BusinessType.EXPORT) @PostMapping("/export") public void export(HttpServletResponse response, @Validated @RequestBody StoreStorageExportVO exportVO) throws UnsupportedEncodingException { List downloadList = storageDetailService.export(BeanUtil.toBean(exportVO, StoreStorageExportDTO.class)); diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/vo/storeProdStorage/StoreProdStoragePageVO.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/vo/storeProdStorage/StoreProdStoragePageVO.java index e8eb52cd3..7f13df09b 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/vo/storeProdStorage/StoreProdStoragePageVO.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/vo/storeProdStorage/StoreProdStoragePageVO.java @@ -25,6 +25,8 @@ public class StoreProdStoragePageVO extends BasePageVO { private Long storeId; @ApiModelProperty(value = "商品货号") private String prodArtNum; + @ApiModelProperty(value = "档口工厂ID") + private Long storeFactoryId; @ApiModelProperty(value = "入库类型") private Integer storageType; @ApiModelProperty(value = "销售开始时间") diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/vo/storeProdStorage/StoreStorageExportVO.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/vo/storeProdStorage/StoreStorageExportVO.java index 8fd4ba24f..4622a82ee 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/vo/storeProdStorage/StoreStorageExportVO.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/vo/storeProdStorage/StoreStorageExportVO.java @@ -21,6 +21,12 @@ public class StoreStorageExportVO { @NotNull(message = "storeId不能为空!") @ApiModelProperty(value = "storeId", required = true) private Long storeId; + @ApiModelProperty(value = "货号") + private String prodArtNum; + @ApiModelProperty(value = "入库类型 1 PROD_STORAGE 其它入库 2 OTHER_STORAGE 维修入库 3 REPAIR_STORAGE") + private Integer storageType; + @ApiModelProperty(value = "工厂名称") + private String facName; @ApiModelProperty(value = "storeProdStorageId") private List storeProdStorageIdList; @ApiModelProperty(value = "导出开始时间") diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/vo/storeProductStorageDemandDeduct/StoreProdStorageDemandDeductVO.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/vo/storeProductStorageDemandDeduct/StoreProdStorageDemandDeductVO.java index 1413dd15c..d8bd3e80d 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/vo/storeProductStorageDemandDeduct/StoreProdStorageDemandDeductVO.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/vo/storeProductStorageDemandDeduct/StoreProdStorageDemandDeductVO.java @@ -30,6 +30,8 @@ public class StoreProdStorageDemandDeductVO { private Date createTime; @ApiModelProperty(name = "入库总数量") private Integer quantity; + @ApiModelProperty(value = "工厂名称") + private String facName; @ApiModelProperty(name = "生产成本金额") private BigDecimal produceAmount; @ApiModelProperty(name = "抵扣明细列表") diff --git a/xkt/src/main/java/com/ruoyi/xkt/dto/storeProdStorage/StoreProdStoragePageDTO.java b/xkt/src/main/java/com/ruoyi/xkt/dto/storeProdStorage/StoreProdStoragePageDTO.java index 73bd3a2e7..beba66de8 100644 --- a/xkt/src/main/java/com/ruoyi/xkt/dto/storeProdStorage/StoreProdStoragePageDTO.java +++ b/xkt/src/main/java/com/ruoyi/xkt/dto/storeProdStorage/StoreProdStoragePageDTO.java @@ -23,6 +23,8 @@ public class StoreProdStoragePageDTO extends BasePageDTO { private Long storeId; @ApiModelProperty(value = "商品货号") private String prodArtNum; + @ApiModelProperty(value = "档口工厂ID") + private Long storeFactoryId; @ApiModelProperty(value = "入库类型") private Integer storageType; @ApiModelProperty(value = "销售开始时间") diff --git a/xkt/src/main/java/com/ruoyi/xkt/dto/storeProdStorage/StoreProdStoragePageResDTO.java b/xkt/src/main/java/com/ruoyi/xkt/dto/storeProdStorage/StoreProdStoragePageResDTO.java index 1757f0a9b..b6cbffe8c 100644 --- a/xkt/src/main/java/com/ruoyi/xkt/dto/storeProdStorage/StoreProdStoragePageResDTO.java +++ b/xkt/src/main/java/com/ruoyi/xkt/dto/storeProdStorage/StoreProdStoragePageResDTO.java @@ -27,6 +27,8 @@ public class StoreProdStoragePageResDTO { private Integer storageType; @ApiModelProperty(value = "数量") private Integer quantity; + @ApiModelProperty(value = "档口工厂名称") + private String facName; @ApiModelProperty(value = "生产成本金额") private BigDecimal produceAmount; @ApiModelProperty(value = "操作人名称") diff --git a/xkt/src/main/java/com/ruoyi/xkt/dto/storeProdStorage/StoreStorageDetailDownloadDTO.java b/xkt/src/main/java/com/ruoyi/xkt/dto/storeProdStorage/StoreStorageDetailDownloadDTO.java index 6c3c8e215..9e4800dab 100644 --- a/xkt/src/main/java/com/ruoyi/xkt/dto/storeProdStorage/StoreStorageDetailDownloadDTO.java +++ b/xkt/src/main/java/com/ruoyi/xkt/dto/storeProdStorage/StoreStorageDetailDownloadDTO.java @@ -21,12 +21,14 @@ public class StoreStorageDetailDownloadDTO { private Integer orderNum; @Excel(name = "单据编号", needMerge = true) private String code; + @Excel(name = "工厂名称", needMerge = true) + private String facName; + @Excel(name = "入库类型", readConverterExp = "1=生产入库,2=其它入库,3=维修入库", needMerge = true) + private Integer storageType; @Excel(name = "出库日期", width = 30, dateFormat = "yyyy-MM-dd", needMerge = true) private Date createTime; @Excel(name = "总生产成本", needMerge = true) private BigDecimal produceAmount; - @Excel(name = "结款状态", readConverterExp = "1=生产入库,2=其它入库,3=维修入库", needMerge = true) - private Integer storageType; @Excel(name = "货号", needMerge = true) private String prodArtNum; @Excel(name = "颜色", needMerge = true) diff --git a/xkt/src/main/java/com/ruoyi/xkt/dto/storeProdStorage/StoreStorageExportDTO.java b/xkt/src/main/java/com/ruoyi/xkt/dto/storeProdStorage/StoreStorageExportDTO.java index 59e8a34e8..18a565adf 100644 --- a/xkt/src/main/java/com/ruoyi/xkt/dto/storeProdStorage/StoreStorageExportDTO.java +++ b/xkt/src/main/java/com/ruoyi/xkt/dto/storeProdStorage/StoreStorageExportDTO.java @@ -19,6 +19,12 @@ public class StoreStorageExportDTO { @ApiModelProperty(value = "storeId") private Long storeId; + @ApiModelProperty(value = "货号") + private String prodArtNum; + @ApiModelProperty(value = "入库类型 1 PROD_STORAGE 其它入库 2 OTHER_STORAGE 维修入库 3 REPAIR_STORAGE") + private Integer storageType; + @ApiModelProperty(value = "工厂名称") + private String facName; @ApiModelProperty(value = "storeProdStorageId") private List storeProdStorageIdList; @ApiModelProperty(value = "导出开始时间") diff --git a/xkt/src/main/java/com/ruoyi/xkt/dto/storeProductStorageDemandDeduct/StoreProdStorageDemandDeductDTO.java b/xkt/src/main/java/com/ruoyi/xkt/dto/storeProductStorageDemandDeduct/StoreProdStorageDemandDeductDTO.java index e0049e955..b668aedf6 100644 --- a/xkt/src/main/java/com/ruoyi/xkt/dto/storeProductStorageDemandDeduct/StoreProdStorageDemandDeductDTO.java +++ b/xkt/src/main/java/com/ruoyi/xkt/dto/storeProductStorageDemandDeduct/StoreProdStorageDemandDeductDTO.java @@ -26,6 +26,8 @@ public class StoreProdStorageDemandDeductDTO { private String storageCode; @ApiModelProperty(name = "入库类型 1 PROD_STORAGE 其它入库 2 OTHER_STORAGE 维修入库 3 REPAIR_STORAGE") private Integer storageType; + @ApiModelProperty(value = "工厂名称") + private String facName; @ApiModelProperty(value = "创建时间") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private Date createTime; diff --git a/xkt/src/main/java/com/ruoyi/xkt/mapper/StoreProductStorageMapper.java b/xkt/src/main/java/com/ruoyi/xkt/mapper/StoreProductStorageMapper.java index e00b4de11..5563da5f8 100644 --- a/xkt/src/main/java/com/ruoyi/xkt/mapper/StoreProductStorageMapper.java +++ b/xkt/src/main/java/com/ruoyi/xkt/mapper/StoreProductStorageMapper.java @@ -14,58 +14,12 @@ import java.util.List; * @date 2025-03-26 */ public interface StoreProductStorageMapper extends BaseMapper { - /** - * 查询档口商品入库 - * - * @param id 档口商品入库主键 - * @return 档口商品入库 - */ - public StoreProductStorage selectStoreProductStorageByStoreProdStorId(Long id); - - /** - * 查询档口商品入库列表 - * - * @param storeProductStorage 档口商品入库 - * @return 档口商品入库集合 - */ - public List selectStoreProductStorageList(StoreProductStorage storeProductStorage); - - /** - * 新增档口商品入库 - * - * @param storeProductStorage 档口商品入库 - * @return 结果 - */ - public int insertStoreProductStorage(StoreProductStorage storeProductStorage); - - /** - * 修改档口商品入库 - * - * @param storeProductStorage 档口商品入库 - * @return 结果 - */ - public int updateStoreProductStorage(StoreProductStorage storeProductStorage); - - /** - * 删除档口商品入库 - * - * @param id 档口商品入库主键 - * @return 结果 - */ - public int deleteStoreProductStorageByStoreProdStorId(Long id); - - /** - * 批量删除档口商品入库 - * - * @param storeProdStorIds 需要删除的数据主键集合 - * @return 结果 - */ - public int deleteStoreProductStorageByStoreProdStorIds(Long[] storeProdStorIds); /** * 查询出库单分页 + * * @param storagePageDTO 查询入参 - * @return List + * @return List */ List selectStoragePage(StoreProdStoragePageDTO storagePageDTO); diff --git a/xkt/src/main/java/com/ruoyi/xkt/service/impl/StoreProductStorageDemandDeducteServiceImpl.java b/xkt/src/main/java/com/ruoyi/xkt/service/impl/StoreProductStorageDemandDeducteServiceImpl.java index 9ac28e073..a3cd7af15 100644 --- a/xkt/src/main/java/com/ruoyi/xkt/service/impl/StoreProductStorageDemandDeducteServiceImpl.java +++ b/xkt/src/main/java/com/ruoyi/xkt/service/impl/StoreProductStorageDemandDeducteServiceImpl.java @@ -6,10 +6,12 @@ import com.ruoyi.common.constant.Constants; import com.ruoyi.common.constant.HttpStatus; import com.ruoyi.common.exception.ServiceException; import com.ruoyi.common.utils.SecurityUtils; +import com.ruoyi.xkt.domain.StoreFactory; import com.ruoyi.xkt.domain.StoreProductStorage; import com.ruoyi.xkt.domain.StoreProductStorageDemandDeduct; import com.ruoyi.xkt.domain.StoreProductStorageDetail; import com.ruoyi.xkt.dto.storeProductStorageDemandDeduct.StoreProdStorageDemandDeductDTO; +import com.ruoyi.xkt.mapper.StoreFactoryMapper; import com.ruoyi.xkt.mapper.StoreProductStorageDemandDeductMapper; import com.ruoyi.xkt.mapper.StoreProductStorageDetailMapper; import com.ruoyi.xkt.mapper.StoreProductStorageMapper; @@ -38,6 +40,7 @@ public class StoreProductStorageDemandDeducteServiceImpl implements IStoreProduc final StoreProductStorageMapper prodStorageMapper; final StoreProductStorageDetailMapper productStorageDetailMapper; final StoreProductStorageDemandDeductMapper prodStorageDemandDeductMapper; + final StoreFactoryMapper storeFacMapper; /** @@ -59,11 +62,14 @@ public class StoreProductStorageDemandDeducteServiceImpl implements IStoreProduc .eq(StoreProductStorage::getCode, storageCode).eq(StoreProductStorage::getStoreId, storeId) .eq(StoreProductStorage::getDelFlag, Constants.UNDELETED))) .orElseThrow(() -> new ServiceException("档口商品入库不存在!", HttpStatus.ERROR)); + // 获取仓库 + StoreFactory storeFac = this.storeFacMapper.selectById(storage.getStoreFactoryId()); List storageDetailList = this.productStorageDetailMapper.selectList(new LambdaQueryWrapper() .eq(StoreProductStorageDetail::getStoreProdStorId, storage.getId()).eq(StoreProductStorageDetail::getDelFlag, Constants.UNDELETED)); List demandDeductList = this.prodStorageDemandDeductMapper.selectList(new LambdaQueryWrapper() .eq(StoreProductStorageDemandDeduct::getStorageCode, storageCode).eq(StoreProductStorageDemandDeduct::getDelFlag, Constants.UNDELETED)); - StoreProdStorageDemandDeductDTO dto = BeanUtil.toBean(storage, StoreProdStorageDemandDeductDTO.class).setStorageCode(storageCode); + StoreProdStorageDemandDeductDTO dto = BeanUtil.toBean(storage, StoreProdStorageDemandDeductDTO.class).setStorageCode(storageCode) + .setFacName(ObjectUtils.isNotEmpty(storeFac) ? storeFac.getFacName() : ""); if (CollectionUtils.isEmpty(demandDeductList)) { return dto; } diff --git a/xkt/src/main/resources/mapper/StoreProductStorageDetailMapper.xml b/xkt/src/main/resources/mapper/StoreProductStorageDetailMapper.xml index e239990d0..b7e0e2da6 100644 --- a/xkt/src/main/resources/mapper/StoreProductStorageDetailMapper.xml +++ b/xkt/src/main/resources/mapper/StoreProductStorageDetailMapper.xml @@ -8,6 +8,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" SELECT DENSE_RANK() OVER (ORDER BY sps.code, sps.create_time DESC) AS orderNum, sps.`code`, + sf.fac_name, sps.create_time, sps.quantity, sps.produce_amount, @@ -37,19 +38,31 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" COALESCE(spsd.size_42, 0) + COALESCE(spsd.size_43, 0) AS totalQuantity, sps.operator_name FROM - store_product_storage_detail spsd JOIN store_product_storage sps ON spsd.store_prod_stor_id = sps.id + store_product_storage_detail spsd + JOIN store_product_storage sps ON spsd.store_prod_stor_id = sps.id + JOIN store_factory sf ON sps.store_factory_id = sf.id WHERE spsd.del_flag = 0 AND sps.id IN #{item} + + AND spsd.prod_art_num LIKE CONCAT('%', #{prodArtNum}, '%') + + + AND sf.fac_name LIKE CONCAT('%', #{facName}, '%') + + + AND sps.storage_type = #{storageType} + \ No newline at end of file diff --git a/xkt/src/main/resources/mapper/StoreProductStorageMapper.xml b/xkt/src/main/resources/mapper/StoreProductStorageMapper.xml index 89f841a63..8bfeaf439 100644 --- a/xkt/src/main/resources/mapper/StoreProductStorageMapper.xml +++ b/xkt/src/main/resources/mapper/StoreProductStorageMapper.xml @@ -3,111 +3,27 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> - - - - - - - - - - - - - - - - - select id, code, storage_type, total_num, total_produce_price, storage_status, version, del_flag, create_by, create_time, update_by, update_time from store_product_storage - - - - - - - - insert into store_product_storage - - code, - storage_type, - total_num, - total_produce_price, - storage_status, - version, - del_flag, - create_by, - create_time, - update_by, - update_time, - - - #{code}, - #{storageType}, - #{totalNum}, - #{totalProducePrice}, - #{storageStatus}, - #{version}, - #{delFlag}, - #{createBy}, - #{createTime}, - #{updateBy}, - #{updateTime}, - - - - - update store_product_storage - - code = #{code}, - storage_type = #{storageType}, - total_num = #{totalNum}, - total_produce_price = #{totalProducePrice}, - storage_status = #{storageStatus}, - version = #{version}, - del_flag = #{delFlag}, - create_by = #{createBy}, - create_time = #{createTime}, - update_by = #{updateBy}, - update_time = #{updateTime}, - - where id = #{id} - - - - delete from store_product_storage where id = #{id} - - - - delete from store_product_storage where id in - - #{id} - - - - SELECT - sps.id AS storeProdStorageId, sps.store_id, sps.`code`, sps.storage_type, sps.produce_amount, sps.quantity, sps.create_time, sps.operator_name + sps.id AS storeProdStorageId, + sps.store_id, + sps.`code`, + sps.storage_type, + sps.produce_amount, + sps.quantity, + sps.create_time, + sps.operator_name, + sf.fac_name FROM store_product_storage sps + join store_factory sf on sf.id = sps.store_factory_id join store_product_storage_detail spsd on sps.id = spsd.store_prod_stor_id WHERE sps.del_flag = 0 AND sps.store_id = #{storeId} and spsd.prod_art_num like concat('%', #{prodArtNum}, '%') + and sf.id = #{storeFactoryId} and sps.storage_type = #{storageType} and sps.voucher_date >= #{createTimeStart} and sps.voucher_date <= #{createTimeEnd}