|
@@ -3,8 +3,10 @@ package com.sd.business.service.board.impl;
|
|
|
import cn.hutool.core.bean.BeanUtil;
|
|
|
import cn.hutool.core.date.DateUtil;
|
|
|
import cn.hutool.core.util.ObjectUtil;
|
|
|
+import com.ruoyi.common.constant.StatusConstant;
|
|
|
import com.ruoyi.common.core.domain.BaseIdPo;
|
|
|
import com.ruoyi.common.core.domain.BasePo;
|
|
|
+import com.ruoyi.common.exception.ServiceException;
|
|
|
import com.sd.business.entity.board.dto.DailyBoardSelectDto;
|
|
|
import com.sd.business.entity.board.vo.*;
|
|
|
import com.sd.business.entity.bom.bo.BomSpecBo;
|
|
@@ -18,6 +20,7 @@ import com.sd.business.entity.order.po.OrderSku;
|
|
|
import com.sd.business.entity.outbound.po.OutboundOrder;
|
|
|
import com.sd.business.entity.production.po.ProductionTask;
|
|
|
import com.sd.business.entity.sku.po.SkuSpec;
|
|
|
+import com.sd.business.entity.statement.po.StatementOfAccount;
|
|
|
import com.sd.business.service.board.DailyBoardService;
|
|
|
import com.sd.business.service.bom.BomSpecService;
|
|
|
import com.sd.business.service.department.DepartmentService;
|
|
@@ -28,6 +31,7 @@ import com.sd.business.service.order.OrderSkuService;
|
|
|
import com.sd.business.service.outbound.OutboundOrderService;
|
|
|
import com.sd.business.service.production.ProductionTaskService;
|
|
|
import com.sd.business.service.sku.SkuSpecService;
|
|
|
+import com.sd.business.service.statement.StatementOfAccountService;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
@@ -68,6 +72,9 @@ public class DailyBoardServiceImpl implements DailyBoardService {
|
|
|
@Autowired
|
|
|
private DepartmentService departmentService;
|
|
|
|
|
|
+ @Autowired
|
|
|
+ private StatementOfAccountService statementOfAccountService;
|
|
|
+
|
|
|
|
|
|
@Override
|
|
|
public List<DailyBoardOutStorageBomVo> getProductionOutStorageList(DailyBoardSelectDto dto) {
|
|
@@ -526,4 +533,39 @@ public class DailyBoardServiceImpl implements DailyBoardService {
|
|
|
vo.setOutStorageBomList(new ArrayList<>(outStorageBomMap.values()));
|
|
|
return vo;
|
|
|
}
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void checkStatementOfAccount(DailyBoardSelectDto dto) {
|
|
|
+ Date beginDate = DateUtil.beginOfDay(dto.getBeginDate());
|
|
|
+ Date endDate = DateUtil.endOfDay(dto.getEndDate());
|
|
|
+ // 查询佰卓和实业的事业部id
|
|
|
+ List<Department> departmentList = departmentService.list(q -> q.like(Department::getName, "实业").or().eq(Department::getName, "佰卓").select(BaseIdPo::getId));
|
|
|
+ List<Long> departmentIds = departmentList.stream().map(BaseIdPo::getId).collect(Collectors.toList());
|
|
|
+ // 查询今日生成完成任务
|
|
|
+ List<ProductionTask> productionTaskList = productionTaskService.list(q -> q.between(ProductionTask::getCompleteTime, beginDate, endDate));
|
|
|
+ List<Long> orderIds = productionTaskList.stream().map(ProductionTask::getOrderId).collect(Collectors.toList());
|
|
|
+ long productionOrderCount = orderService.count(q -> q.in(OrderInfo::getDepartmentId, departmentIds).in(BaseIdPo::getId, orderIds));
|
|
|
+
|
|
|
+ // 查询今日出库单出库数据
|
|
|
+ List<OutboundOrder> outboundOrderList = outboundOrderService.list(q -> q.between(OutboundOrder::getOutboundTime, beginDate, endDate));
|
|
|
+ List<String> wlnCodes = outboundOrderList.stream().map(OutboundOrder::getOrderWlnCode).collect(Collectors.toList());
|
|
|
+ long wlnOrderCount = orderService.count(q -> q.in(OrderInfo::getDepartmentId, departmentIds).in(OrderInfo::getWlnCode, wlnCodes));
|
|
|
+ if (ObjectUtil.notEqual(productionOrderCount, wlnOrderCount)) {
|
|
|
+ throw new ServiceException("核对失败,订单总数存在差异!");
|
|
|
+ }
|
|
|
+
|
|
|
+ // 查询bom总数
|
|
|
+ BigDecimal productionBomQuantity = productionTaskList.stream().map(ProductionTask::getCompleteQuantity).reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
+ BigDecimal outboundBomQuantity = outboundOrderList.stream().map(OutboundOrder::getQuantity).reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
+
|
|
|
+ if (ObjectUtil.notEqual(productionBomQuantity, outboundBomQuantity)) {
|
|
|
+ throw new ServiceException("核对失败,bom出库总数存在差异!");
|
|
|
+ }
|
|
|
+
|
|
|
+ // 更新对账单核对状态
|
|
|
+ statementOfAccountService.update(q -> q
|
|
|
+ .set(StatementOfAccount::getCheckStatus, StatusConstant.YES)
|
|
|
+ .in(StatementOfAccount::getDepartmentId, departmentIds)
|
|
|
+ .between(StatementOfAccount::getTimePeriod, beginDate, endDate));
|
|
|
+ }
|
|
|
}
|