修改出入库数据 导入功能
This commit is contained in:
parent
3ebb715544
commit
a3937a440f
@ -163,11 +163,13 @@ public class FactoryDataController {
|
||||
@PostMapping("/import")
|
||||
@Operation(summary = "导入出入库数据")
|
||||
@Parameter(name = "file", description = "Excel 文件", required = true)
|
||||
@Parameter(name = "type", description = "出入库类型 | 1入库 2出库", required = true)
|
||||
@PreAuthorize("@ss.hasPermission('smartfactory:factory-data:import')")
|
||||
public CommonResult<FactoryImportRespVO> importExcel(@RequestParam("file") MultipartFile file) throws Exception {
|
||||
public CommonResult<FactoryImportRespVO> importExcel(@RequestParam("file") MultipartFile file,
|
||||
@RequestParam("type") Integer type) throws Exception {
|
||||
|
||||
List<FactoryDataImportVO> list = ExcelUtils.read(file, FactoryDataImportVO.class);
|
||||
|
||||
return success(dataService.importUserList(list));
|
||||
return success(dataService.importUserList(list, type));
|
||||
}
|
||||
}
|
@ -1,7 +1,6 @@
|
||||
package cn.iocoder.yudao.module.smartfactory.controller.admin.factorydata.vo;
|
||||
|
||||
import com.alibaba.excel.annotation.ExcelProperty;
|
||||
import com.alibaba.excel.annotation.write.style.ColumnWidth;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
@ -9,11 +8,9 @@ import lombok.NoArgsConstructor;
|
||||
import lombok.experimental.Accessors;
|
||||
import org.springframework.format.annotation.DateTimeFormat;
|
||||
|
||||
import javax.swing.border.TitledBorder;
|
||||
import java.time.LocalDate;
|
||||
|
||||
import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY;
|
||||
import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
|
||||
|
||||
/**
|
||||
* 出入库数据导入 VO
|
||||
@ -35,24 +32,33 @@ public class FactoryDataImportVO {
|
||||
@ExcelProperty("规格")
|
||||
private String sizeName;
|
||||
|
||||
@ExcelProperty("手动打包数")
|
||||
// @ExcelProperty("手动打包数")
|
||||
// private Integer num;
|
||||
//
|
||||
// @ExcelProperty("自动打包数")
|
||||
// private Integer autoNum;
|
||||
//
|
||||
// @ExcelProperty("入库数")
|
||||
// private Integer inNum;
|
||||
//
|
||||
// @ExcelProperty("打包破损数")
|
||||
// private Integer damageNum;
|
||||
//
|
||||
// @ExcelProperty("入库破损数")
|
||||
// private Integer inDamageNum;
|
||||
//
|
||||
// @ExcelProperty("出库数")
|
||||
// private Integer outNum;
|
||||
//
|
||||
// @ExcelProperty("出库破损数")
|
||||
// private Integer outDamageNum;
|
||||
|
||||
@ExcelProperty("规格片数")
|
||||
private Integer sizePieces;
|
||||
|
||||
@ExcelProperty("出入库数")
|
||||
private Integer num;
|
||||
|
||||
@ExcelProperty("自动打包数")
|
||||
private Integer autoNum;
|
||||
|
||||
@ExcelProperty("入库数")
|
||||
private Integer inNum;
|
||||
|
||||
@ExcelProperty("打包破损数")
|
||||
@ExcelProperty("破损数")
|
||||
private Integer damageNum;
|
||||
|
||||
@ExcelProperty("入库破损数")
|
||||
private Integer inDamageNum;
|
||||
|
||||
@ExcelProperty("出库数")
|
||||
private Integer outNum;
|
||||
|
||||
@ExcelProperty("出库破损数")
|
||||
private Integer outDamageNum;
|
||||
}
|
||||
|
@ -39,10 +39,11 @@ public interface FactoryDataSizeMapper extends BaseMapperX<FactoryDataSizeDO> {
|
||||
.betweenIfPresent(FactoryDataSizeDO::getCreateTime, dateTimes));
|
||||
}
|
||||
|
||||
default Long selectCountByType(Long factoryId, LocalDate date, Collection<Integer> types) {
|
||||
default Long selectCountByType(Long factoryId, Long sizeId, LocalDate date, Collection<Integer> types) {
|
||||
|
||||
return selectCount(new LambdaQueryWrapperX<FactoryDataSizeDO>()
|
||||
.eq(FactoryDataSizeDO::getFactoryId, factoryId)
|
||||
.eqIfPresent(FactoryDataSizeDO::getSizeId, sizeId)
|
||||
.eq(FactoryDataSizeDO::getDate, date)
|
||||
.in(FactoryDataSizeDO::getType, types));
|
||||
}
|
||||
|
@ -96,5 +96,5 @@ public interface FactoryDataService {
|
||||
* @param list 数据
|
||||
* @return 结果
|
||||
*/
|
||||
FactoryImportRespVO importUserList(List<FactoryDataImportVO> list);
|
||||
FactoryImportRespVO importUserList(List<FactoryDataImportVO> list, Integer type);
|
||||
}
|
@ -281,7 +281,7 @@ public class FactoryDataServiceImpl implements FactoryDataService {
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class) // 添加事务,异常则回滚所有导入
|
||||
public FactoryImportRespVO importUserList(List<FactoryDataImportVO> list) {
|
||||
public FactoryImportRespVO importUserList(List<FactoryDataImportVO> list, Integer type) {
|
||||
|
||||
if (CollUtil.isEmpty(list)) {
|
||||
throw exception(FACTORY_IMPORT_LIST_IS_EMPTY);
|
||||
@ -294,7 +294,7 @@ public class FactoryDataServiceImpl implements FactoryDataService {
|
||||
//校验,判断是否有不符合的原因
|
||||
Long factoryId = null;
|
||||
try {
|
||||
factoryId = validateFactoryForCreate(data.getFactoryName(), data.getSizeName(), data.getDate());
|
||||
factoryId = validateFactoryForCreate(data.getFactoryName(), data.getSizeName(), data.getDate(), type);
|
||||
} catch (Exception ex) {
|
||||
|
||||
respVO.getFailureUsernames().put(data.getFactoryName() + "-" + data.getDate(), ex.getMessage());
|
||||
@ -337,84 +337,50 @@ public class FactoryDataServiceImpl implements FactoryDataService {
|
||||
// }
|
||||
|
||||
List<FactoryDataSizeDO> factoryDataSizeDOs = new ArrayList<>();
|
||||
if (data.getInDamageNum() != null || data.getInNum() != null || data.getOutNum() != null) {
|
||||
|
||||
if (data.getInDamageNum() != null && data.getInDamageNum() != 0) {
|
||||
if (data.getNum() != null) {
|
||||
|
||||
FactoryDataSizeDO dataSizeDO = new FactoryDataSizeDO();
|
||||
//设置规格信息
|
||||
dataSizeDO.setSizeId(sizeId);
|
||||
dataSizeDO.setSizeName(sizeName);
|
||||
// dataSizeDO.setSizePieces(packageDO == null ? null : packageDO.getSizePieces());
|
||||
//设置工厂和日期
|
||||
dataSizeDO.setFactoryId(factoryId);
|
||||
dataSizeDO.setDate(data.getDate());
|
||||
//设置入库破损数
|
||||
dataSizeDO.setType(1);
|
||||
dataSizeDO.setNum(data.getInDamageNum());
|
||||
FactoryDataSizeDO dataSizeDO = new FactoryDataSizeDO();
|
||||
//设置规格信息
|
||||
dataSizeDO.setSizeId(sizeId);
|
||||
dataSizeDO.setSizeName(sizeName);
|
||||
dataSizeDO.setSizePieces(data.getSizePieces());
|
||||
//设置工厂和日期
|
||||
dataSizeDO.setFactoryId(factoryId);
|
||||
dataSizeDO.setDate(data.getDate());
|
||||
// 根据type 设置入库数还是出库数
|
||||
dataSizeDO.setType(type == 1 ? 4 : 2);
|
||||
dataSizeDO.setNum(data.getNum());
|
||||
|
||||
factoryDataSizeDOs.add(dataSizeDO);
|
||||
}
|
||||
|
||||
if (data.getInNum() != null && data.getInNum() != 0) {
|
||||
|
||||
FactoryDataSizeDO dataSizeDO = new FactoryDataSizeDO();
|
||||
//设置规格信息
|
||||
dataSizeDO.setSizeId(sizeId);
|
||||
dataSizeDO.setSizeName(sizeName);
|
||||
// dataSizeDO.setSizePieces(packageDO == null ? null : packageDO.getSizePieces());
|
||||
//设置工厂和日期
|
||||
dataSizeDO.setFactoryId(factoryId);
|
||||
dataSizeDO.setDate(data.getDate());
|
||||
//设置入库破损数
|
||||
dataSizeDO.setType(4);
|
||||
dataSizeDO.setNum(data.getInNum());
|
||||
|
||||
factoryDataSizeDOs.add(dataSizeDO);
|
||||
}
|
||||
|
||||
if (data.getOutNum() != null && data.getOutNum() != 0) {
|
||||
|
||||
FactoryDataSizeDO dataSizeDO = new FactoryDataSizeDO();
|
||||
//设置规格信息
|
||||
dataSizeDO.setSizeId(sizeId);
|
||||
dataSizeDO.setSizeName(sizeName);
|
||||
//设置工厂和日期
|
||||
dataSizeDO.setFactoryId(factoryId);
|
||||
dataSizeDO.setDate(data.getDate());
|
||||
//设置入库破损数
|
||||
dataSizeDO.setType(2);
|
||||
dataSizeDO.setNum(data.getOutNum());
|
||||
|
||||
factoryDataSizeDOs.add(dataSizeDO);
|
||||
}
|
||||
|
||||
if (data.getOutDamageNum() != null && data.getOutDamageNum() != 0) {
|
||||
|
||||
FactoryDataSizeDO dataSizeDO = new FactoryDataSizeDO();
|
||||
//设置规格信息
|
||||
dataSizeDO.setSizeId(sizeId);
|
||||
dataSizeDO.setSizeName(sizeName);
|
||||
//设置工厂和日期
|
||||
dataSizeDO.setFactoryId(factoryId);
|
||||
dataSizeDO.setDate(data.getDate());
|
||||
//设置入库破损数
|
||||
dataSizeDO.setType(3);
|
||||
dataSizeDO.setNum(data.getOutDamageNum());
|
||||
|
||||
factoryDataSizeDOs.add(dataSizeDO);
|
||||
}
|
||||
|
||||
factoryDataSizeMapper.insertBatch(factoryDataSizeDOs);
|
||||
factoryDataSizeDOs.add(dataSizeDO);
|
||||
}
|
||||
|
||||
if (data.getDamageNum() != null) {
|
||||
|
||||
FactoryDataSizeDO dataSizeDamageDO = new FactoryDataSizeDO();
|
||||
//设置规格信息
|
||||
dataSizeDamageDO.setSizeId(sizeId);
|
||||
dataSizeDamageDO.setSizeName(sizeName);
|
||||
dataSizeDamageDO.setSizePieces(data.getSizePieces());
|
||||
//设置工厂和日期
|
||||
dataSizeDamageDO.setFactoryId(factoryId);
|
||||
dataSizeDamageDO.setDate(data.getDate());
|
||||
// 根据type 设置入库破损还是出库破损
|
||||
dataSizeDamageDO.setType(type == 1 ? 1 : 3);
|
||||
dataSizeDamageDO.setNum(data.getDamageNum());
|
||||
|
||||
factoryDataSizeDOs.add(dataSizeDamageDO);
|
||||
}
|
||||
|
||||
factoryDataSizeMapper.insertBatch(factoryDataSizeDOs);
|
||||
|
||||
respVO.getCreateUsernames().add(data.getFactoryName() + "-" + data.getDate());
|
||||
});
|
||||
|
||||
return respVO;
|
||||
}
|
||||
|
||||
private Long validateFactoryForCreate(String factoryName, String sizeName, LocalDate date) {
|
||||
private Long validateFactoryForCreate(String factoryName, String sizeName, LocalDate date, Integer type) {
|
||||
|
||||
if (factoryName == null) {
|
||||
throw exception(FACTORY_INFO_NOT_EXISTS);
|
||||
@ -426,10 +392,19 @@ public class FactoryDataServiceImpl implements FactoryDataService {
|
||||
|
||||
FactoryInfoDO factoryInfoDO = factoryInfoService.getFactoryByName(factoryName);
|
||||
|
||||
Long count = factoryDataSizeMapper.selectCountByType(factoryInfoDO.getId(), date, Arrays.asList(1,2,3,4));
|
||||
List<PackageDataDO> packageDOs = packageDataService.getListByFactoryIdAndDate(factoryInfoDO.getId(), date.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
|
||||
List<Integer> dataType = new ArrayList<>();
|
||||
if (type == 1) {
|
||||
dataType = Arrays.asList(1,4);
|
||||
} else if (type == 2) {
|
||||
dataType = Arrays.asList(2,3);
|
||||
}
|
||||
|
||||
if (count > 0L || !packageDOs.isEmpty()) {
|
||||
// 获取 规格ID
|
||||
Long sizeId = Long.valueOf(sizeName.split(":")[0]);
|
||||
Long count = factoryDataSizeMapper.selectCountByType(factoryInfoDO.getId(), sizeId, date, dataType);
|
||||
// List<PackageDataDO> packageDOs = packageDataService.getListByFactoryIdAndDate(factoryInfoDO.getId(), date.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
|
||||
|
||||
if (count > 0L) {
|
||||
throw exception(PACKAGE_DATA_EXISTS);
|
||||
}
|
||||
|
||||
|
@ -50,13 +50,13 @@ public class FactoryDataSizeServiceImpl implements FactoryDataSizeService{
|
||||
//校验 当前日期得 入库数据是否已经录入
|
||||
if (createReqVO.getType() == 2) {
|
||||
|
||||
Long count = factoryDataSizeMapper.selectCountByType(createReqVO.getFactoryId(), createReqVO.getDate(), Arrays.asList(1,4));
|
||||
Long count = factoryDataSizeMapper.selectCountByType(createReqVO.getFactoryId(), null, createReqVO.getDate(), Arrays.asList(1,4));
|
||||
if (count > 0L) {
|
||||
throw exception(PACKAGE_DATA_EXISTS);
|
||||
}
|
||||
}else if (createReqVO.getType() == 1) { //校验 当前日期得 出库数据是否已经录入
|
||||
|
||||
Long count = factoryDataSizeMapper.selectCountByType(createReqVO.getFactoryId(), createReqVO.getDate(), Arrays.asList(2,3));
|
||||
Long count = factoryDataSizeMapper.selectCountByType(createReqVO.getFactoryId(), null, createReqVO.getDate(), Arrays.asList(2,3));
|
||||
if (count > 0L) {
|
||||
throw exception(PACKAGE_DATA_EXISTS);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user