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 93b9217f..79a04458 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 @@ -7,6 +7,7 @@ import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; import cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog; import cn.iocoder.yudao.module.smartfactory.controller.admin.factorydata.vo.FactoryDataDetailRespVO; import cn.iocoder.yudao.module.smartfactory.controller.admin.factorydata.vo.FactoryDataPageReqVO; +import cn.iocoder.yudao.module.smartfactory.controller.admin.factorydata.vo.FactoryDataTotalVO; import cn.iocoder.yudao.module.smartfactory.controller.admin.factorydata.vo.sizeData.FactoryDataSizeCreateReqVO; import cn.iocoder.yudao.module.smartfactory.service.factorydata.FactoryDataService; import cn.iocoder.yudao.module.smartfactory.service.factorydata.FactoryDataSizeService; @@ -76,6 +77,14 @@ public class FactoryDataController { return success(dataService.getData(factoryId, date)); } + @GetMapping("/get-total") + @Operation(summary = "获得出入库数据总数 | 入库总数、出库总数、破损总数") + @PreAuthorize("@ss.hasPermission('smartfactory:factory-data:query')") + public CommonResult getDataTotal() { + + return success(dataService.getDataTotal()); + } + @GetMapping("/page") @Operation(summary = "获得工厂出库入库数据分页") @PreAuthorize("@ss.hasPermission('smartfactory:factory-data:query')") @@ -96,5 +105,4 @@ public class FactoryDataController { ExcelUtils.write(response, "工厂出库入库数据.xls", "数据", FactoryDataDetailRespVO.class, list); } - } \ 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/FactoryDataDetailRespVO.java b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/factorydata/vo/FactoryDataDetailRespVO.java index 70ed1c9e..d2f82368 100644 --- a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/factorydata/vo/FactoryDataDetailRespVO.java +++ b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/factorydata/vo/FactoryDataDetailRespVO.java @@ -17,6 +17,9 @@ public class FactoryDataDetailRespVO { @Schema(description = "工厂id", requiredMode = Schema.RequiredMode.REQUIRED, example = "1000078") private Long factoryId; + @Schema(description = "工厂名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "新景象") + private String factoryName; + @Schema(description = "日期", requiredMode = Schema.RequiredMode.REQUIRED, example = "2024-05-14") private LocalDate date; diff --git a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/factorydata/vo/FactoryDataInfoRespVO.java b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/factorydata/vo/FactoryDataInfoRespVO.java index ded3b634..42f41305 100644 --- a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/factorydata/vo/FactoryDataInfoRespVO.java +++ b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/factorydata/vo/FactoryDataInfoRespVO.java @@ -10,9 +10,15 @@ import java.time.LocalDate; @Data public class FactoryDataInfoRespVO { + @Schema(description = "打包线数据id") + private Long id; + @Schema(description = "工厂id") private Long factoryId; + @Schema(description = "打包线名称") + private String packageName; + @Schema(description = "日期") private LocalDate date; @@ -22,6 +28,15 @@ public class FactoryDataInfoRespVO { @Schema(description = "规格名称") private String sizeName; + @Schema(description = "规格片数") + private Integer sizePieces; + + @Schema(description = "手动打包数") + private Integer num; + + @Schema(description = "自动打包数") + private Integer autoNum; + @Schema(description = "入库数量") private Integer inNum; @@ -29,7 +44,7 @@ public class FactoryDataInfoRespVO { private BigDecimal squareNum; @Schema(description = "打包破损数") - private Integer packageDamageNum; + private Integer damageNum; @Schema(description = "入库破损数id") private Long inDamageNumId; diff --git a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/factorydata/vo/FactoryDataTotalVO.java b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/factorydata/vo/FactoryDataTotalVO.java new file mode 100644 index 00000000..b277e107 --- /dev/null +++ b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/controller/admin/factorydata/vo/FactoryDataTotalVO.java @@ -0,0 +1,18 @@ +package cn.iocoder.yudao.module.smartfactory.controller.admin.factorydata.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +@Schema(description = "管理后台 - 工厂出库入库数据 总览 Request VO") +@Data +public class FactoryDataTotalVO { + + @Schema(description = "入库总数") + private Integer inTotal; + + @Schema(description = "出库总数") + private Integer outTotal; + + @Schema(description = "破损总数") + private Integer damageNum; +} diff --git a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/dal/mysql/factorydata/FactoryDataMapper.java b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/dal/mysql/factorydata/FactoryDataMapper.java index 6bd72d44..e27f7fd4 100644 --- a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/dal/mysql/factorydata/FactoryDataMapper.java +++ b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/dal/mysql/factorydata/FactoryDataMapper.java @@ -4,6 +4,7 @@ import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; import cn.iocoder.yudao.module.smartfactory.controller.admin.factorydata.vo.FactoryDataDetailRespVO; import cn.iocoder.yudao.module.smartfactory.controller.admin.factorydata.vo.FactoryDataPageReqVO; +import cn.iocoder.yudao.module.smartfactory.controller.admin.factorydata.vo.FactoryDataTotalVO; import cn.iocoder.yudao.module.smartfactory.dal.dataobject.factorydata.FactoryDataDO; import com.baomidou.mybatisplus.core.metadata.IPage; import org.apache.ibatis.annotations.Mapper; @@ -36,4 +37,6 @@ public interface FactoryDataMapper extends BaseMapperX { .eq(FactoryDataDO::getFactoryId, factoryId) .eq(FactoryDataDO::getDate, date)); } + + FactoryDataTotalVO selectDataSum(); } \ 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/FactoryDataService.java b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/service/factorydata/FactoryDataService.java index a760458b..0bba4d99 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 @@ -3,6 +3,7 @@ package cn.iocoder.yudao.module.smartfactory.service.factorydata; import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.module.smartfactory.controller.admin.factorydata.vo.FactoryDataDetailRespVO; import cn.iocoder.yudao.module.smartfactory.controller.admin.factorydata.vo.FactoryDataPageReqVO; +import cn.iocoder.yudao.module.smartfactory.controller.admin.factorydata.vo.FactoryDataTotalVO; import cn.iocoder.yudao.module.smartfactory.controller.admin.factorydata.vo.sizeData.FactoryDataSizeCreateReqVO; import cn.iocoder.yudao.module.smartfactory.dal.dataobject.factorydata.FactoryDataDO; @@ -58,6 +59,12 @@ public interface FactoryDataService { */ PageResult getDataPage(FactoryDataPageReqVO pageReqVO); + /** + * 获得工厂总数 总览 + * @return + */ + FactoryDataTotalVO getDataTotal(); + /** * 获取当天的所有数据 * 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 98049af4..7c47de23 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 @@ -7,13 +7,16 @@ import cn.iocoder.yudao.framework.mybatis.core.util.MyBatisUtils; import cn.iocoder.yudao.module.smartfactory.controller.admin.factorydata.vo.FactoryDataDetailRespVO; import cn.iocoder.yudao.module.smartfactory.controller.admin.factorydata.vo.FactoryDataInfoRespVO; import cn.iocoder.yudao.module.smartfactory.controller.admin.factorydata.vo.FactoryDataPageReqVO; +import cn.iocoder.yudao.module.smartfactory.controller.admin.factorydata.vo.FactoryDataTotalVO; import cn.iocoder.yudao.module.smartfactory.controller.admin.factorydata.vo.sizeData.FactoryDataSizeCreateReqVO; import cn.iocoder.yudao.module.smartfactory.controller.admin.factorydata.vo.sizeData.FactoryDataSizeSaveReqVO; import cn.iocoder.yudao.module.smartfactory.controller.admin.packagedata.vo.PackageDataCreateReqVO; import cn.iocoder.yudao.module.smartfactory.convert.packageData.PackageDataConvert; import cn.iocoder.yudao.module.smartfactory.dal.dataobject.factorydata.FactoryDataDO; +import cn.iocoder.yudao.module.smartfactory.dal.dataobject.factoryinfo.FactoryInfoDO; import cn.iocoder.yudao.module.smartfactory.dal.dataobject.packagedata.PackageDataDO; import cn.iocoder.yudao.module.smartfactory.dal.mysql.factorydata.FactoryDataMapper; +import cn.iocoder.yudao.module.smartfactory.service.factoryinfo.FactoryInfoService; import com.baomidou.mybatisplus.core.metadata.IPage; import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; @@ -26,8 +29,11 @@ import java.time.format.DateTimeFormatter; import java.util.Date; import java.util.List; import java.util.Map; +import java.util.Objects; import java.util.stream.Collectors; +import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertMap; + /** * 工厂出库入库数据 Service 实现类 @@ -45,6 +51,9 @@ public class FactoryDataServiceImpl implements FactoryDataService { @Lazy // 循环依赖,避免报错 private FactoryDataSizeService dataSizeService; + @Resource + private FactoryInfoService factoryInfoService; + @Override public Long createData(List factoryDataDOS) { @@ -62,7 +71,7 @@ public class FactoryDataServiceImpl implements FactoryDataService { //校验 出入库统计数据是否存在 List factoryDataDOS = dataMapper.selectListByFactoryAndDate(updateReqVO.getFactoryId(), updateReqVO.getDate().format(DateTimeFormatter.ofPattern("yyyy-MM-dd"))); - if (factoryDataDOS != null) { + if (factoryDataDOS != null && !factoryDataDOS.isEmpty()) { PackageDataCreateReqVO createReqVO = new PackageDataCreateReqVO(); createReqVO.setPackageData(updateReqVO.getPackageData()); @@ -150,6 +159,11 @@ public class FactoryDataServiceImpl implements FactoryDataService { List respVOS = dataPage.getList(); if (!respVOS.isEmpty()) { + //获得工厂信息列表 + List factoryIdS = respVOS.stream().map(FactoryDataDetailRespVO::getFactoryId).collect(Collectors.toList()); + List factoryInfoDOS = factoryInfoService.getFactoryList(factoryIdS); + Map factoryMap = convertMap(factoryInfoDOS, FactoryInfoDO::getId); + //获得 入库数、打包破损、入库破损、出库数、出库破损的工厂规格数据 List infoDatas = dataSizeService.getDetailList(pageReqVO.getFactoryId(), pageReqVO.getDate()); @@ -161,6 +175,7 @@ public class FactoryDataServiceImpl implements FactoryDataService { .collect(Collectors.toList()); items.setItems(infoList); + items.setFactoryName(factoryMap.get(items.getFactoryId()).getName()); //移除 已处理过的数据 infoDatas.removeAll(infoList); @@ -182,15 +197,16 @@ public class FactoryDataServiceImpl implements FactoryDataService { dataDetailRespVO.setId(respVOS.get(0).getId() + 1); dataDetailRespVO.setFactoryId(factoryId); + dataDetailRespVO.setFactoryName(factoryMap.get(factoryId).getName()); dataDetailRespVO.setDate(date); //设置入库总数 - dataDetailRespVO.setInTotalNum(infoList.stream().mapToInt(FactoryDataInfoRespVO::getInNum).sum()); + dataDetailRespVO.setInTotalNum(infoList.stream().filter(info -> info.getInNum() != null).mapToInt(FactoryDataInfoRespVO::getInNum).sum()); //设置入库平方数 - dataDetailRespVO.setSquareNum(infoList.stream().map(FactoryDataInfoRespVO::getSquareNum).reduce(BigDecimal.ZERO, BigDecimal::add)); + dataDetailRespVO.setSquareNum(infoList.stream().map(FactoryDataInfoRespVO::getSquareNum).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add)); //设置出库总数 - dataDetailRespVO.setOutTotalNum(infoDatas.stream().mapToInt(FactoryDataInfoRespVO::getOutNum).sum()); + dataDetailRespVO.setOutTotalNum(infoDatas.stream().filter(info -> info.getOutNum() != null).mapToInt(FactoryDataInfoRespVO::getOutNum).sum()); //设置 出入库破损总数 - dataDetailRespVO.setDamageNum(infoDatas.stream().mapToInt(info -> info.getInDamageNum() + info.getOutDamageNum()).sum()); + dataDetailRespVO.setDamageNum(infoDatas.stream().filter(info -> info.getInDamageNum() != null).mapToInt(info -> info.getInDamageNum() + info.getOutDamageNum()).sum()); dataDetailRespVO.setItems(infoList); //设置 可编辑状态 dataDetailRespVO.setIsEdit(1); @@ -198,12 +214,19 @@ public class FactoryDataServiceImpl implements FactoryDataService { respVOS.add(0, dataDetailRespVO); }); }); + dataPage.setTotal((long) respVOS.size()); } } return dataPage; } + @Override + public FactoryDataTotalVO getDataTotal() { + + return dataMapper.selectDataSum(); + } + @Override public List getTodayInboundAndOutboundOverview(Date time) { String timeStr = null; 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 f71ea726..9c9202c9 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 @@ -11,6 +11,7 @@ import cn.iocoder.yudao.module.smartfactory.dal.mysql.factorydata.FactoryDataSiz import cn.iocoder.yudao.module.smartfactory.service.packagedata.PackageDataService; import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import org.springframework.validation.annotation.Validated; import javax.annotation.Resource; @@ -46,6 +47,7 @@ public class FactoryDataSizeServiceImpl implements FactoryDataSizeService{ private FactoryDataService factoryDataService; @Override + @Transactional(rollbackFor = Exception.class) public Long createData(FactoryDataSizeCreateReqVO createReqVO) { //校验 当前日期得数据是否已经录入 @@ -114,6 +116,7 @@ public class FactoryDataSizeServiceImpl implements FactoryDataSizeService{ if (!createReqVO.getPackageData().isEmpty()) { PackageDataCreateReqVO packCreateReqVO = new PackageDataCreateReqVO(); + packCreateReqVO.setFactoryId(createReqVO.getPackageData().get(0).getFactoryId()); packCreateReqVO.setPackageData(createReqVO.getPackageData()); packCreateReqVO.setPackageDate(createReqVO.getDate()); @@ -125,6 +128,7 @@ public class FactoryDataSizeServiceImpl implements FactoryDataSizeService{ } @Override + @Transactional(rollbackFor = Exception.class) public void updateData(FactoryDataSizeCreateReqVO updateReqVO) { // 更新 @@ -171,6 +175,8 @@ public class FactoryDataSizeServiceImpl implements FactoryDataSizeService{ if (!updateReqVO.getPackageData().isEmpty()) { PackageDataCreateReqVO packCreateReqVO = new PackageDataCreateReqVO(); + packCreateReqVO.setFactoryId(updateReqVO.getFactoryId()); + packCreateReqVO.setPackageDate(updateReqVO.getDate()); packCreateReqVO.setPackageData(updateReqVO.getPackageData()); //插入打包线数据 diff --git a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/service/factoryinfo/FactoryInfoService.java b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/service/factoryinfo/FactoryInfoService.java index 729e7e19..3e2a4d30 100644 --- a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/service/factoryinfo/FactoryInfoService.java +++ b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/service/factoryinfo/FactoryInfoService.java @@ -8,6 +8,7 @@ import cn.iocoder.yudao.module.smartfactory.controller.admin.screendata.factory. import cn.iocoder.yudao.module.smartfactory.dal.dataobject.factoryinfo.FactoryInfoDO; import javax.validation.Valid; +import java.util.Collection; import java.util.List; /** @@ -47,6 +48,14 @@ public interface FactoryInfoService { */ FactoryInfoDO getFactoryInfo(Long id); + /** + * 获得工厂信息列表 + * + * @param ids 编号 + * @return 工厂信息 + */ + List getFactoryList(Collection ids); + /** * 获得类型为工厂的工厂信息列表 * @return 工厂列表 diff --git a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/service/factoryinfo/FactoryInfoServiceImpl.java b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/service/factoryinfo/FactoryInfoServiceImpl.java index 7edc57ac..5993b845 100644 --- a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/service/factoryinfo/FactoryInfoServiceImpl.java +++ b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/java/cn/iocoder/yudao/module/smartfactory/service/factoryinfo/FactoryInfoServiceImpl.java @@ -2,7 +2,6 @@ package cn.iocoder.yudao.module.smartfactory.service.factoryinfo; import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils; import cn.iocoder.yudao.framework.common.util.object.BeanUtils; import cn.iocoder.yudao.framework.ip.core.Area; import cn.iocoder.yudao.framework.ip.core.utils.AreaUtils; @@ -116,6 +115,12 @@ public class FactoryInfoServiceImpl implements FactoryInfoService { return factoryInfoMapper.selectById(id); } + @Override + public List getFactoryList(Collection ids) { + + return factoryInfoMapper.selectList(FactoryInfoDO::getId, ids); + } + @Override public List getFactoryListByType() { diff --git a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/resources/mapper/factorydata/FactoryDataMapper.xml b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/resources/mapper/factorydata/FactoryDataMapper.xml index 6fadfe8c..d169442e 100644 --- a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/resources/mapper/factorydata/FactoryDataMapper.xml +++ b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/resources/mapper/factorydata/FactoryDataMapper.xml @@ -21,6 +21,7 @@ FROM sf_factory_data + deleted = 0 AND factory_id = #{reqVO.factoryId} @@ -46,4 +47,15 @@ ORDER BY id DESC + + \ No newline at end of file diff --git a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/resources/mapper/factorydata/FactoryDataSizeMapper.xml b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/resources/mapper/factorydata/FactoryDataSizeMapper.xml index a117738b..4c44ffc1 100644 --- a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/resources/mapper/factorydata/FactoryDataSizeMapper.xml +++ b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/resources/mapper/factorydata/FactoryDataSizeMapper.xml @@ -11,13 +11,18 @@