|
@@ -23,9 +23,12 @@ import com.sd.business.entity.order.enums.OrderStatusEnum;
|
|
|
import com.sd.business.entity.order.po.OrderInfo;
|
|
|
import com.sd.business.entity.order.po.OrderPackageBom;
|
|
|
import com.sd.business.entity.order.po.OrderSku;
|
|
|
-import com.sd.business.entity.production.dto.*;
|
|
|
import com.sd.business.entity.order.po.OrderSkuProductionCost;
|
|
|
-import com.sd.business.entity.production.po.ProductionTask;
|
|
|
+import com.sd.business.entity.production.dto.ProductionExceedReceiveDto;
|
|
|
+import com.sd.business.entity.production.dto.ProductionOrderDto;
|
|
|
+import com.sd.business.entity.production.dto.RapidPackagingDto;
|
|
|
+import com.sd.business.entity.production.dto.SetTagDto;
|
|
|
+import com.sd.business.entity.production.po.ProductionWorkOrder;
|
|
|
import com.sd.business.entity.production.vo.ProductionOrderDetailVo;
|
|
|
import com.sd.business.entity.production.vo.ProductionOrderScheduleVo;
|
|
|
import com.sd.business.entity.production.vo.ProductionOrderVo;
|
|
@@ -38,14 +41,14 @@ import com.sd.business.service.inventory.InventoryFinishedService;
|
|
|
import com.sd.business.service.inventory.InventoryService;
|
|
|
import com.sd.business.service.order.OrderPackageBomService;
|
|
|
import com.sd.business.service.order.OrderService;
|
|
|
-import com.sd.business.service.order.OrderSkuService;
|
|
|
import com.sd.business.service.order.OrderSkuProductionCostService;
|
|
|
+import com.sd.business.service.order.OrderSkuService;
|
|
|
import com.sd.business.service.production.ProductionOrderService;
|
|
|
-import com.sd.business.service.production.ProductionTaskService;
|
|
|
-import com.sd.business.service.sku.SkuService;
|
|
|
+import com.sd.business.service.production.ProductionWorkOrderService;
|
|
|
import com.sd.business.service.sku.SkuSpecService;
|
|
|
import com.sd.business.service.statement.StatementOfAccountService;
|
|
|
import com.sd.framework.util.Assert;
|
|
|
+import com.sd.mq.enums.WorkOrderStatusEnum;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
@@ -62,15 +65,9 @@ public class ProductionOrderServiceImpl implements ProductionOrderService {
|
|
|
private ProductionOrderMapper productionOrderMapper;
|
|
|
|
|
|
@Autowired
|
|
|
- private ProductionTaskService productionTaskService;
|
|
|
-
|
|
|
- @Autowired
|
|
|
private SkuSpecService skuSpecService;
|
|
|
|
|
|
@Autowired
|
|
|
- private SkuService skuService;
|
|
|
-
|
|
|
- @Autowired
|
|
|
private OrderService orderService;
|
|
|
|
|
|
@Autowired
|
|
@@ -97,6 +94,9 @@ public class ProductionOrderServiceImpl implements ProductionOrderService {
|
|
|
@Autowired
|
|
|
private InventoryFinishedService inventoryFinishedService;
|
|
|
|
|
|
+ @Autowired
|
|
|
+ private ProductionWorkOrderService productionWorkOrderService;
|
|
|
+
|
|
|
@Override
|
|
|
public Page<ProductionOrderVo> getPage(ProductionOrderDto dto) {
|
|
|
|
|
@@ -112,41 +112,15 @@ public class ProductionOrderServiceImpl implements ProductionOrderService {
|
|
|
|
|
|
Page<ProductionOrderVo> page = productionOrderMapper.getPage(dto.getPage(), wrapper);
|
|
|
List<ProductionOrderVo> records = page.getRecords();
|
|
|
- if (records.size() == 0) {
|
|
|
+ if (records.isEmpty()) {
|
|
|
return page;
|
|
|
}
|
|
|
|
|
|
// 赋值进度
|
|
|
List<Long> orderIdList = records.stream().map(ProductionOrderVo::getOrderId).collect(Collectors.toList());
|
|
|
- List<ProductionTask> productionTaskList = productionTaskService.list(q -> q.in(ProductionTask::getOrderId, orderIdList));
|
|
|
-
|
|
|
- List<ProductionOrderScheduleVo> productionOrderScheduleVoList = productionTaskList.stream()
|
|
|
- .map(item -> ProductionOrderScheduleVo.builder()
|
|
|
- .orderId(item.getOrderId())
|
|
|
- .skuSpecId(item.getSkuSpecId())
|
|
|
- .productionQuantity(item.getProductionQuantity())
|
|
|
- .completeQuantity(item.getCompleteQuantity())
|
|
|
- .build())
|
|
|
- .collect(Collectors.toList());
|
|
|
-
|
|
|
- skuSpecService.attributeAssign(productionOrderScheduleVoList, ProductionOrderScheduleVo::getSkuSpecId,
|
|
|
- (item, skuSpec) -> {
|
|
|
- item.setSkuId(skuSpec.getSkuId());
|
|
|
- item.setSkuSpecCode(skuSpec.getCode());
|
|
|
- item.setSkuSpecName(skuSpec.getName());
|
|
|
- });
|
|
|
-
|
|
|
- skuService.attributeAssign(productionOrderScheduleVoList, ProductionOrderScheduleVo::getSkuId,
|
|
|
- (item, sku) -> {
|
|
|
- item.setSkuName(sku.getName());
|
|
|
- });
|
|
|
-
|
|
|
- Map<Long, List<ProductionOrderScheduleVo>> productionOrderScheduleVoMap = productionOrderScheduleVoList
|
|
|
- .stream().collect(Collectors.groupingBy(ProductionOrderScheduleVo::getOrderId));
|
|
|
-
|
|
|
+ Map<Long, List<ProductionOrderScheduleVo>> map = productionWorkOrderService.getProductionOrderScheduleMap(orderIdList);
|
|
|
for (ProductionOrderVo record : records) {
|
|
|
- record.setProductionOrderScheduleVoList(
|
|
|
- productionOrderScheduleVoMap.getOrDefault(record.getOrderId(), Collections.emptyList()));
|
|
|
+ record.setProductionOrderScheduleVoList(map.getOrDefault(record.getOrderId(), Collections.emptyList()));
|
|
|
}
|
|
|
|
|
|
return page;
|
|
@@ -191,8 +165,16 @@ public class ProductionOrderServiceImpl implements ProductionOrderService {
|
|
|
.set(BasePo::getUpdateUser, SecurityUtils.getUserId())
|
|
|
.set(BasePo::getUpdateTime, date));
|
|
|
|
|
|
- // 订单生产完成时,生产任务一键完成,并生成对账单
|
|
|
- productionTaskService.completeTask(orderId, date);
|
|
|
+ // 订单生产完成时,一键完成生产任务
|
|
|
+ productionWorkOrderService.update(q -> q
|
|
|
+ .eq(ProductionWorkOrder::getOrderId, orderId)
|
|
|
+ .notIn(ProductionWorkOrder::getStatus, WorkOrderStatusEnum.PRODUCTION_ANOMALY.getKey(), WorkOrderStatusEnum.RESCHEDULE.getKey())
|
|
|
+ .set(ProductionWorkOrder::getStatus, WorkOrderStatusEnum.PRODUCTION_COMPLETION.getKey())
|
|
|
+ .set(ProductionWorkOrder::getCompleteTime, date)
|
|
|
+ .set(BasePo::getUpdateTime, date)
|
|
|
+ .set(BasePo::getUpdateUser, SecurityUtils.getUserId()));
|
|
|
+
|
|
|
+ // 生成对账单
|
|
|
StatementOfAccountDto statement = new StatementOfAccountDto();
|
|
|
statement.setDepartmentId(orderInfo.getDepartmentId());
|
|
|
statement.setOrderIdList(Collections.singletonList(orderInfo.getId()));
|
|
@@ -226,10 +208,7 @@ public class ProductionOrderServiceImpl implements ProductionOrderService {
|
|
|
throw new ServiceException("操作失败,订单sku超领明细列表不能为空");
|
|
|
}
|
|
|
Map<Long, BigDecimal> map = exceedReceiveSkuList.stream().collect(Collectors.toMap(
|
|
|
- OrderSkuDto::getBomSpecId,
|
|
|
- OrderSkuDto::getQuantity,
|
|
|
- BigDecimal::add
|
|
|
- ));
|
|
|
+ OrderSkuDto::getBomSpecId, OrderSkuDto::getQuantity, BigDecimal::add));
|
|
|
boolean result = inventoryService.lockStorage(map, WarehouseConstant.SEMI_FINISHED_PRODUCT);
|
|
|
if (!result) {
|
|
|
throw new ServiceException("库存不足,超领失败!");
|
|
@@ -268,7 +247,7 @@ public class ProductionOrderServiceImpl implements ProductionOrderService {
|
|
|
inStorageDto.setApplicant(SecurityUtils.getLoginUser().getUser().getNickName());
|
|
|
inStorageDto.setRemark("订单:" + orderInfo.getCode()
|
|
|
+ (StrUtil.isBlank(orderInfo.getWlnCode()) ? StringPool.EMPTY : "(" + orderInfo.getWlnCode() + ")")
|
|
|
- +"超领报废入库");
|
|
|
+ + "超领报废入库");
|
|
|
inStorageDto.setInOutStorageBomList(inOutStorageBomList);
|
|
|
inOutStorageService.add(inStorageDto);
|
|
|
// 人为损坏, 新增订单生产成本的材料成本
|
|
@@ -279,8 +258,8 @@ public class ProductionOrderServiceImpl implements ProductionOrderService {
|
|
|
Map<Long, OrderSkuProductionCost> orderSkuProductionCostMap = orderSkuProductionCostService.mapKEntity(
|
|
|
OrderSkuProductionCost::getOrderSkuId,
|
|
|
q -> q.eq(OrderSkuProductionCost::getOrderId, orderId)
|
|
|
- .in(OrderSkuProductionCost::getOrderSkuId, orderSkuIds)
|
|
|
- );
|
|
|
+ .in(OrderSkuProductionCost::getOrderSkuId, orderSkuIds)
|
|
|
+ );
|
|
|
for (OrderSkuDto orderSkuDto : exceedReceiveSkuList) {
|
|
|
BomSpec bomSpec = bomSpecMap.get(orderSkuDto.getBomSpecId());
|
|
|
OrderSkuProductionCost orderSkuProductionCost = orderSkuProductionCostMap.get(orderSkuDto.getId());
|