Bläddra i källkod

调拨增加文件导入

master
yangpeilai 1 månad sedan
förälder
incheckning
5b5c12c871
17 ändrade filer med 98 tillägg och 18 borttagningar
  1. 2
    2
      gly-base-core/src/main/java/cn/com/taiji/core/repo/jpa/invw/InvwCardDetailsRepo.java
  2. 2
    2
      gly-base-core/src/main/java/cn/com/taiji/core/repo/jpa/invw/InvwObuDetailsRepo.java
  3. 6
    0
      zhywpt-app-invw/src/main/java/cn/com/taiji/invw/api/transfer/InvwTransferApplyController.java
  4. 2
    1
      zhywpt-app-invw/src/main/java/cn/com/taiji/invw/dto/transfer/InvwTransferApplyAddRequestDTO.java
  5. 33
    0
      zhywpt-app-invw/src/main/java/cn/com/taiji/invw/dto/transfer/InvwTransferApplyImportRequestDTO.java
  6. 20
    0
      zhywpt-app-invw/src/main/java/cn/com/taiji/invw/dto/transfer/InvwTransferApplyImportResponseDTO.java
  7. 1
    1
      zhywpt-app-invw/src/main/java/cn/com/taiji/invw/manager/card/InvwQryCardBatchManagerImpl.java
  8. 1
    1
      zhywpt-app-invw/src/main/java/cn/com/taiji/invw/manager/card/InvwQryCardsManagerImpl.java
  9. 1
    1
      zhywpt-app-invw/src/main/java/cn/com/taiji/invw/manager/obu/InvwQryObuBatchManagerImpl.java
  10. 1
    1
      zhywpt-app-invw/src/main/java/cn/com/taiji/invw/manager/obu/InvwQryObusManagerImpl.java
  11. 2
    0
      zhywpt-app-invw/src/main/java/cn/com/taiji/invw/manager/transfer/InvwTransferApplyManager.java
  12. 20
    5
      zhywpt-app-invw/src/main/java/cn/com/taiji/invw/manager/transfer/InvwTransferApplyManagerImpl.java
  13. 1
    1
      zhywpt-app-invw/src/main/java/cn/com/taiji/invw/model/card/InvwQryCardBatchExcelModel.java
  14. 1
    1
      zhywpt-app-invw/src/main/java/cn/com/taiji/invw/model/card/InvwQryCardsExcelModel.java
  15. 1
    1
      zhywpt-app-invw/src/main/java/cn/com/taiji/invw/model/obu/InvwQryObuBatchExcelModel.java
  16. 1
    1
      zhywpt-app-invw/src/main/java/cn/com/taiji/invw/model/obu/InvwQryObusExcelModel.java
  17. 3
    0
      zhywpt-app-invw/src/main/java/cn/com/taiji/invw/model/transfer/InvwTransferApplyDetailsModel.java

+ 2
- 2
gly-base-core/src/main/java/cn/com/taiji/core/repo/jpa/invw/InvwCardDetailsRepo.java Visa fil

long findCountByStoreCode(String storeCode); long findCountByStoreCode(String storeCode);


//根据设备编号范围查询库存 //根据设备编号范围查询库存
@Query(value = "select count(id) from InvwCardDetails where storeCode = ?1 and status = ?2 and cardId >= ?3 and cardId <= ?4 ")
@Query(value = "select count(id) from InvwCardDetails where storeCode = ?1 and status = ?2 and TO_NUMBER(cardId) >= TO_NUMBER(?3) and TO_NUMBER(cardId) <= TO_NUMBER(?4) ")
long findCountByStoreCodeStatusCardId(String storeCode, InvDeviceStatus status, String cardIdStart, String cardIdEnd); long findCountByStoreCodeStatusCardId(String storeCode, InvDeviceStatus status, String cardIdStart, String cardIdEnd);


//修改卡的所属仓库 //修改卡的所属仓库
@Modifying @Modifying
@Transactional @Transactional
@Query(value = "update InvwCardDetails set storeCode = ?1,agencyId=?2,channelId=?3 " + @Query(value = "update InvwCardDetails set storeCode = ?1,agencyId=?2,channelId=?3 " +
" where storeCode = ?4 and status = ?5 and cardId >= ?6 and cardId <= ?7")
" where storeCode = ?4 and status = ?5 and TO_NUMBER(cardId) >= TO_NUMBER(?6) and TO_NUMBER(cardId) <= TO_NUMBER(?7) ")
int updateStoreCodeByStoreCode(String storeCode, String agencyId, String channelId, String oldStoreCode, InvDeviceStatus status, String cardIdStart, String cardIdEnd); int updateStoreCodeByStoreCode(String storeCode, String agencyId, String channelId, String oldStoreCode, InvDeviceStatus status, String cardIdStart, String cardIdEnd);
} }

+ 2
- 2
gly-base-core/src/main/java/cn/com/taiji/core/repo/jpa/invw/InvwObuDetailsRepo.java Visa fil

long findCountByStoreCode(String storeCode); long findCountByStoreCode(String storeCode);


//根据仓库编号和状态查询库存 //根据仓库编号和状态查询库存
@Query(value = "select count(id) from InvwObuDetails where storeCode = ?1 and status = ?2 and obuId >= ?3 and obuId <= ?4 ")
@Query(value = "select count(id) from InvwObuDetails where storeCode = ?1 and status = ?2 and TO_NUMBER(cardId) >= TO_NUMBER(?3) and TO_NUMBER(cardId) <= TO_NUMBER(?4) ")
long findCountByStoreCodeStatusObuId(String storeCode, InvDeviceStatus status, String obuIdStart, String obuIdEnd); long findCountByStoreCodeStatusObuId(String storeCode, InvDeviceStatus status, String obuIdStart, String obuIdEnd);


//修改卡的所属仓库 //修改卡的所属仓库
@Modifying @Modifying
@Transactional @Transactional
@Query(value = "update InvwObuDetails set storeCode = ?1,agencyId=?2,channelId=?3 " + @Query(value = "update InvwObuDetails set storeCode = ?1,agencyId=?2,channelId=?3 " +
" where storeCode = ?4 and status = ?5 and cardId >= ?6 and cardId <= ?7")
" where storeCode = ?4 and status = ?5 and TO_NUMBER(cardId) >= TO_NUMBER(?6) and TO_NUMBER(cardId) <= TO_NUMBER(?7) ")
int updateStoreCodeByStoreCode(String storeCode, String agencyId, String channelId, String oldStoreCode, InvDeviceStatus status, String cardIdStart, String cardIdEnd); int updateStoreCodeByStoreCode(String storeCode, String agencyId, String channelId, String oldStoreCode, InvDeviceStatus status, String cardIdStart, String cardIdEnd);





+ 6
- 0
zhywpt-app-invw/src/main/java/cn/com/taiji/invw/api/transfer/InvwTransferApplyController.java Visa fil

return ApiResponse.success().setMessage("校验通过"); return ApiResponse.success().setMessage("校验通过");
} }


@ApiOperation(value = "08-号段导入")
@PostMapping("/import")
public ApiResponse<InvwTransferApplyImportResponseDTO> importData(@Valid @RequestBody InvwTransferApplyImportRequestDTO req) throws ManagerException {
return ApiResponse.of(manager.importData(req));
}

// @ApiOperation(value = "07-枚举查询") // @ApiOperation(value = "07-枚举查询")
// @PostMapping("/getEnum") // @PostMapping("/getEnum")
// public ApiResponse<Map<String,Object>> getEnum() { // public ApiResponse<Map<String,Object>> getEnum() {

+ 2
- 1
zhywpt-app-invw/src/main/java/cn/com/taiji/invw/dto/transfer/InvwTransferApplyAddRequestDTO.java Visa fil

import lombok.experimental.Accessors; import lombok.experimental.Accessors;


import javax.validation.Valid; import javax.validation.Valid;
import java.util.List;


@ApiModel(description = "调拨申请") @ApiModel(description = "调拨申请")
@Getter @Getter


@ApiModelProperty(value = "调拨明细") @ApiModelProperty(value = "调拨明细")
@Valid @Valid
private InvwTransferApplyDetailsModel[] transferDetails;
private List<InvwTransferApplyDetailsModel> transferDetails;
} }

+ 33
- 0
zhywpt-app-invw/src/main/java/cn/com/taiji/invw/dto/transfer/InvwTransferApplyImportRequestDTO.java Visa fil

package cn.com.taiji.invw.dto.transfer;

import cn.com.taiji.core.entity.dict.invw.InventoryType;
import cn.com.taiji.invw.dto.AbstractBizRequestDTO;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
import lombok.experimental.Accessors;

import javax.persistence.EnumType;
import javax.persistence.Enumerated;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;

@ApiModel(description = "调拨申请号段导入")
@Getter
@Setter
@Accessors(chain = true)
public class InvwTransferApplyImportRequestDTO extends AbstractBizRequestDTO {
@ApiModelProperty(value = "发货仓库")
@NotBlank(message = "发货仓库不能为空")
private String sendStoreCode;

@ApiModelProperty(value = "设备类型")
@NotNull(message = "设备类型不能为空")
@Enumerated(EnumType.STRING)
private InventoryType inventoryType;//设备类型

@ApiModelProperty(value = "调拨明细文件URL")
@NotBlank(message = "调拨明细文件URL不能为空")
private String fileUrl;
}

+ 20
- 0
zhywpt-app-invw/src/main/java/cn/com/taiji/invw/dto/transfer/InvwTransferApplyImportResponseDTO.java Visa fil

package cn.com.taiji.invw.dto.transfer;

import cn.com.taiji.invw.model.transfer.InvwTransferApplyDetailsModel;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
import lombok.experimental.Accessors;

import java.util.List;

@ApiModel(description = "调拨详情文件导入响应")
@Getter
@Setter
@Accessors(chain = true)
public class InvwTransferApplyImportResponseDTO {

@ApiModelProperty(value = "调拨详情导入信息")
private List<InvwTransferApplyDetailsModel> transferDetails;
}

+ 1
- 1
zhywpt-app-invw/src/main/java/cn/com/taiji/invw/manager/card/InvwQryCardBatchManagerImpl.java Visa fil

import cn.com.taiji.invw.dto.card.InvwQryCardBatchPageRequestDTO; import cn.com.taiji.invw.dto.card.InvwQryCardBatchPageRequestDTO;
import cn.com.taiji.invw.dto.comm.CommExcelFileResponseDTO; import cn.com.taiji.invw.dto.comm.CommExcelFileResponseDTO;
import cn.com.taiji.invw.manager.AbstractCommManager; import cn.com.taiji.invw.manager.AbstractCommManager;
import cn.com.taiji.invw.model.excel.InvwQryCardBatchExcelModel;
import cn.com.taiji.invw.model.card.InvwQryCardBatchExcelModel;
import com.alibaba.excel.EasyExcel; import com.alibaba.excel.EasyExcel;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;

+ 1
- 1
zhywpt-app-invw/src/main/java/cn/com/taiji/invw/manager/card/InvwQryCardsManagerImpl.java Visa fil

import cn.com.taiji.invw.dto.card.InvwQryCardsPageRequestDTO; import cn.com.taiji.invw.dto.card.InvwQryCardsPageRequestDTO;
import cn.com.taiji.invw.dto.comm.CommExcelFileResponseDTO; import cn.com.taiji.invw.dto.comm.CommExcelFileResponseDTO;
import cn.com.taiji.invw.manager.AbstractCommManager; import cn.com.taiji.invw.manager.AbstractCommManager;
import cn.com.taiji.invw.model.excel.InvwQryCardsExcelModel;
import cn.com.taiji.invw.model.card.InvwQryCardsExcelModel;
import com.alibaba.excel.EasyExcel; import com.alibaba.excel.EasyExcel;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;

+ 1
- 1
zhywpt-app-invw/src/main/java/cn/com/taiji/invw/manager/obu/InvwQryObuBatchManagerImpl.java Visa fil

import cn.com.taiji.invw.dto.comm.CommExcelFileResponseDTO; import cn.com.taiji.invw.dto.comm.CommExcelFileResponseDTO;
import cn.com.taiji.invw.dto.obu.InvwQryObuBatchPageRequestDTO; import cn.com.taiji.invw.dto.obu.InvwQryObuBatchPageRequestDTO;
import cn.com.taiji.invw.manager.AbstractCommManager; import cn.com.taiji.invw.manager.AbstractCommManager;
import cn.com.taiji.invw.model.excel.InvwQryObuBatchExcelModel;
import cn.com.taiji.invw.model.obu.InvwQryObuBatchExcelModel;
import com.alibaba.excel.EasyExcel; import com.alibaba.excel.EasyExcel;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;

+ 1
- 1
zhywpt-app-invw/src/main/java/cn/com/taiji/invw/manager/obu/InvwQryObusManagerImpl.java Visa fil

import cn.com.taiji.invw.dto.comm.CommExcelFileResponseDTO; import cn.com.taiji.invw.dto.comm.CommExcelFileResponseDTO;
import cn.com.taiji.invw.dto.obu.InvwQryObusPageRequestDTO; import cn.com.taiji.invw.dto.obu.InvwQryObusPageRequestDTO;
import cn.com.taiji.invw.manager.AbstractCommManager; import cn.com.taiji.invw.manager.AbstractCommManager;
import cn.com.taiji.invw.model.excel.InvwQryObusExcelModel;
import cn.com.taiji.invw.model.obu.InvwQryObusExcelModel;
import com.alibaba.excel.EasyExcel; import com.alibaba.excel.EasyExcel;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;

+ 2
- 0
zhywpt-app-invw/src/main/java/cn/com/taiji/invw/manager/transfer/InvwTransferApplyManager.java Visa fil

void confirmIn(InvwTransferApplyConfirmInRequestDTO req) throws ManagerException; void confirmIn(InvwTransferApplyConfirmInRequestDTO req) throws ManagerException;


void check(InvwTransferApplyCheckRequestDTO req) throws ManagerException; void check(InvwTransferApplyCheckRequestDTO req) throws ManagerException;

InvwTransferApplyImportResponseDTO importData(InvwTransferApplyImportRequestDTO req) throws ManagerException;
} }

+ 20
- 5
zhywpt-app-invw/src/main/java/cn/com/taiji/invw/manager/transfer/InvwTransferApplyManagerImpl.java Visa fil

import cn.com.taiji.common.manager.ManagerException; import cn.com.taiji.common.manager.ManagerException;
import cn.com.taiji.common.model.dao.Pagination; import cn.com.taiji.common.model.dao.Pagination;
import cn.com.taiji.common.pub.StringTools; import cn.com.taiji.common.pub.StringTools;
import cn.com.taiji.core.entity.dict.basic.CardType;
import cn.com.taiji.core.entity.dict.basic.DeviceVersion;
import cn.com.taiji.core.entity.dict.basic.ObuType;
import cn.com.taiji.core.entity.dict.invw.InvApplyStatus; import cn.com.taiji.core.entity.dict.invw.InvApplyStatus;
import cn.com.taiji.core.entity.dict.invw.InvDeviceStatus; import cn.com.taiji.core.entity.dict.invw.InvDeviceStatus;
import cn.com.taiji.core.entity.dict.invw.InventoryType; import cn.com.taiji.core.entity.dict.invw.InventoryType;
import cn.com.taiji.core.entity.dict.invw.OwnType;
import cn.com.taiji.core.entity.invw.InvwTransferApply; import cn.com.taiji.core.entity.invw.InvwTransferApply;
import cn.com.taiji.core.entity.invw.InvwTransferApplyDetails; import cn.com.taiji.core.entity.invw.InvwTransferApplyDetails;
import cn.com.taiji.core.entity.invw.InvwWarehouse; import cn.com.taiji.core.entity.invw.InvwWarehouse;
import cn.com.taiji.core.manager.tools.minio.MinioUtile;
import cn.com.taiji.core.repo.jpa.invw.*; import cn.com.taiji.core.repo.jpa.invw.*;
import cn.com.taiji.core.repo.request.invw.InvwTransferApplyPageRequest; import cn.com.taiji.core.repo.request.invw.InvwTransferApplyPageRequest;
import cn.com.taiji.invw.dto.transfer.*; import cn.com.taiji.invw.dto.transfer.*;
import cn.com.taiji.invw.manager.AbstractCommManager; import cn.com.taiji.invw.manager.AbstractCommManager;
import cn.com.taiji.invw.model.transfer.InvwTransferApplyCommModel; import cn.com.taiji.invw.model.transfer.InvwTransferApplyCommModel;
import cn.com.taiji.invw.model.transfer.InvwTransferApplyDetailsModel; import cn.com.taiji.invw.model.transfer.InvwTransferApplyDetailsModel;
import cn.com.taiji.invw.tools.EasyExcelUtil;
import cn.com.taiji.invw.tools.GenerateNoUtil; import cn.com.taiji.invw.tools.GenerateNoUtil;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;


import java.io.File;
import java.math.BigInteger; import java.math.BigInteger;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.ArrayList; import java.util.ArrayList;
private InvwCardDetailsRepo cardDetailsRepo; private InvwCardDetailsRepo cardDetailsRepo;
@Autowired @Autowired
private InvwObuDetailsRepo obuDetailsRepo; private InvwObuDetailsRepo obuDetailsRepo;
@Autowired
private MinioUtile minioUtile;


@Override @Override
public Pagination page(InvwTransferApplyPageRequestDTO req) { public Pagination page(InvwTransferApplyPageRequestDTO req) {
toCheck(details, req.getInventoryType(), req.getSendStoreCode()); toCheck(details, req.getInventoryType(), req.getSendStoreCode());
} }


@Override
public InvwTransferApplyImportResponseDTO importData(InvwTransferApplyImportRequestDTO req) throws ManagerException {
// 获取导入文件
File file = minioUtile.getFileByUrl(req.getFileUrl());
// 读取文件数据
List<InvwTransferApplyDetailsModel> models = EasyExcelUtil.readExcelColToModelList(file, InvwTransferApplyDetailsModel.class);
if (models.size() == 0) {
throw new ManagerException("导入文件为空");
}
InvwTransferApplyImportResponseDTO response = new InvwTransferApplyImportResponseDTO();
response.setTransferDetails(models);
return response;
}

public void handlerTransferApply(InvwTransferApplyAddRequestDTO addReq, InvwTransferApplyEditRequestDTO editReq, public void handlerTransferApply(InvwTransferApplyAddRequestDTO addReq, InvwTransferApplyEditRequestDTO editReq,
InvwTransferApply transferApply, List<InvwTransferApplyDetails> transferApplyDetails) throws ManagerException { InvwTransferApply transferApply, List<InvwTransferApplyDetails> transferApplyDetails) throws ManagerException {
// 处理新增请求 // 处理新增请求
//处理新增 //处理新增
private void handleAddRequest(InvwTransferApplyAddRequestDTO addReq, InvwTransferApply transferApply, List<InvwTransferApplyDetails> transferApplyDetails) throws ManagerException { private void handleAddRequest(InvwTransferApplyAddRequestDTO addReq, InvwTransferApply transferApply, List<InvwTransferApplyDetails> transferApplyDetails) throws ManagerException {
InvwTransferApplyCommModel transferApplyModel = addReq.getTransferApply(); InvwTransferApplyCommModel transferApplyModel = addReq.getTransferApply();
InvwTransferApplyDetailsModel[] detailsModels = addReq.getTransferDetails();
List<InvwTransferApplyDetailsModel> detailsModels = addReq.getTransferDetails();


LocalDateTime now = LocalDateTime.now(); LocalDateTime now = LocalDateTime.now();
//生成申请单号 //生成申请单号

zhywpt-app-invw/src/main/java/cn/com/taiji/invw/model/excel/InvwQryCardBatchExcelModel.java → zhywpt-app-invw/src/main/java/cn/com/taiji/invw/model/card/InvwQryCardBatchExcelModel.java Visa fil

package cn.com.taiji.invw.model.excel;
package cn.com.taiji.invw.model.card;


import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty; import com.alibaba.excel.annotation.ExcelProperty;

zhywpt-app-invw/src/main/java/cn/com/taiji/invw/model/excel/InvwQryCardsExcelModel.java → zhywpt-app-invw/src/main/java/cn/com/taiji/invw/model/card/InvwQryCardsExcelModel.java Visa fil

package cn.com.taiji.invw.model.excel;
package cn.com.taiji.invw.model.card;


import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty; import com.alibaba.excel.annotation.ExcelProperty;

zhywpt-app-invw/src/main/java/cn/com/taiji/invw/model/excel/InvwQryObuBatchExcelModel.java → zhywpt-app-invw/src/main/java/cn/com/taiji/invw/model/obu/InvwQryObuBatchExcelModel.java Visa fil

package cn.com.taiji.invw.model.excel;
package cn.com.taiji.invw.model.obu;


import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty; import com.alibaba.excel.annotation.ExcelProperty;

zhywpt-app-invw/src/main/java/cn/com/taiji/invw/model/excel/InvwQryObusExcelModel.java → zhywpt-app-invw/src/main/java/cn/com/taiji/invw/model/obu/InvwQryObusExcelModel.java Visa fil

package cn.com.taiji.invw.model.excel;
package cn.com.taiji.invw.model.obu;


import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty; import com.alibaba.excel.annotation.ExcelProperty;

+ 3
- 0
zhywpt-app-invw/src/main/java/cn/com/taiji/invw/model/transfer/InvwTransferApplyDetailsModel.java Visa fil

package cn.com.taiji.invw.model.transfer; package cn.com.taiji.invw.model.transfer;


import com.alibaba.excel.annotation.ExcelProperty;
import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.Getter; import lombok.Getter;
@ApiModelProperty(value = "开始编号") @ApiModelProperty(value = "开始编号")
@NotBlank(message = "开始编号不能为空") @NotBlank(message = "开始编号不能为空")
@Pattern(regexp = "^[0-9]*$", message = "编号只能由0-9组成") @Pattern(regexp = "^[0-9]*$", message = "编号只能由0-9组成")
@ExcelProperty(index = 0, value = "开始编号")
private String startId;//开始编号 private String startId;//开始编号


@ApiModelProperty(value = "结束编号") @ApiModelProperty(value = "结束编号")
@NotBlank(message = "结束编号不能为空") @NotBlank(message = "结束编号不能为空")
@Pattern(regexp = "^[0-9]*$", message = "编号只能由0-9组成") @Pattern(regexp = "^[0-9]*$", message = "编号只能由0-9组成")
@ExcelProperty(index = 1, value = "结束编号")
private String endId;//结束编号 private String endId;//结束编号


} }

Laddar…
Avbryt
Spara