diff --git a/ruoyi-admin/src/main/java/com/ruoyi/warehouse/controller/WarehouseStorageOrderController.java b/ruoyi-admin/src/main/java/com/ruoyi/warehouse/controller/WarehouseStorageOrderController.java index 6784cf3f..802fd810 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/warehouse/controller/WarehouseStorageOrderController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/warehouse/controller/WarehouseStorageOrderController.java @@ -1,5 +1,7 @@ package com.ruoyi.warehouse.controller; +import java.util.ArrayList; +import java.util.Date; import java.util.List; import java.util.Map; import java.util.stream.Collectors; @@ -12,6 +14,7 @@ import com.ruoyi.warehouse.domain.WarehouseStorageOrderDetail; import com.ruoyi.warehouse.service.IWarehouseStorageOrderDetailService; import org.apache.shiro.authz.annotation.RequiresPermissions; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.format.annotation.DateTimeFormat; import org.springframework.stereotype.Controller; import org.springframework.ui.ModelMap; import org.springframework.util.StringUtils; @@ -733,4 +736,16 @@ public class WarehouseStorageOrderController extends BaseController mmap.put("warehouseStorageOrder", warehouseStorageOrder); return prefix + "/storageReturnOrderDetail"; } + + /** + * 获取首页生产订单周产量分析 + */ + @GetMapping("/getIndexList") + @ResponseBody + public List getIndexList(@RequestParam("beginDate") @DateTimeFormat(pattern = "yyyy-MM-dd") Date beginDate, + @RequestParam("endDate") @DateTimeFormat(pattern = "yyyy-MM-dd") Date endDate) + { + List list = warehouseStorageOrderService.getMakeOrderStorageByWeeks(beginDate,endDate); + return list; + } } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/warehouse/mapper/WarehouseStorageOrderMapper.java b/ruoyi-admin/src/main/java/com/ruoyi/warehouse/mapper/WarehouseStorageOrderMapper.java index fdb76437..9fd6617c 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/warehouse/mapper/WarehouseStorageOrderMapper.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/warehouse/mapper/WarehouseStorageOrderMapper.java @@ -1,8 +1,12 @@ package com.ruoyi.warehouse.mapper; +import java.util.Date; import java.util.List; + +import com.ruoyi.system.domain.SysMakeorderBom; import com.ruoyi.warehouse.domain.WarehouseStorageOrder; import com.ruoyi.warehouse.domain.WarehouseStorageOrderDetail; +import org.apache.ibatis.annotations.Param; import org.mapstruct.Mapper; /** @@ -153,4 +157,8 @@ public interface WarehouseStorageOrderMapper * 根据入库单号查询关联单号 */ String selectRelateCodeByCode(String warehouseStorageCode); + + /*首页根据日期区间查找生产订单入库记录*/ + List selectByDateRange(@Param("beginDate") Date beginDate, + @Param("endDate") Date endDate); } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/warehouse/service/IWarehouseStorageOrderService.java b/ruoyi-admin/src/main/java/com/ruoyi/warehouse/service/IWarehouseStorageOrderService.java index 400de56b..ae1429a4 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/warehouse/service/IWarehouseStorageOrderService.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/warehouse/service/IWarehouseStorageOrderService.java @@ -1,5 +1,6 @@ package com.ruoyi.warehouse.service; +import java.util.Date; import java.util.List; import com.ruoyi.quality.domain.QualityOrder; @@ -153,4 +154,7 @@ public interface IWarehouseStorageOrderService * 导出仓库入库单明细 * */ List exportStorageOrderList(List list); + + /*获取首页生产订单周产量(周入库量)信息*/ + List getMakeOrderStorageByWeeks(Date beginDate, Date endDate); } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/warehouse/service/impl/WarehouseStorageOrderServiceImpl.java b/ruoyi-admin/src/main/java/com/ruoyi/warehouse/service/impl/WarehouseStorageOrderServiceImpl.java index c3165eba..54f82a45 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/warehouse/service/impl/WarehouseStorageOrderServiceImpl.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/warehouse/service/impl/WarehouseStorageOrderServiceImpl.java @@ -2,6 +2,9 @@ package com.ruoyi.warehouse.service.impl; import java.util.*; import java.util.function.Function; +import java.math.BigDecimal; +import java.text.SimpleDateFormat; +import java.util.*; import java.util.stream.Collectors; import com.ruoyi.aftersales.mapper.AfterSalesShippingDeviceMapper; @@ -1354,6 +1357,10 @@ public class WarehouseStorageOrderServiceImpl implements IWarehouseStorageOrderS } } //更新入库单的数据 + warehouseStorageOrder.setStorageTime(DateUtils.getNowDate()); + warehouseStorageOrder.setUpdateBy(loginName); + warehouseStorageOrder.setWarehouseEmployee(loginName); + warehouseStorageOrder.setUpdateTime(DateUtils.getNowDate()); int updateResult = warehouseStorageOrderMapper.updateWarehouseStorageOrder(warehouseStorageOrder); if (updateResult <= 0){ throw new BusinessException("更新入库单数据失败,未影响任何行"); @@ -2291,4 +2298,58 @@ public class WarehouseStorageOrderServiceImpl implements IWarehouseStorageOrderS return exportWarehouseStorageOrderVos; } + + /*根据时间区间划分自然周时间段,并获取各时间段生产订单入库周产量*/ + @Override + public List getMakeOrderStorageByWeeks(Date beginDate, Date endDate){ + List list = new ArrayList<>(); + + Calendar calendar = Calendar.getInstance(); + calendar.setTime(beginDate); + Date nowDate = new Date(); + + // 调整到该周的周一 + int dayOfWeek = calendar.get(Calendar.DAY_OF_WEEK); + int daysToMonday = dayOfWeek - Calendar.MONDAY; + if (daysToMonday < 0) { + daysToMonday += 7; // 如果已经是周一,则不需要调整 + } + + calendar.add(Calendar.DAY_OF_YEAR, -daysToMonday); + + while (!calendar.getTime().after(endDate)) { + Date startTime = calendar.getTime(); + + // 设置结束时间为下周的第一天的前一天(即本周的周日) + Calendar endCalendar = (Calendar) calendar.clone(); + endCalendar.add(Calendar.DAY_OF_YEAR, 6); // 加上6天得到本周的周日 + if (endCalendar.getTime().after(nowDate)) { + endCalendar.setTime(nowDate); + } + Date endTime = endCalendar.getTime(); +// System.out.println("Start: " + formatDate(startTime) + ", End: " + formatDate(endTime)); + + List storageOrders = warehouseStorageOrderMapper.selectByDateRange(startTime,endTime); + if(StringUtils.isEmpty(storageOrders)){ + list.add(0); + }else{ + int storageSum = storageOrders.stream() + .filter(Objects::nonNull) // 过滤掉 null 的 WarehouseStorageOrder 对象 + .mapToInt(order -> Optional.ofNullable(order.getStorageNum()).orElse(0)) // 如果 storageNum 为 null,则使用 0 + .sum(); + list.add(storageSum); + } + System.out.println(list); + // 将日历设置为下一周的开始 + calendar.add(Calendar.DAY_OF_YEAR, 7); + } + return list; + } + + /*转换日期格式*/ + private static String formatDate(Date date) { + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); + return sdf.format(date); + } + } diff --git a/ruoyi-admin/src/main/resources/mapper/warehouse/WarehouseStorageOrderMapper.xml b/ruoyi-admin/src/main/resources/mapper/warehouse/WarehouseStorageOrderMapper.xml index 0a612605..d59f5b4d 100644 --- a/ruoyi-admin/src/main/resources/mapper/warehouse/WarehouseStorageOrderMapper.xml +++ b/ruoyi-admin/src/main/resources/mapper/warehouse/WarehouseStorageOrderMapper.xml @@ -342,4 +342,15 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + + \ No newline at end of file