|
@@ -4,11 +4,11 @@ import cn.hutool.core.convert.Convert;
|
|
|
import cn.hutool.core.util.ObjectUtil;
|
|
|
import cn.hutool.core.util.StrUtil;
|
|
|
import com.baomidou.dynamic.datasource.annotation.DSTransactional;
|
|
|
+import com.baomidou.mybatisplus.core.toolkit.IdWorker;
|
|
|
import com.baomidou.mybatisplus.core.toolkit.StringPool;
|
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
import com.fjhx.file.utils.ObsFileUtil;
|
|
|
-import com.fjhx.flow.enums.FlowStatusEnum;
|
|
|
import com.ruoyi.common.annotation.LogicIgnore;
|
|
|
import com.ruoyi.common.constant.StatusConstant;
|
|
|
import com.ruoyi.common.core.domain.BaseIdPo;
|
|
@@ -16,7 +16,6 @@ import com.ruoyi.common.core.domain.BasePo;
|
|
|
import com.ruoyi.common.core.domain.BaseSelectDto;
|
|
|
import com.ruoyi.common.exception.ServiceException;
|
|
|
import com.ruoyi.common.utils.SecurityUtils;
|
|
|
-import com.ruoyi.system.service.ISysRoleService;
|
|
|
import com.ruoyi.system.service.ISysUserService;
|
|
|
import com.sd.business.entity.bom.bo.BomSpecBo;
|
|
|
import com.sd.business.entity.bom.po.Bom;
|
|
@@ -57,7 +56,6 @@ import com.sd.business.service.bom.BomService;
|
|
|
import com.sd.business.service.bom.BomSpecService;
|
|
|
import com.sd.business.service.department.DepartmentService;
|
|
|
import com.sd.business.service.in.InOutStorageService;
|
|
|
-import com.sd.business.service.inventory.InventoryFinishedService;
|
|
|
import com.sd.business.service.order.OrderInfoService;
|
|
|
import com.sd.business.service.order.OrderPackageBomService;
|
|
|
import com.sd.business.service.order.OrderSkuBomService;
|
|
@@ -125,15 +123,9 @@ public class OrderInfoServiceImpl extends ServiceImpl<OrderInfoMapper, OrderInfo
|
|
|
private InOutStorageService inOutStorageService;
|
|
|
|
|
|
@Autowired
|
|
|
- private InventoryFinishedService inventoryFinishedService;
|
|
|
-
|
|
|
- @Autowired
|
|
|
private ISysUserService sysUserService;
|
|
|
|
|
|
@Autowired
|
|
|
- private ISysRoleService roleService;
|
|
|
-
|
|
|
- @Autowired
|
|
|
private SkuSpecService skuSpecService;
|
|
|
|
|
|
@Autowired
|
|
@@ -280,216 +272,80 @@ public class OrderInfoServiceImpl extends ServiceImpl<OrderInfoMapper, OrderInfo
|
|
|
@DSTransactional
|
|
|
@Override
|
|
|
public void add(OrderInfoDto dto) {
|
|
|
- List<OrderSkuDto> orderSkuList = dto.getOrderSkuList();
|
|
|
|
|
|
// 新增订单
|
|
|
+ dto.setId(IdWorker.getId());
|
|
|
dto.setSource(1);
|
|
|
dto.setCode("PI" + new Date().getTime());
|
|
|
dto.setSettlementStatus(1);
|
|
|
dto.setTaxRate(BigDecimal.TEN);
|
|
|
dto.setTag("0");
|
|
|
dto.setExceptionType(OrderExceptionTypeEnum.NORMAL.getKey().toString());
|
|
|
+ dto.setClassify(OrderClassifyEnum.PURCHASE_ORDER.getKey());
|
|
|
|
|
|
- // 拥有采购角色的账号创建的自主订单为采购订单
|
|
|
- if (Objects.equals(dto.getType(), 1)) {
|
|
|
- Long userId = SecurityUtils.getUserId();
|
|
|
- Set<String> roleKeys = roleService.selectRolePermissionByUserId(userId);
|
|
|
- if (!Collections.disjoint(roleKeys, Arrays.asList("sypurchasing", "purchasingOfficer", "bzpurchasing"))) {
|
|
|
- dto.setClassify(OrderClassifyEnum.PURCHASE_ORDER.getKey());
|
|
|
- }
|
|
|
- }
|
|
|
- // 订单为委外订单时,订单分类为委外订单
|
|
|
- else if (Objects.equals(dto.getType(), 2)) {
|
|
|
- dto.setClassify(OrderClassifyEnum.OUTSOURCE_ORDER.getKey());
|
|
|
-
|
|
|
- // 委外订单修改金额
|
|
|
- dto.setProductTotalAmount(BigDecimal.ZERO);
|
|
|
- dto.setDeliveryMaterialsFee(BigDecimal.ZERO);
|
|
|
- dto.setManagementFee(BigDecimal.ZERO);
|
|
|
- dto.setPackingLabor(dto.getPackingLabor().multiply(new BigDecimal(2)));
|
|
|
- dto.setTotalAmount(dto.getProductTotalAmount()
|
|
|
- .add(dto.getCustomProcessingFee())
|
|
|
- .add(dto.getLssueFee())
|
|
|
- .add(dto.getDeliveryMaterialsFee())
|
|
|
- .add(dto.getPackingLabor())
|
|
|
- .add(dto.getPackagingMaterialCost())
|
|
|
- .add(dto.getManagementFee()));
|
|
|
- }
|
|
|
-
|
|
|
- save(dto);
|
|
|
-
|
|
|
- // 新增订单产品包材配件
|
|
|
- List<OrderSku> tempOrderSkuList = orderSkuList.stream()
|
|
|
- .peek(item -> item.setOrderId(dto.getId()))
|
|
|
- .peek(item -> {
|
|
|
- // 委外订单修改金额
|
|
|
- if (ObjectUtil.equals(dto.getType(), 2)) {
|
|
|
- item.setUnitPrice(BigDecimal.ZERO);
|
|
|
- item.setLssueFee(BigDecimal.ZERO);
|
|
|
- item.setDeliveryMaterialsFee(BigDecimal.ZERO);
|
|
|
- item.setManagementFee(BigDecimal.ZERO);
|
|
|
- item.setPackingLabor(item.getPackingLabor().multiply(new BigDecimal(2)));
|
|
|
- }
|
|
|
- })
|
|
|
- .map(item -> (OrderSku) item)
|
|
|
- .collect(Collectors.toList());
|
|
|
- orderSkuService.saveBatch(tempOrderSkuList);
|
|
|
+ // 保存订单sku列表
|
|
|
+ List<OrderSku> orderSkuList = getOrderSkuList(dto);
|
|
|
+ orderSkuService.saveBatch(orderSkuList);
|
|
|
|
|
|
- // 新增订单产品包装信息
|
|
|
- List<OrderSkuBom> orderSkuBomList = orderSkuList.stream()
|
|
|
- .flatMap(orderSku -> orderSku.getOrderSkuBomList().stream()
|
|
|
- .peek(orderSkuBom -> orderSkuBom.setOrderId(dto.getId()))
|
|
|
- .peek(orderSkuBom -> orderSkuBom.setOrderSkuId(orderSku.getId())))
|
|
|
- .collect(Collectors.toList());
|
|
|
+ // 保存订单sku包材信息
|
|
|
+ List<OrderSkuBom> orderSkuBomList = getOrderSkuBomList(dto);
|
|
|
orderSkuBomService.saveBatch(orderSkuBomList);
|
|
|
|
|
|
+ // 保存订单包装信息
|
|
|
+ List<OrderPackageBom> orderPackageBomList = getOrderPackageBomList(dto);
|
|
|
+ if (ObjectUtil.isNotEmpty(orderPackageBomList)) {
|
|
|
+ orderPackageBomService.saveBatch(orderPackageBomList);
|
|
|
+ }
|
|
|
+
|
|
|
// 新增订单产品生产成本
|
|
|
- Map<Long, List<OrderSkuBom>> orderSkuBomMap = orderSkuBomList.stream().collect(Collectors.groupingBy(OrderSkuBom::getOrderSkuId));
|
|
|
- List<OrderSkuProductionCost> orderSkuProductionCostList = tempOrderSkuList.stream().map(item -> {
|
|
|
- OrderSkuProductionCost orderSkuProductionCost = new OrderSkuProductionCost();
|
|
|
- orderSkuProductionCost.setOrderId(item.getOrderId());
|
|
|
- orderSkuProductionCost.setOrderSkuId(item.getId());
|
|
|
- // 材料成本
|
|
|
- orderSkuProductionCost.setMaterialCost(item.getUnitPrice().multiply(item.getQuantity()));
|
|
|
- // 辅料成本暂时没有默认为零
|
|
|
- orderSkuProductionCost.setAuxiliaryMaterialCost(BigDecimal.ZERO);
|
|
|
- // 产品包材成本
|
|
|
- List<OrderSkuBom> bomList = orderSkuBomMap.getOrDefault(item.getId(), new ArrayList<>());
|
|
|
- BigDecimal productPackagingMaterialCost = bomList.stream()
|
|
|
- .map(orderSkuBom -> orderSkuBom.getQuantity()
|
|
|
- .multiply(orderSkuBom.getUnitPrice())
|
|
|
- .multiply(item.getQuantity()))
|
|
|
- .reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
- orderSkuProductionCost.setProductPackagingMaterialCost(productPackagingMaterialCost);
|
|
|
- // 物流包材成本
|
|
|
- orderSkuProductionCost.setLogisticsPackagingMaterialCost(item.getDeliveryMaterialsFee().multiply(item.getQuantity()));
|
|
|
- orderSkuProductionCost.setTotalAmount(orderSkuProductionCost.getMaterialCost()
|
|
|
- .add(orderSkuProductionCost.getAuxiliaryMaterialCost())
|
|
|
- .add(orderSkuProductionCost.getProductPackagingMaterialCost())
|
|
|
- .add(orderSkuProductionCost.getLogisticsPackagingMaterialCost()));
|
|
|
- return orderSkuProductionCost;
|
|
|
- }).collect(Collectors.toList());
|
|
|
+ List<OrderSkuProductionCost> orderSkuProductionCostList = getOrderSkuProductionCostList(orderSkuList, orderSkuBomList);
|
|
|
orderSkuProductionCostService.saveBatch(orderSkuProductionCostList);
|
|
|
|
|
|
- // 是委外订单并且没有包材时,修改订单状态为生产中,并生成生产任务和工单
|
|
|
- if (ObjectUtil.notEqual(dto.getStatus(), OrderStatusEnum.DRAFT.getKey())
|
|
|
- && ObjectUtil.equal(dto.getFlowStatus(), FlowStatusEnum.PASS.getKey())
|
|
|
- && ObjectUtil.equals(dto.getType(), 2)
|
|
|
- && ObjectUtil.isEmpty(orderSkuBomList)) {
|
|
|
- dto.setStatus(OrderStatusEnum.IN_PRODUCTION.getKey());
|
|
|
- update(q -> q.set(OrderInfo::getStatus, OrderStatusEnum.IN_PRODUCTION.getKey()).eq(BaseIdPo::getId, dto.getId()));
|
|
|
- }
|
|
|
+ // 保存订单
|
|
|
+ save(dto);
|
|
|
|
|
|
- // 保存订单包装信息
|
|
|
- if (ObjectUtil.isNotEmpty(dto.getOrderPackageBomList())) {
|
|
|
- List<OrderPackageBomDto> tempOrderPackageBomList = dto.getOrderPackageBomList();
|
|
|
- List<OrderPackageBom> orderPackageBomList = tempOrderPackageBomList.stream()
|
|
|
- .peek(item -> item.setOrderId(dto.getId()))
|
|
|
- .map(item -> (OrderPackageBom) item)
|
|
|
- .collect(Collectors.toList());
|
|
|
- orderPackageBomService.saveBatch(orderPackageBomList);
|
|
|
- }
|
|
|
+ // 保存附件
|
|
|
+ ObsFileUtil.saveFile(dto.getFileList(), dto.getId());
|
|
|
|
|
|
// 保存产品不干胶图稿
|
|
|
- for (OrderSkuDto item : orderSkuList) {
|
|
|
+ for (OrderSkuDto item : dto.getOrderSkuList()) {
|
|
|
ObsFileUtil.saveFile(item.getSelfAdhesiveStickerFile(), item.getId());
|
|
|
}
|
|
|
|
|
|
- // 保存附件
|
|
|
- ObsFileUtil.saveFile(dto.getFileList(), dto.getId());
|
|
|
}
|
|
|
|
|
|
@DSTransactional
|
|
|
@Override
|
|
|
public void edit(OrderInfoDto dto) {
|
|
|
- // 拥有采购角色的账号创建的自主订单为采购订单
|
|
|
- if (Objects.equals(dto.getType(), 1)) {
|
|
|
- Long userId = dto.getCreateUser();
|
|
|
- Set<String> roleKeys = roleService.selectRolePermissionByUserId(userId);
|
|
|
- if (!Collections.disjoint(roleKeys, Arrays.asList("sypurchasing", "purchasingOfficer", "bzpurchasing"))) {
|
|
|
- dto.setClassify(OrderClassifyEnum.PURCHASE_ORDER.getKey());
|
|
|
- }
|
|
|
- }
|
|
|
- // 订单为委外订单时,订单分类为委外订单
|
|
|
- else if (Objects.equals(dto.getType(), 2)) {
|
|
|
- dto.setClassify(OrderClassifyEnum.OUTSOURCE_ORDER.getKey());
|
|
|
- }
|
|
|
|
|
|
- // 更新订单
|
|
|
- updateById(dto);
|
|
|
-
|
|
|
- // 更新订单产品
|
|
|
- List<OrderSkuDto> orderSkuList = dto.getOrderSkuList();
|
|
|
- List<OrderSku> tempOrderSkuList = orderSkuList.stream()
|
|
|
- .peek(item -> item.setOrderId(dto.getId()))
|
|
|
- .map(item -> (OrderSku) item)
|
|
|
- .collect(Collectors.toList());
|
|
|
- orderSkuService.editLinked(tempOrderSkuList, OrderSku::getOrderId, dto.getId());
|
|
|
+ // 更新订单sku列表
|
|
|
+ List<OrderSku> orderSkuList = getOrderSkuList(dto);
|
|
|
+ orderSkuService.editLinked(orderSkuList, OrderSku::getOrderId, dto.getId());
|
|
|
|
|
|
- // 更新订单产品包材配件
|
|
|
- List<OrderSkuBom> orderSkuBomList = orderSkuList.stream()
|
|
|
- .flatMap(orderSku -> orderSku.getOrderSkuBomList().stream()
|
|
|
- .peek(orderSkuBom -> orderSkuBom.setOrderId(dto.getId()))
|
|
|
- .peek(orderSkuBom -> orderSkuBom.setOrderSkuId(orderSku.getId())))
|
|
|
- .collect(Collectors.toList());
|
|
|
+ // 更新订单sku包材信息
|
|
|
+ List<OrderSkuBom> orderSkuBomList = getOrderSkuBomList(dto);
|
|
|
orderSkuBomService.editLinked(orderSkuBomList, OrderSkuBom::getOrderId, dto.getId());
|
|
|
|
|
|
- // 新增订单产品生产成本
|
|
|
- Map<Long, List<OrderSkuBom>> orderSkuBomMap = orderSkuBomList.stream().collect(Collectors.groupingBy(OrderSkuBom::getOrderSkuId));
|
|
|
- List<OrderSkuProductionCost> orderSkuProductionCostList = tempOrderSkuList.stream().map(item -> {
|
|
|
- OrderSkuProductionCost orderSkuProductionCost = new OrderSkuProductionCost();
|
|
|
- orderSkuProductionCost.setOrderId(item.getOrderId());
|
|
|
- orderSkuProductionCost.setOrderSkuId(item.getId());
|
|
|
- // 材料成本
|
|
|
- orderSkuProductionCost.setMaterialCost(item.getUnitPrice().multiply(item.getQuantity()));
|
|
|
- // 辅料成本暂时没有默认为零
|
|
|
- orderSkuProductionCost.setAuxiliaryMaterialCost(BigDecimal.ZERO);
|
|
|
- // 产品包材成本
|
|
|
- List<OrderSkuBom> bomList = orderSkuBomMap.getOrDefault(item.getId(), new ArrayList<>());
|
|
|
- BigDecimal productPackagingMaterialCost = bomList.stream()
|
|
|
- .map(orderSkuBom -> orderSkuBom.getQuantity()
|
|
|
- .multiply(orderSkuBom.getUnitPrice())
|
|
|
- .multiply(item.getQuantity()))
|
|
|
- .reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
- orderSkuProductionCost.setProductPackagingMaterialCost(productPackagingMaterialCost);
|
|
|
- // 物流包材成本
|
|
|
- orderSkuProductionCost.setLogisticsPackagingMaterialCost(item.getDeliveryMaterialsFee()
|
|
|
- .multiply(item.getQuantity()));
|
|
|
- orderSkuProductionCost.setTotalAmount(
|
|
|
- orderSkuProductionCost.getMaterialCost()
|
|
|
- .add(orderSkuProductionCost.getAuxiliaryMaterialCost())
|
|
|
- .add(orderSkuProductionCost.getProductPackagingMaterialCost())
|
|
|
- .add(orderSkuProductionCost.getLogisticsPackagingMaterialCost()));
|
|
|
- return orderSkuProductionCost;
|
|
|
- }).collect(Collectors.toList());
|
|
|
- orderSkuProductionCostService.editLinked(orderSkuProductionCostList, OrderSkuProductionCost::getOrderId, dto.getId());
|
|
|
-
|
|
|
- // 是委外订单并且没有包材时,修改订单状态为生产中,并生成生产任务和工单
|
|
|
- if (ObjectUtil.equals(dto.getStatus(), OrderStatusEnum.SCHEDULING.getKey())
|
|
|
- && ObjectUtil.equals(dto.getType(), 2)
|
|
|
- && ObjectUtil.isEmpty(orderSkuBomList)) {
|
|
|
- dto.setStatus(OrderStatusEnum.IN_PRODUCTION.getKey());
|
|
|
- update(q -> q.set(OrderInfo::getStatus, OrderStatusEnum.IN_PRODUCTION.getKey()).eq(BaseIdPo::getId, dto.getId()));
|
|
|
- }
|
|
|
-
|
|
|
- // 更新订单产品包装信息
|
|
|
- List<OrderPackageBomDto> tempOrderPackageBomList = dto.getOrderPackageBomList();
|
|
|
- if (tempOrderPackageBomList == null) {
|
|
|
- tempOrderPackageBomList = new ArrayList<>();
|
|
|
- }
|
|
|
- List<OrderPackageBom> orderPackageBomList = tempOrderPackageBomList.stream()
|
|
|
- .peek(item -> item.setOrderId(dto.getId()))
|
|
|
- .map(item -> (OrderPackageBom) item)
|
|
|
- .collect(Collectors.toList());
|
|
|
+ // 更新订单包装信息
|
|
|
+ List<OrderPackageBom> orderPackageBomList = getOrderPackageBomList(dto);
|
|
|
orderPackageBomService.editLinked(orderPackageBomList, OrderPackageBom::getOrderId, dto.getId());
|
|
|
|
|
|
+ // 更新订单产品生产成本
|
|
|
+ List<OrderSkuProductionCost> orderSkuProductionCostList = getOrderSkuProductionCostList(orderSkuList, orderSkuBomList);
|
|
|
+ orderSkuProductionCostService.remove(q -> q.eq(OrderSkuProductionCost::getOrderId, dto.getId()));
|
|
|
+ orderSkuProductionCostService.saveBatch(orderSkuProductionCostList);
|
|
|
+
|
|
|
+ // 更新订单
|
|
|
+ updateById(dto);
|
|
|
+
|
|
|
+ // 更新订单附件
|
|
|
+ ObsFileUtil.editFile(dto.getFileList(), dto.getId());
|
|
|
+
|
|
|
// 更新订单产品不干胶图稿
|
|
|
- for (OrderSkuDto item : orderSkuList) {
|
|
|
+ for (OrderSkuDto item : dto.getOrderSkuList()) {
|
|
|
ObsFileUtil.editFile(item.getSelfAdhesiveStickerFile(), item.getId());
|
|
|
}
|
|
|
|
|
|
- // 更新订单附件
|
|
|
- ObsFileUtil.editFile(dto.getFileList(), dto.getId());
|
|
|
}
|
|
|
|
|
|
@DSTransactional
|
|
@@ -524,122 +380,9 @@ public class OrderInfoServiceImpl extends ServiceImpl<OrderInfoMapper, OrderInfo
|
|
|
throw new ServiceException("订单不在草稿或待确认状态");
|
|
|
}
|
|
|
|
|
|
- // 订单为委外订单时,订单分类为委外订单,订单费用修改
|
|
|
- if (Objects.equals(dto.getType(), 2)) {
|
|
|
- dto.setClassify(OrderClassifyEnum.OUTSOURCE_ORDER.getKey());
|
|
|
- if (!Objects.equals(dto.getSource(), 1)) {
|
|
|
- dto.setLssueFee(BigDecimal.ZERO);
|
|
|
- }
|
|
|
- dto.setProductTotalAmount(BigDecimal.ZERO);
|
|
|
- dto.setDeliveryMaterialsFee(BigDecimal.ZERO);
|
|
|
- dto.setManagementFee(BigDecimal.ZERO);
|
|
|
- dto.setPackingLabor(dto.getPackingLabor().multiply(new BigDecimal(2)));
|
|
|
- dto.setTotalAmount(dto.getProductTotalAmount()
|
|
|
- .add(dto.getCustomProcessingFee())
|
|
|
- .add(dto.getLssueFee())
|
|
|
- .add(dto.getDeliveryMaterialsFee())
|
|
|
- .add(dto.getPackingLabor())
|
|
|
- .add(dto.getPackagingMaterialCost())
|
|
|
- .add(dto.getManagementFee()));
|
|
|
- // 清空订单快递包材
|
|
|
- dto.setOrderPackageBomList(null);
|
|
|
- } else if (Objects.equals(dto.getType(), 1)) {
|
|
|
- // 拥有采购角色的账号创建的自主订单为采购订单
|
|
|
- Long userId = dto.getCreateUser();
|
|
|
- Set<String> roleKeys = roleService.selectRolePermissionByUserId(userId);
|
|
|
- if (!Collections.disjoint(roleKeys, Arrays.asList("sypurchasing", "purchasingOfficer", "bzpurchasing"))) {
|
|
|
- dto.setClassify(OrderClassifyEnum.PURCHASE_ORDER.getKey());
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- // 更新订单
|
|
|
dto.setStatus(OrderStatusEnum.SCHEDULING.getKey());
|
|
|
- updateById(dto);
|
|
|
-
|
|
|
- // 更新订单产品
|
|
|
- List<OrderSku> tempOrderSkuList = dto.getOrderSkuList().stream()
|
|
|
- .peek(item -> {
|
|
|
- item.setOrderId(dto.getId());
|
|
|
- // 委外订单修改金额
|
|
|
- if (ObjectUtil.equals(dto.getType(), 2)) {
|
|
|
- item.setUnitPrice(BigDecimal.ZERO);
|
|
|
- item.setLssueFee(BigDecimal.ZERO);
|
|
|
- item.setDeliveryMaterialsFee(BigDecimal.ZERO);
|
|
|
- item.setManagementFee(BigDecimal.ZERO);
|
|
|
- item.setPackingLabor(item.getPackingLabor().multiply(new BigDecimal(2)));
|
|
|
- }
|
|
|
- })
|
|
|
- .map(item -> (OrderSku) item)
|
|
|
- .collect(Collectors.toList());
|
|
|
- orderSkuService.editLinked(tempOrderSkuList, OrderSku::getOrderId, dto.getId());
|
|
|
-
|
|
|
- // 更新包材
|
|
|
- List<OrderSkuBom> orderSkuBomList = dto.getOrderSkuList().stream()
|
|
|
- .flatMap(orderSku -> orderSku.getOrderSkuBomList().stream()
|
|
|
- .peek(orderSkuBom -> orderSkuBom.setOrderId(dto.getId()))
|
|
|
- .peek(orderSkuBom -> orderSkuBom.setOrderSkuId(orderSku.getId())))
|
|
|
- .collect(Collectors.toList());
|
|
|
- orderSkuBomService.editLinked(orderSkuBomList, OrderSkuBom::getOrderId, dto.getId());
|
|
|
-
|
|
|
- // 新增订单产品生产成本
|
|
|
- Map<Long, List<OrderSkuBom>> orderSkuBomMap = orderSkuBomList.stream().collect(Collectors.groupingBy(OrderSkuBom::getOrderSkuId));
|
|
|
- List<OrderSkuProductionCost> orderSkuProductionCostList = tempOrderSkuList.stream().map(item -> {
|
|
|
- OrderSkuProductionCost orderSkuProductionCost = new OrderSkuProductionCost();
|
|
|
- orderSkuProductionCost.setOrderId(item.getOrderId());
|
|
|
- orderSkuProductionCost.setOrderSkuId(item.getId());
|
|
|
- // 材料成本
|
|
|
- orderSkuProductionCost.setMaterialCost(item.getUnitPrice().multiply(item.getQuantity()));
|
|
|
- // 辅料成本暂时没有默认为零
|
|
|
- orderSkuProductionCost.setAuxiliaryMaterialCost(BigDecimal.ZERO);
|
|
|
- // 产品包材成本
|
|
|
- List<OrderSkuBom> bomList = orderSkuBomMap.getOrDefault(item.getId(), new ArrayList<>());
|
|
|
- BigDecimal productPackagingMaterialCost = bomList.stream()
|
|
|
- .map(orderSkuBom -> orderSkuBom.getQuantity()
|
|
|
- .multiply(orderSkuBom.getUnitPrice())
|
|
|
- .multiply(item.getQuantity()))
|
|
|
- .reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
- orderSkuProductionCost.setProductPackagingMaterialCost(productPackagingMaterialCost);
|
|
|
- // 物流包材成本
|
|
|
- orderSkuProductionCost.setLogisticsPackagingMaterialCost(item.getDeliveryMaterialsFee()
|
|
|
- .multiply(item.getQuantity()));
|
|
|
- orderSkuProductionCost.setTotalAmount(
|
|
|
- orderSkuProductionCost.getMaterialCost()
|
|
|
- .add(orderSkuProductionCost.getAuxiliaryMaterialCost())
|
|
|
- .add(orderSkuProductionCost.getProductPackagingMaterialCost())
|
|
|
- .add(orderSkuProductionCost.getLogisticsPackagingMaterialCost()));
|
|
|
- return orderSkuProductionCost;
|
|
|
- }).collect(Collectors.toList());
|
|
|
- orderSkuProductionCostService.editLinked(orderSkuProductionCostList, OrderSkuProductionCost::getOrderId, dto.getId());
|
|
|
-
|
|
|
- // 是委外订单并且没有包材时,修改订单状态为生产中
|
|
|
- if (ObjectUtil.equals(dto.getStatus(), OrderStatusEnum.SCHEDULING.getKey())
|
|
|
- && ObjectUtil.equals(dto.getType(), 2)
|
|
|
- && ObjectUtil.isEmpty(orderSkuBomList)) {
|
|
|
- dto.setStatus(OrderStatusEnum.IN_PRODUCTION.getKey());
|
|
|
- update(q -> q.set(OrderInfo::getStatus, OrderStatusEnum.IN_PRODUCTION.getKey()).eq(BaseIdPo::getId, dto.getId()));
|
|
|
- }
|
|
|
-
|
|
|
- // 更新订单产品包装信息
|
|
|
- List<OrderPackageBomDto> tempOrderPackageBomList = dto.getOrderPackageBomList();
|
|
|
- if (tempOrderPackageBomList == null) {
|
|
|
- tempOrderPackageBomList = new ArrayList<>();
|
|
|
- }
|
|
|
- List<OrderPackageBom> orderPackageBomList = tempOrderPackageBomList.stream()
|
|
|
- .peek(item -> item.setOrderId(dto.getId()))
|
|
|
- .map(item -> (OrderPackageBom) item)
|
|
|
- .collect(Collectors.toList());
|
|
|
- orderPackageBomService.editLinked(orderPackageBomList, OrderPackageBom::getOrderId, dto.getId());
|
|
|
-
|
|
|
- // 更新产品不干胶图稿
|
|
|
- for (OrderSkuDto item : dto.getOrderSkuList()) {
|
|
|
- ObsFileUtil.editFile(item.getSelfAdhesiveStickerFile(), item.getId());
|
|
|
- }
|
|
|
-
|
|
|
- // 更新附件
|
|
|
- ObsFileUtil.editFile(dto.getFileList(), dto.getId());
|
|
|
+ edit(dto);
|
|
|
|
|
|
- // 发送mq下载临时图稿
|
|
|
- sendMq(dto);
|
|
|
}
|
|
|
|
|
|
@Override
|
|
@@ -941,58 +684,6 @@ public class OrderInfoServiceImpl extends ServiceImpl<OrderInfoMapper, OrderInfo
|
|
|
ExcelUtil.export(response, exportVoList, OrderSkuExportVo.class);
|
|
|
}
|
|
|
|
|
|
- /**
|
|
|
- * 主材出库
|
|
|
- */
|
|
|
- private void semiFinishedProductOutStorage(List<InOutStorageBom> inOutStorageBomList, Map<Long, BomSpecBo> bomSpecBoMap, OrderInfo orderInfo) {
|
|
|
- List<InOutStorageBom> semiFinishedProductInOutStorageBomList = inOutStorageBomList
|
|
|
- .stream()
|
|
|
- .filter(item -> {
|
|
|
- BomSpecBo tempBomSpecBo = bomSpecBoMap.get(item.getBomSpecId());
|
|
|
- if (tempBomSpecBo == null) {
|
|
|
- return false;
|
|
|
- }
|
|
|
- return ObjectUtil.equal(tempBomSpecBo.getClassifyParentId(), 1L);
|
|
|
- })
|
|
|
- .collect(Collectors.toList());
|
|
|
- InOutStorageDto semiFinishedProductInOutStorageDto = new InOutStorageDto();
|
|
|
- semiFinishedProductInOutStorageDto.setType(InOutTypeEnum.IN.getKey());
|
|
|
- semiFinishedProductInOutStorageDto.setDetailType(InDetailTypeEnum.RETURN_GOODS.getKey());
|
|
|
- semiFinishedProductInOutStorageDto.setWarehouseId(WarehouseConstant.SEMI_FINISHED_PRODUCT);
|
|
|
- semiFinishedProductInOutStorageDto.setApplicant(SecurityUtils.getLoginUser().getUser().getNickName());
|
|
|
- semiFinishedProductInOutStorageDto.setRemark("删除订单:" + orderInfo.getCode()
|
|
|
- + (StrUtil.isBlank(orderInfo.getWlnCode()) ? StringPool.EMPTY : "(" + orderInfo.getWlnCode() + ")")
|
|
|
- + " 主材退料入库");
|
|
|
- semiFinishedProductInOutStorageDto.setInOutStorageBomList(semiFinishedProductInOutStorageBomList);
|
|
|
- inOutStorageService.add(semiFinishedProductInOutStorageDto);
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * 包材出库
|
|
|
- */
|
|
|
- private void packagingMaterialOutStorage(List<InOutStorageBom> inOutStorageBomList, Map<Long, BomSpecBo> bomSpecBoMap, OrderInfo orderInfo) {
|
|
|
- List<InOutStorageBom> packagingMaterialInOutStorageBomList = inOutStorageBomList
|
|
|
- .stream()
|
|
|
- .filter(item -> {
|
|
|
- BomSpecBo tempBomSpecBo = bomSpecBoMap.get(item.getBomSpecId());
|
|
|
- if (tempBomSpecBo == null) {
|
|
|
- return true;
|
|
|
- }
|
|
|
- return ObjectUtil.notEqual(tempBomSpecBo.getClassifyParentId(), 1L);
|
|
|
- })
|
|
|
- .collect(Collectors.toList());
|
|
|
- InOutStorageDto packagingMaterialInOutStorageDto = new InOutStorageDto();
|
|
|
- packagingMaterialInOutStorageDto.setType(InOutTypeEnum.IN.getKey());
|
|
|
- packagingMaterialInOutStorageDto.setDetailType(InDetailTypeEnum.RETURN_GOODS.getKey());
|
|
|
- packagingMaterialInOutStorageDto.setWarehouseId(WarehouseConstant.PACKAGING_MATERIAL);
|
|
|
- packagingMaterialInOutStorageDto.setApplicant(SecurityUtils.getLoginUser().getUser().getNickName());
|
|
|
- packagingMaterialInOutStorageDto.setRemark("删除订单:" + orderInfo.getCode()
|
|
|
- + (StrUtil.isBlank(orderInfo.getWlnCode()) ? StringPool.EMPTY : "(" + orderInfo.getWlnCode() + ")")
|
|
|
- + " 包材退料入库");
|
|
|
- packagingMaterialInOutStorageDto.setInOutStorageBomList(packagingMaterialInOutStorageBomList);
|
|
|
- inOutStorageService.add(packagingMaterialInOutStorageDto);
|
|
|
- }
|
|
|
-
|
|
|
private void sendMq(OrderInfoDto dto) {
|
|
|
List<OrderSkuDto> orderSkuList = dto.getOrderSkuList();
|
|
|
for (OrderSkuDto orderSkuDto : orderSkuList) {
|
|
@@ -1095,4 +786,69 @@ public class OrderInfoServiceImpl extends ServiceImpl<OrderInfoMapper, OrderInfo
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 获取订单sku列表
|
|
|
+ */
|
|
|
+ private List<OrderSku> getOrderSkuList(OrderInfoDto dto) {
|
|
|
+ return dto.getOrderSkuList().stream()
|
|
|
+ .peek(item -> item.setOrderId(dto.getId()))
|
|
|
+ .map(item -> (OrderSku) item)
|
|
|
+ .collect(Collectors.toList());
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 获取订单sku包材列表
|
|
|
+ */
|
|
|
+ private List<OrderSkuBom> getOrderSkuBomList(OrderInfoDto dto) {
|
|
|
+ return dto.getOrderSkuList().stream()
|
|
|
+ .flatMap(orderSku -> orderSku.getOrderSkuBomList().stream()
|
|
|
+ .peek(orderSkuBom -> orderSkuBom.setOrderId(dto.getId()))
|
|
|
+ .peek(orderSkuBom -> orderSkuBom.setOrderSkuId(orderSku.getId())))
|
|
|
+ .collect(Collectors.toList());
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 获取订单包装列表
|
|
|
+ */
|
|
|
+ private List<OrderPackageBom> getOrderPackageBomList(OrderInfoDto dto) {
|
|
|
+ if (ObjectUtil.isEmpty(dto.getOrderPackageBomList())) {
|
|
|
+ return Collections.emptyList();
|
|
|
+ }
|
|
|
+ return dto.getOrderPackageBomList().stream()
|
|
|
+ .peek(item -> item.setOrderId(dto.getId()))
|
|
|
+ .map(item -> (OrderPackageBom) item)
|
|
|
+ .collect(Collectors.toList());
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 获取订单sku生产成本列表
|
|
|
+ */
|
|
|
+ private List<OrderSkuProductionCost> getOrderSkuProductionCostList(List<OrderSku> orderSkuList, List<OrderSkuBom> orderSkuBomList) {
|
|
|
+ Map<Long, List<OrderSkuBom>> orderSkuBomMap = orderSkuBomList.stream().collect(Collectors.groupingBy(OrderSkuBom::getOrderSkuId));
|
|
|
+ return orderSkuList.stream().map(item -> {
|
|
|
+ OrderSkuProductionCost orderSkuProductionCost = new OrderSkuProductionCost();
|
|
|
+ orderSkuProductionCost.setOrderId(item.getOrderId());
|
|
|
+ orderSkuProductionCost.setOrderSkuId(item.getId());
|
|
|
+ // 材料成本
|
|
|
+ orderSkuProductionCost.setMaterialCost(item.getUnitPrice().multiply(item.getQuantity()));
|
|
|
+ // 辅料成本暂时没有默认为零
|
|
|
+ orderSkuProductionCost.setAuxiliaryMaterialCost(BigDecimal.ZERO);
|
|
|
+ // 产品包材成本
|
|
|
+ List<OrderSkuBom> bomList = orderSkuBomMap.getOrDefault(item.getId(), new ArrayList<>());
|
|
|
+ BigDecimal productPackagingMaterialCost = bomList.stream()
|
|
|
+ .map(orderSkuBom -> orderSkuBom.getQuantity()
|
|
|
+ .multiply(orderSkuBom.getUnitPrice())
|
|
|
+ .multiply(item.getQuantity()))
|
|
|
+ .reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
+ orderSkuProductionCost.setProductPackagingMaterialCost(productPackagingMaterialCost);
|
|
|
+ // 物流包材成本
|
|
|
+ orderSkuProductionCost.setLogisticsPackagingMaterialCost(item.getDeliveryMaterialsFee().multiply(item.getQuantity()));
|
|
|
+ orderSkuProductionCost.setTotalAmount(orderSkuProductionCost.getMaterialCost()
|
|
|
+ .add(orderSkuProductionCost.getAuxiliaryMaterialCost())
|
|
|
+ .add(orderSkuProductionCost.getProductPackagingMaterialCost())
|
|
|
+ .add(orderSkuProductionCost.getLogisticsPackagingMaterialCost()));
|
|
|
+ return orderSkuProductionCost;
|
|
|
+ }).collect(Collectors.toList());
|
|
|
+ }
|
|
|
+
|
|
|
}
|