diff --git a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/factorydata/FactoryDataController.java b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/factorydata/FactoryDataController.java index 9f755b1c..7ebf143b 100644 --- a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/factorydata/FactoryDataController.java +++ b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/factorydata/FactoryDataController.java @@ -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 importExcel(@RequestParam("file") MultipartFile file) throws Exception { + public CommonResult importExcel(@RequestParam("file") MultipartFile file, + @RequestParam("type") Integer type) throws Exception { List list = ExcelUtils.read(file, FactoryDataImportVO.class); - return success(dataService.importUserList(list)); + return success(dataService.importUserList(list, type)); } } \ No newline at end of file diff --git a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/factorydata/vo/FactoryDataImportVO.java b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/factorydata/vo/FactoryDataImportVO.java index a76e2ac5..72ec9ee3 100644 --- a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/factorydata/vo/FactoryDataImportVO.java +++ b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/factorydata/vo/FactoryDataImportVO.java @@ -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; } diff --git a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/dal/mysql/factorydata/FactoryDataSizeMapper.java b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/dal/mysql/factorydata/FactoryDataSizeMapper.java index 97b5829d..4f386b04 100644 --- a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/dal/mysql/factorydata/FactoryDataSizeMapper.java +++ b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/dal/mysql/factorydata/FactoryDataSizeMapper.java @@ -39,10 +39,11 @@ public interface FactoryDataSizeMapper extends BaseMapperX { .betweenIfPresent(FactoryDataSizeDO::getCreateTime, dateTimes)); } - default Long selectCountByType(Long factoryId, LocalDate date, Collection types) { + default Long selectCountByType(Long factoryId, Long sizeId, LocalDate date, Collection types) { return selectCount(new LambdaQueryWrapperX() .eq(FactoryDataSizeDO::getFactoryId, factoryId) + .eqIfPresent(FactoryDataSizeDO::getSizeId, sizeId) .eq(FactoryDataSizeDO::getDate, date) .in(FactoryDataSizeDO::getType, types)); } diff --git a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/service/factorydata/FactoryDataService.java b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/service/factorydata/FactoryDataService.java index d34b7c3f..cf225e96 100644 --- a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/service/factorydata/FactoryDataService.java +++ b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/service/factorydata/FactoryDataService.java @@ -96,5 +96,5 @@ public interface FactoryDataService { * @param list 数据 * @return 结果 */ - FactoryImportRespVO importUserList(List list); + FactoryImportRespVO importUserList(List list, Integer type); } \ No newline at end of file diff --git a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/service/factorydata/FactoryDataServiceImpl.java b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/service/factorydata/FactoryDataServiceImpl.java index 4d070a47..b61b300b 100644 --- a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/service/factorydata/FactoryDataServiceImpl.java +++ b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/service/factorydata/FactoryDataServiceImpl.java @@ -281,7 +281,7 @@ public class FactoryDataServiceImpl implements FactoryDataService { @Override @Transactional(rollbackFor = Exception.class) // 添加事务,异常则回滚所有导入 - public FactoryImportRespVO importUserList(List list) { + public FactoryImportRespVO importUserList(List 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 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 packageDOs = packageDataService.getListByFactoryIdAndDate(factoryInfoDO.getId(), date.format(DateTimeFormatter.ofPattern("yyyy-MM-dd"))); + List 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 packageDOs = packageDataService.getListByFactoryIdAndDate(factoryInfoDO.getId(), date.format(DateTimeFormatter.ofPattern("yyyy-MM-dd"))); + + if (count > 0L) { throw exception(PACKAGE_DATA_EXISTS); } diff --git a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/service/factorydata/FactoryDataSizeServiceImpl.java b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/service/factorydata/FactoryDataSizeServiceImpl.java index 8a27ae53..344526c0 100644 --- a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/service/factorydata/FactoryDataSizeServiceImpl.java +++ b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/service/factorydata/FactoryDataSizeServiceImpl.java @@ -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); }